@Override public Condition copy() { WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy(); accept(v); return v.getCondition(); }
@Override public boolean visitMiddle(Select o) { WikittyQueryFunction f = null; if (o.getFunction() != null) { List<WikittyQueryFunction> fs = getAndClearFunction(1); // normalement il ne devrait rester qu'une element dans functions et on // vient de le prendre, si ce n'est pas le cas, c'est un probleme if (!functions.isEmpty()) { throw new IllegalStateException("function list must be empty here"); } f = fs.get(0); } getQueryMaker().select(f); getQueryMaker().where(); return true; }
public WikittyQuery copy() { WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy(); accept(v); return v.getQuery(); }
@Override public boolean visitEnter(Keyword o) { getQueryMaker().keyword(); return true; }
@Override public boolean visitEnter(WikittyQuery o) { WikittyQuery q = getQuery(); q.setFacetExtension(q.isFacetExtension()); q.setFacetField(new ArrayList<Element>(o.getFacetField())); q.setFacetLimit(o.getFacetLimit()); q.setFacetMinCount(o.getFacetMinCount()); q.setOffset(o.getOffset()); q.setLimit(o.getLimit()); q.setFacetSort(o.getFacetSort()); q.setName(o.getName()); q.setSortAscending(new ArrayList<Element>(o.getSortAscending())); q.setSortDescending(new ArrayList<Element>(o.getSortDescending())); q.setWikittyFieldSearchDepth(o.getWikittyFieldSearchDepth()); for (FacetQuery c : o.getFacetQuery()) { WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy(); c.getCondition().accept(v); Condition condition = v.getCondition(); q.addFacetQuery(c.getName(), condition); } return true; }
@Override public void visitLeave(WikittyQueryFunction function, boolean enterOrMiddleResult) { List<WikittyQueryFunction> args = getAndClearFunction(function.getArgs().size()); WikittyQueryFunction f = WikittyQueryFunction.create(function.getMethodName(), function.getName(), args); addFunction(f); }
@Override public void visit(FunctionValue function) { addFunction(new FunctionValue(function.getName(), function.getValue())); }
@Override public void visit(ConditionValueString o) { // not copy o, beacause o is immutable getQueryMaker().value(o); }
@Override public boolean visitEnter(Not o) { getQueryMaker().not(); return true; }
@Override public void visitLeave(ContainsOne o, boolean enterOrMiddleResult) { getQueryMaker().close(); }
@Override public void visit(False o) { getQueryMaker().rFalse(); }
@Override public boolean visitEnter(And o) { getQueryMaker().and(); return true; }
@Override public boolean visitEnter(Or o) { getQueryMaker().or(); return true; }
public Condition getCondition() { Condition result = getQueryMaker().getCondition(); return result; }
@Override public void visitLeave(And o, boolean enterResult) { getQueryMaker().close(); }
public WikittyQuery getQuery() { WikittyQuery result = getQueryMaker().getQuery(); return result; }
@Override public void visitLeave(Or o, boolean enterResult) { getQueryMaker().close(); }
@Override public void visitLeave(ContainsAll o, boolean enterOrMiddleResult) { getQueryMaker().close(); }
@Override public void visit(True o) { getQueryMaker().rTrue(); }
@Override public boolean visitEnter(ContainsOne o) { getQueryMaker().containsOne(o.getElement()); return true; }