protected OperationImpl(Class<? extends T> type, Operator operator, ImmutableList<Expression<?>> args) { super(type); Class<?> wrapped = Primitives.wrap(type); Preconditions.checkArgument(operator.getType().isAssignableFrom(wrapped), operator.name()); this.operator = operator; this.args = args; }
@Override public Integer visit(Operation<?> expr, Void context) { int result = expr.getOperator().name().hashCode(); return 31 * result + expr.getArgs().hashCode(); }
@Override public String visit(Operation<?> o, Templates templates) { final Template template = templates.getTemplate(o.getOperator()); if (template != null) { final int precedence = templates.getPrecedence(o.getOperator()); final StringBuilder builder = new StringBuilder(); for (Template.Element element : template.getElements()) { final Object rv = element.convert(o.getArgs()); if (rv instanceof Expression) { if (precedence > -1 && rv instanceof Operation) { if (precedence < templates.getPrecedence(((Operation<?>) rv).getOperator())) { builder.append("("); builder.append(((Expression<?>) rv).accept(this, templates)); builder.append(")"); continue; } } builder.append(((Expression<?>) rv).accept(this, templates)); } else { builder.append(rv.toString()); } } return builder.toString(); } else { return "unknown operation with operator " + o.getOperator().name() + " and args " + o.getArgs(); } }
protected int getPrecedence(Operator... ops) { int precedence = templates.getPrecedence(ops[0]); for (int i = 1; i < ops.length; i++) { assertEquals(ops[i].name(), precedence, templates.getPrecedence(ops[i])); } return precedence; }
@Override public Integer visit(Operation<?> expr, Void context) { int result = expr.getOperator().name().hashCode(); return 31 * result + expr.getArgs().hashCode(); }
protected OperationImpl(Class<? extends T> type, Operator operator, ImmutableList<Expression<?>> args) { super(type); Class<?> wrapped = Primitives.wrap(type); Preconditions.checkArgument(operator.getType().isAssignableFrom(wrapped), operator.name()); this.operator = operator; this.args = args; }
@Override public String visit(Operation<?> o, Templates templates) { final Template template = templates.getTemplate(o.getOperator()); if (template != null) { final int precedence = templates.getPrecedence(o.getOperator()); final StringBuilder builder = new StringBuilder(); for (Template.Element element : template.getElements()) { final Object rv = element.convert(o.getArgs()); if (rv instanceof Expression) { if (precedence > -1 && rv instanceof Operation) { if (precedence < templates.getPrecedence(((Operation<?>) rv).getOperator())) { builder.append("("); builder.append(((Expression<?>) rv).accept(this, templates)); builder.append(")"); continue; } } builder.append(((Expression<?>) rv).accept(this, templates)); } else { builder.append(rv.toString()); } } return builder.toString(); } else { return "unknown operation with operator " + o.getOperator().name() + " and args " + o.getArgs(); } }
protected int getPrecedence(Operator... ops) { int precedence = JPQLTemplates.DEFAULT.getPrecedence(ops[0]); for (int i = 1; i < ops.length; i++) { assertEquals(ops[i].name(), precedence, JPQLTemplates.DEFAULT.getPrecedence(ops[i])); } return precedence; }
protected int getPrecedence(Operator... ops) { int precedence = templates.getPrecedence(ops[0]); for (int i = 1; i < ops.length; i++) { assertEquals(ops[i].name(), precedence, templates.getPrecedence(ops[i])); } return precedence; }
String id = operation.getOperator().name(); if ( id.equals( Ops.AND.name() ) )