private StringBuilder appendSingleCondition(StringBuilder sb, AttributeCondition attributeCondition, Object argument, String op, String negativeOp) { appendAttributePath(sb, attributeCondition); sb.append(' '); sb.append(attributeCondition.isNegated() ? negativeOp : op); sb.append(' '); appendArgument(sb, argument); return sb; }
protected String renderDate(Date argument) { return getDateFormatter().format(argument); }
@Override public String visit(OrCondition booleanCondition) { return generateBooleanCondition(booleanCondition, "OR"); }
appendAttributePath(sb, (PathExpression) argument); return; sb.append(renderEnum((Enum) argument)); return; sb.append(", "); appendArgument(sb, o); sb.append(", "); appendArgument(sb, o); sb.append('\'').append(renderDate((Date) argument)).append('\''); return; sb.append('\'').append(renderInstant((Instant) argument)).append('\''); return;
@Override public String visit(EqOperator operator) { return appendSingleCondition(new StringBuilder(), operator.getAttributeCondition(), operator.getArgument(), "=", "!=").toString(); }
if (!range.isIncludeLower() || !range.isIncludeUpper()) { boolean wrap = parentIsNotOfClass(operator.getAttributeCondition(), operator.getAttributeCondition().isNegated() ? OrCondition.class : AndCondition.class); if (wrap) { sb.append('('); appendAttributePath(sb, operator.getAttributeCondition()); sb.append(operator.getAttributeCondition().isNegated() ? (range.isIncludeLower() ? " < " : " <= ") : (range.isIncludeLower() ? " >= " : " > ")); appendArgument(sb, range.getFrom()); sb.append(operator.getAttributeCondition().isNegated() ? " OR " : " AND "); appendAttributePath(sb, operator.getAttributeCondition()); sb.append(operator.getAttributeCondition().isNegated() ? (range.isIncludeUpper() ? " > " : " >= ") : (range.isIncludeUpper() ? " <= " : " < ")); appendArgument(sb, range.getTo()); if (wrap) { sb.append(')'); sb.append("NOT "); appendAttributePath(sb, operator.getAttributeCondition()); sb.append(" BETWEEN "); appendArgument(sb, range.getFrom()); sb.append(" AND "); appendArgument(sb, range.getTo());
@Override public Query build() { QueryStringCreator generator = new QueryStringCreator(); String queryString = accept(generator); if (trace) { log.tracef("Query string : %s", queryString); } return new DelegatingQuery<>(queryEngine, queryFactory, queryString, generator.getNamedParameters(), getProjectionPaths(), startOffset, maxResults); } }
private void appendAttributePath(StringBuilder sb, AttributeCondition attributeCondition) { appendAttributePath(sb, attributeCondition.getExpression()); }
private String generateMultipleBooleanCondition(OperatorAndArgument operator, String booleanOperator, Class<? extends BooleanCondition> expectedParentClass) { Object argument = operator.getArgument(); Collection values; if (argument instanceof Collection) { values = (Collection) argument; } else if (argument instanceof Object[]) { values = Arrays.asList((Object[]) argument); } else { throw log.expectingCollectionOrArray(); } StringBuilder sb = new StringBuilder(); boolean wrap = parentIsNotOfClass(operator.getAttributeCondition(), expectedParentClass); if (wrap) { sb.append('('); } boolean isFirst = true; for (Object value : values) { if (isFirst) { isFirst = false; } else { sb.append(' ').append(booleanOperator).append(' '); } appendSingleCondition(sb, operator.getAttributeCondition(), value, "=", "!="); } if (wrap) { sb.append(')'); } return sb.toString(); }
appendAttributePath(sb, (PathExpression) argument); return; sb.append(renderEnum((Enum) argument)); return; sb.append(", "); appendArgument(sb, o); sb.append(", "); appendArgument(sb, o); sb.append('\'').append(renderDate((Date) argument)).append('\''); return; sb.append('\'').append(renderInstant((Instant) argument)).append('\''); return;
@Override public String visit(GteOperator operator) { return appendSingleCondition(new StringBuilder(), operator.getAttributeCondition(), operator.getArgument(), ">=", "<").toString(); }
@Override public Query build() { QueryStringCreator generator = new QueryStringCreator(); String queryString = accept(generator); if (trace) { log.tracef("Query string : %s", queryString); } return new DelegatingQuery<>(queryEngine, queryFactory, queryString, generator.getNamedParameters(), getProjectionPaths(), startOffset, maxResults); } }
private void appendAttributePath(StringBuilder sb, AttributeCondition attributeCondition) { appendAttributePath(sb, attributeCondition.getExpression()); }
private StringBuilder appendSingleCondition(StringBuilder sb, AttributeCondition attributeCondition, Object argument, String op, String negativeOp) { appendAttributePath(sb, attributeCondition); sb.append(' '); sb.append(attributeCondition.isNegated() ? negativeOp : op); sb.append(' '); appendArgument(sb, argument); return sb; }
@Override public String visit(LtOperator operator) { return appendSingleCondition(new StringBuilder(), operator.getAttributeCondition(), operator.getArgument(), "<", ">=").toString(); }
@Override public String visit(IsNullOperator operator) { StringBuilder sb = new StringBuilder(); appendAttributePath(sb, operator.getAttributeCondition()); sb.append(" IS "); if (operator.getAttributeCondition().isNegated()) { sb.append("NOT "); } sb.append("NULL"); return sb.toString(); }
protected String renderDate(Date argument) { return getDateFormatter().format(argument); }
@Override public String visit(AndCondition booleanCondition) { return generateBooleanCondition(booleanCondition, "AND"); }
@Override public String visit(LikeOperator operator) { StringBuilder sb = new StringBuilder(); appendAttributePath(sb, operator.getAttributeCondition()); sb.append(' '); if (operator.getAttributeCondition().isNegated()) { sb.append("NOT "); } sb.append("LIKE "); appendArgument(sb, operator.getArgument()); return sb.toString(); }
@Override public String visit(EqOperator operator) { return appendSingleCondition(new StringBuilder(), operator.getAttributeCondition(), operator.getArgument(), "=", "!=").toString(); }