/** Create an OpExtend or add to an existing one. * This operation collapses what would otherwise be stacks * of OpExtend. */ static public Op extend(Op op, VarExprList exprs) { if ( !(op instanceof OpExtend) ) return create(op, exprs) ; OpExtend opExtend = (OpExtend)op ; for (Var var : exprs.getVars()) { if ( opExtend.assignments.contains(var) ) return create(op, exprs) ; } opExtend.assignments.addAll(exprs) ; return opExtend ; }
/** Create an v or add to an existing one. * This operation collapses what would otherwise be stacks * of OpAssign. */ static public Op assign(Op op, VarExprList exprs) { if ( !(op instanceof OpAssign) ) return create(op, exprs) ; OpAssign opAssign = (OpAssign)op ; for (Var var : exprs.getVars()) { if ( opAssign.assignments.contains(var) ) return create(op, exprs) ; } opAssign.assignments.addAll(exprs) ; return opAssign ; }
/** * Copy all the modifications from the Solution Modifier argument * @param solutionModifier The solution modifier to copy from. */ public void addAll(SolutionModifierHandler solutionModifier) { List<SortCondition> lst = solutionModifier.query.getOrderBy(); if (lst != null) { for (SortCondition sc : lst) { query.addOrderBy(sc); } } query.getGroupBy().addAll(solutionModifier.query.getGroupBy()); query.getHavingExprs().addAll(solutionModifier.query.getHavingExprs()); query.setLimit(solutionModifier.query.getLimit()); query.setOffset(solutionModifier.query.getOffset()); }
@Override public void setVars(Map<Var, Node> values) { if (values.isEmpty()) { return; } ExprRewriter exprRewriter = new ExprRewriter(values); ExprList having = exprRewriter.rewrite(new ExprList(query .getHavingExprs())); List<SortCondition> orderBy = exprRewriter .rewriteSortConditionList(query.getOrderBy()); VarExprList groupBy = exprRewriter.rewrite(query.getGroupBy()); query.getHavingExprs().clear(); query.getHavingExprs().addAll(having.getList()); if (orderBy != null) { if (query.getOrderBy() == null) { for (SortCondition sc : orderBy) { query.addOrderBy(sc); } } else { query.getOrderBy().clear(); query.getOrderBy().addAll(orderBy); } } query.getGroupBy().clear(); query.getGroupBy().addAll(groupBy); }
/** * Copy all the modifications from the Solution Modifier argument * @param solutionModifier The solution modifier to copy from. */ public void addAll(SolutionModifierHandler solutionModifier) { List<SortCondition> lst = solutionModifier.query.getOrderBy(); if (lst != null) { for (SortCondition sc : lst) { query.addOrderBy(sc); } } query.getGroupBy().addAll(solutionModifier.query.getGroupBy()); query.getHavingExprs().addAll(solutionModifier.query.getHavingExprs()); query.setLimit(solutionModifier.query.getLimit()); query.setOffset(solutionModifier.query.getOffset()); }
@Override public void setVars(Map<Var, Node> values) { if (values.isEmpty()) { return; } ExprRewriter exprRewriter = new ExprRewriter(values); ExprList having = exprRewriter.rewrite(new ExprList(query .getHavingExprs())); List<SortCondition> orderBy = exprRewriter .rewriteSortConditionList(query.getOrderBy()); VarExprList groupBy = exprRewriter.rewrite(query.getGroupBy()); query.getHavingExprs().clear(); query.getHavingExprs().addAll(having.getList()); if (orderBy != null) { if (query.getOrderBy() == null) { for (SortCondition sc : orderBy) { query.addOrderBy(sc); } } else { query.getOrderBy().clear(); query.getOrderBy().addAll(orderBy); } } query.getGroupBy().clear(); query.getGroupBy().addAll(groupBy); }
query.getGroupBy().addAll(level.opGroup.getGroupVars()) ; level.opGroup.getAggregators().forEach(eAgg -> { ExprVar v = eAgg.getAggVar() ;