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();
}
}