private Expression readFactor() { Expression r = readTerm(); while (true) { if (readIf("*")) { r = new Operation(Operation.MULTIPLY, r, readTerm()); } else if (readIf("/")) { r = new Operation(Operation.DIVIDE, r, readTerm()); } else if (readIf("%")) { r = new Operation(Operation.MODULUS, r, readTerm()); } else { return r; } } }
private Expression readConcat() { Expression r = readSum(); while (true) { if (readIf("||")) { r = new Operation(Operation.CONCAT, r, readSum()); } else if (readIf("~")) { if (readIf("*")) { Function function = Function.getFunction(database, "CAST"); function.setDataType(new Column("X", Value.STRING_IGNORECASE)); function.setParameter(0, r); r = function; } r = new CompareLike(database, r, readSum(), null, true); } else if (readIf("!~")) { if (readIf("*")) { Function function = Function.getFunction(database, "CAST"); function.setDataType(new Column("X", Value.STRING_IGNORECASE)); function.setParameter(0, r); r = function; } r = new ConditionNot(new CompareLike(database, r, readSum(), null, true)); } else { return r; } } }
left = new Operation(Operation.MULTIPLY, ValueExpression.get(ValueInt .get(60 * 60 * 24)), left); f.setParameter(1, left); right = new Operation(NEGATE, right, null); right = right.optimize(session); f.setParameter(1, right); right = new Operation(Operation.MULTIPLY, ValueExpression.get(ValueInt .get(60 * 60 * 24)), right); right = new Operation(NEGATE, right, null); right = right.optimize(session); f.setParameter(1, right);