public Op getApplicableViews(OpSequence op, RestrictionManagerImpl restrictions) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); for(Op member : members) { Op newMember = _getApplicableViews(member, restrictions); newMembers.add(newMember); } Op result = OpSequence.create().copy(newMembers); return result; }
public static Op _replace(OpSequence op) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); for(Op member : members) { Op newMember = replace(member); newMembers.add(newMember); } Op result = OpSequence.create().copy(newMembers); return result; }
@Override public void visit(OpSequence opSequence) { List<Op> lst = rewriteOpList(opSequence.getElements()); push(opSequence.copy(lst)); }
@Override public void visit(OpSequence opSequence) { List<Op> lst = rewriteOpList(opSequence.getElements()); push(opSequence.copy(lst)); }
public Op _optimize(OpSequence op, RestrictionManagerImpl cnf) { List<Op> members = op.getElements(); List<Op> newMembers = new ArrayList<Op>(members.size()); Set<Clause> intersection = new HashSet<Clause>(); for(Op member : members) { RestrictionManagerImpl restrictions = filterByVars(cnf, member); Op newMember = optimize(member, restrictions); newMembers.add(newMember); Set<Clause> tmp = Sets.intersection(restrictions.getCnf(), intersection); intersection = new HashSet<Clause>(tmp); } Set<Clause> remaining = Sets.difference(cnf.getCnf(), intersection); Op result = OpSequence.create().copy(newMembers); if(!remaining.isEmpty()) { //result = OpFilter.filter(cnfToExprList(remaining), result); result = OpFilterIndexed.filter(new RestrictionManagerImpl(new NestedNormalForm(remaining)), result); } return result; }