@Override public Builder between(String column, Object lower, Object upper) { ExpressionTree parent = currentTree.getFirst(); List<Object> argList = new ArrayList<Object>(); argList.add(boxLiteral(lower)); argList.add(boxLiteral(upper)); PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.BETWEEN, getType(argList.get(0)), column, null, argList); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }
@Override public Builder in(String column, Object... literal) { ExpressionTree parent = currentTree.getFirst(); if (literal.length == 0) { throw new IllegalArgumentException("Can't create in expression with " + "no arguments"); } List<Object> argList = new ArrayList<Object>(); for(Object lit: literal){ argList.add(boxLiteral(lit)); } PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.IN, getType(argList.get(0)), column, null, argList); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }
@Override public Builder nullSafeEquals(String column, Object literal) { ExpressionTree parent = currentTree.getFirst(); Object box = boxLiteral(literal); PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.NULL_SAFE_EQUALS, getType(box), column, box, null); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }
@Override public Builder lessThan(String column, Object literal) { ExpressionTree parent = currentTree.getFirst(); Object box = boxLiteral(literal); PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.LESS_THAN, getType(box), column, box, null); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }
@Override public Builder equals(String column, Object literal) { ExpressionTree parent = currentTree.getFirst(); Object box = boxLiteral(literal); PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.EQUALS, getType(box), column, box, null); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }
@Override public Builder lessThanEquals(String column, Object literal) { ExpressionTree parent = currentTree.getFirst(); Object box = boxLiteral(literal); PredicateLeaf leaf = new PredicateLeafImpl(PredicateLeaf.Operator.LESS_THAN_EQUALS, getType(box), column, box, null); leaves.add(leaf); parent.children.add(new ExpressionTree(leaves.size() - 1)); return this; }