private String filterStringFunction()

in persistence-commons/persistence-commons-jpa-base/src/main/java/org/kie/kogito/persistence/postgresql/PostgresQuery.java [217:287]


    private String filterStringFunction(AttributeFilter<?> filter) {
        JsonField field = fields.get(filter.getAttribute());
        switch (filter.getCondition()) {
            case CONTAINS:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("= %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case CONTAINS_ALL:
                return (String) ((List) filter.getValue())
                        .stream()
                        .map(o -> cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                                .append(format("= %s", getValueForQueryString(o))))
                        .collect(joining(AND));
            case CONTAINS_ANY:
                return (String) ((List) filter.getValue())
                        .stream()
                        .map(o -> cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                                .append(format("= %s", getValueForQueryString(o))))
                        .collect(joining(OR));
            case LIKE:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("LIKE %s", getValueForQueryString(filter.getValue())))
                        .toString()
                        .replaceAll("\\*", "%");
            case EQUAL:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("= %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case IN:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("IN (%s)", ((List) filter.getValue()).stream().map(PostgresQuery::getValueForQueryString).collect(joining(", "))))
                        .toString();
            case IS_NULL:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append("IS NULL")
                        .toString();
            case NOT_NULL:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append("IS NOT NULL")
                        .toString();
            case BETWEEN:
                List<Object> value = (List<Object>) filter.getValue();
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("BETWEEN %s AND %s", getValueForQueryString(value.get(0)), getValueForQueryString(value.get(1))))
                        .toString();
            case GT:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("> %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case GTE:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format(">= %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case LT:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("< %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case LTE:
                return cast(field, format(ATTRIBUTE_ACCESSOR, filter.getAttribute()))
                        .append(format("<= %s", getValueForQueryString(filter.getValue())))
                        .toString();
            case OR:
                return getRecursiveString(filter, OR);
            case AND:
                return getRecursiveString(filter, AND);
            case NOT:
                return format("not %s", filterStringFunction((AttributeFilter<?>) filter.getValue()));
            default:
                return null;
        }
    }