@Override public Expression visit(ArithmeticExpression expression) { Expression newLeft = expression.getLeft().accept(this); Expression newRight = expression.getRight().accept(this); if (newLeft != expression.getLeft() || newRight != expression.getRight()) { return new ArithmeticExpression(newLeft, newRight, expression.getOp()); } return expression; }
public ArithmeticExpression(Expression left, Expression right, ArithmeticOperator op) { super(resolveType(left, right)); this.left = left; this.right = right; this.op = op; }
@Override public void visit(ArithmeticExpression expression) { ParameterRenderingMode oldParameterRenderingMode = setParameterRenderingMode(ParameterRenderingMode.PLACEHOLDER); ArithmeticOperator op = expression.getOp(); if (expression.getLeft() instanceof ArithmeticExpression) { ArithmeticExpression left = (ArithmeticExpression) expression.getLeft(); ArithmeticOperator leftOp = left.getOp(); if (leftOp == ArithmeticOperator.DIVISION // (1 / 3) / 4 expression.getLeft().accept(this); sb.append(")"); } else { expression.getLeft().accept(this); expression.getLeft().accept(this); sb.append(" ").append(expression.getOp().getSymbol()).append(" "); if (expression.getRight() instanceof ArithmeticExpression) { ArithmeticExpression right = (ArithmeticExpression) expression.getRight(); ArithmeticOperator rightOp = right.getOp(); expression.getRight().accept(this); sb.append(")"); } else { expression.getRight().accept(this); expression.getRight().accept(this);
@Override public Expression get() { return target.getRight(); }
@Override public Expression get() { return target.getLeft(); }
@Override public Expression clone(boolean resolved) { return new ArithmeticExpression(left.clone(resolved), right.clone(resolved), op); }
@Override public void set(Expression expression) { target.setRight(expression); }
@Override public void set(Expression expression) { target.setLeft(expression); }
@Override public void visit(ArithmeticExpression expression) { if (expression.getNumericType() != null) { currentPosition.setCurrentType(metamodel.type(expression.getNumericType().getJavaType())); } }
@Override public void visit(ArithmeticExpression expression) { ParameterRenderingMode oldParameterRenderingMode = setParameterRenderingMode(ParameterRenderingMode.PLACEHOLDER); ArithmeticOperator op = expression.getOp(); if (expression.getLeft() instanceof ArithmeticExpression) { ArithmeticExpression left = (ArithmeticExpression) expression.getLeft(); ArithmeticOperator leftOp = left.getOp(); if (leftOp == ArithmeticOperator.DIVISION // (1 / 3) / 4 expression.getLeft().accept(this); sb.append(")"); } else { expression.getLeft().accept(this); expression.getLeft().accept(this); sb.append(" ").append(expression.getOp().getSymbol()).append(" "); if (expression.getRight() instanceof ArithmeticExpression) { ArithmeticExpression right = (ArithmeticExpression) expression.getRight(); ArithmeticOperator rightOp = right.getOp(); expression.getRight().accept(this); sb.append(")"); } else { expression.getRight().accept(this); expression.getRight().accept(this);
@Override public Expression get() { return target.getRight(); }
@Override public Expression get() { return target.getLeft(); }
@Override public Expression clone(boolean resolved) { return new ArithmeticExpression(left.clone(resolved), right.clone(resolved), op); }
@Override public void set(Expression expression) { target.setRight(expression); }
@Override public void set(Expression expression) { target.setLeft(expression); }