/** * {@inheritDoc} */ @Override public void visit(SubtractionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the subtraction expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the subtraction expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the subtraction expression queryExpression = ExpressionMath.subtract(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(AdditionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the addition expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the addition expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the addition expression queryExpression = ExpressionMath.add(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(DivisionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the division expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the division expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the division expression queryExpression = ExpressionMath.divide(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(DivisionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the division expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the division expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the division expression queryExpression = ExpressionMath.divide(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(MultiplicationExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the multiplication expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the multiplication expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the multiplication expression queryExpression = ExpressionMath.multiply(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(SubtractionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the subtraction expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the subtraction expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the subtraction expression queryExpression = ExpressionMath.subtract(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(AdditionExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the addition expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the addition expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the addition expression queryExpression = ExpressionMath.add(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * {@inheritDoc} */ @Override public void visit(MultiplicationExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Create the left side of the multiplication expression expression.getLeftExpression().accept(this); Expression leftExpression = queryExpression; types.add(type[0]); // Create the right side of the multiplication expression expression.getRightExpression().accept(this); Expression rightExpression = queryExpression; types.add(type[0]); // Now create the multiplication expression queryExpression = ExpressionMath.multiply(leftExpression, rightExpression); // Set the expression type Collections.sort(types, NumericTypeComparator.instance()); type[0] = types.get(0); }
/** * Visits the given {@link ArithmeticExpression} and creates the appropriate {@link org.eclipse. * persistence.expressions.Expression Expression}. * * @param expression The {@link ArithmeticExpression} to visit */ private void visitArithmeticExpression(ArithmeticExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Visit the first expression expression.getLeftExpression().accept(this); if (isNumericType()) { types.add(type); } // Visit the second expression expression.getRightExpression().accept(this); if (isNumericType()) { types.add(type); } if (types.size() == 2) { Collections.sort(types, NumericTypeComparator.instance()); type = types.get(0); } else { type = Object.class; } }
/** * Visits the given {@link ArithmeticExpression} and creates the appropriate {@link org.eclipse. * persistence.expressions.Expression Expression}. * * @param expression The {@link ArithmeticExpression} to visit */ private void visitArithmeticExpression(ArithmeticExpression expression) { List<Class<?>> types = new ArrayList<Class<?>>(2); // Visit the first expression expression.getLeftExpression().accept(this); if (isNumericType()) { types.add(type); } // Visit the second expression expression.getRightExpression().accept(this); if (isNumericType()) { types.add(type); } if (types.size() == 2) { Collections.sort(types, NumericTypeComparator.instance()); type = types.get(0); } else { type = Object.class; } }