in service/src/main/java/org/apache/fineract/cn/reporting/service/spi/CriteriaBuilder.java [50:96]
public static String buildCriteria(final String field, final QueryParameter queryParameter) {
final StringBuilder criteria = new StringBuilder(field);
switch (queryParameter.getOperator()) {
case EQUALS:
criteria.append(" = '");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, queryParameter.getValue()));
criteria.append("'");
break;
case LIKE:
criteria.append(" LIKE '%");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, queryParameter.getValue()));
criteria.append("%'");
break;
case GREATER:
criteria.append(" > '");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, queryParameter.getValue()));
criteria.append("'");
break;
case LESSER:
criteria.append(" < '");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, queryParameter.getValue()));
criteria.append("'");
break;
case IN:
criteria.append(" in (");
final Set<String> strings = StringUtils.commaDelimitedListToSet(queryParameter.getValue());
criteria.append(
strings
.stream()
.map(s -> "'" + CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, s) + "'")
.collect(Collectors.joining(","))
);
criteria.append(")");
break;
case BETWEEN:
final String[] splitString = queryParameter.getValue().split("\\.\\.");
criteria.append(" BETWEEN '");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, splitString[0]));
criteria.append("' AND '");
criteria.append(CriteriaBuilder.ENCODER.encodeForSQL(CriteriaBuilder.MY_SQL_CODEC, splitString[1]));
criteria.append("'");
break;
}
return criteria.toString();
}