Custom Functions for DIH
It is possible to plug in custom functions into DIH. Implement an Evaluator and specify it in the data-config.xml . Following is an example of an evaluator which does a 'toLowerCase' on a String.
<dataConfig> <function name="toLowerCase" class="foo.LowerCaseFunctionEvaluator"/> <document> <entity query="select * from table where name='${dih.functions.toLowerCase(dih.request.user)'"> <!- ......field declarations......-> </entity> </dataConfig>
The implementation of LowerCaseFunctionEvaluator
public class LowerCaseFunctionEvaluator extends Evaluator{ public String evaluate(String expression, Context context) { List l = EvaluatorBag.parseParams(expression, context.getVariableResolver()); if (l.size() != 1) { throw new RuntimeException("'toLowerCase' must have only one parameter "); } return l.get(0).toString().toLowerCase(); } }