public void walkBetween(Operand lvalue, Operand rvalue, boolean positive) { LiteralList list = (LiteralList) rvalue; Literal left = list.get(0); Literal right = list.get(1); if (!positive) { filter.append("(!"); } filter.append("(&"); walkGtEq(lvalue, left); walkLtEq(lvalue, right); filter.append(')'); if (!positive) { filter.append(')'); } }
protected void checkDateLiteralForCast(Operator op, Operand value, String name) { if (op == Operator.BETWEEN || op == Operator.NOTBETWEEN) { LiteralList l = (LiteralList) value; checkDateLiteralForCast(l.get(0), name); checkDateLiteralForCast(l.get(1), name); } else { checkDateLiteralForCast(value, name); } }
protected void checkDateLiteralForCast(Operator op, Operand value, String name) { if (op == Operator.BETWEEN || op == Operator.NOTBETWEEN) { LiteralList l = (LiteralList) value; checkDateLiteralForCast(l.get(0), name); checkDateLiteralForCast(l.get(1), name); } else { checkDateLiteralForCast(value, name); } }
public Object walkBetween(Operand lvalue, Operand rvalue, boolean positive) { LiteralList l = (LiteralList) rvalue; Predicate va = new Predicate(lvalue, Operator.GTEQ, l.get(0)); Predicate vb = new Predicate(lvalue, Operator.LTEQ, l.get(1)); Predicate pred = new Predicate(va, Operator.AND, vb); if (!positive) { pred = new Predicate(pred, Operator.NOT, null); } return walkExpression(pred); }
public Document walkBetween(Operand lvalue, Operand rvalue, boolean positive) { LiteralList l = (LiteralList) rvalue; FieldInfo fieldInfo = walkReference(lvalue); Object left = walkOperand(l.get(0)); Object right = walkOperand(l.get(1)); if (positive) { Document range = new Document(); range.put(QueryOperators.GTE, left); range.put(QueryOperators.LTE, right); return newDocumentWithField(fieldInfo, range); } else { Document a = newDocumentWithField(fieldInfo, new Document(QueryOperators.LT, left)); Document b = newDocumentWithField(fieldInfo, new Document(QueryOperators.GT, right)); return new Document(QueryOperators.OR, Arrays.asList(a, b)); } }