public static String buildCriteria()

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