@Override public SearchArgument build() { if (currentTree.size() != 0) { throw new IllegalArgumentException("Failed to end " + currentTree.size() + " operations."); } ExpressionBuilder internal = new ExpressionBuilder(); ExpressionTree normalized = internal.expression(root, leaves); return new SearchArgumentImpl(normalized, internal.getLeaves()); } }
/** * Builds the expression and leaf list from the original predicate. * @param expression the expression to translate * @return The normalized expression. */ ExpressionTree expression(ExprNodeGenericFuncDesc expression) { List<PredicateLeaf> leafCache = new ArrayList<PredicateLeaf>(); ExpressionTree expr = parse(expression, leafCache); return expression(expr, leafCache); }
SearchArgumentImpl(ExprNodeGenericFuncDesc expr) { if (expr == null) { leaves = new ArrayList<PredicateLeaf>(); expression = null; } else { ExpressionBuilder builder = new ExpressionBuilder(); expression = builder.expression(expr); leaves = builder.getLeaves(); } }