/** * Mark this {@link Criteria} as {@code built}. */ protected void close() { built = !built ? true : built; List<Symbol> expanded = Lists.newArrayList(); expand(symbols, expanded); this.symbols = expanded; }
/** * Expand any sub/grouped Criteria. * * @param symbols * @param expanded */ private void expand(List<Symbol> symbols, List<Symbol> expanded) { for (Symbol symbol : symbols) { if(symbol instanceof Criteria) { expanded.add(ParenthesisSymbol.LEFT); expand(((Criteria) symbol).symbols, expanded); expanded.add(ParenthesisSymbol.RIGHT); } else { expanded.add(symbol); } } }