/** * Returns a predicate that evaluates to {@code true} if either of its components evaluates to * {@code true}. * * <p>The components are evaluated in order, and evaluation will be "short-circuited" as soon as * a true predicate is found. */ public static Filter or(Filter op1, Filter op2) { List<Filter> children = new ArrayList<Filter>(); if (op1 instanceof Or) { children.addAll(((Or) op1).getChildren()); } else { children.add(op1); } if (op2 instanceof Or) { children.addAll(((Or) op2).getChildren()); } else { children.add(op2); } return factory.or(children); }
public Object visit(Or filter, Object data) { if (filter.getChildren() != null) { for (Filter child : filter.getChildren()) { child.accept(this, data); if (found) break; } } return found; }
public Object visit(Or filter, Object data) { if (data == null) return null; if (filter.getChildren() != null) { for (Filter child : filter.getChildren()) { data = child.accept(this, data); if (data == null) return null; } } return data; }
@Override protected void addFiltersToResults(List<Filter> results, Filter filter) { if (filter instanceof org.opengis.filter.Or) { results.addAll(((org.opengis.filter.Or) filter).getChildren()); } else { results.add(filter); } } }
public Object visit(Or filter, Object data) { List<Filter> childList = filter.getChildren(); if (childList != null) { for (Filter child : childList) { if (child == null) continue; data = child.accept(this, data); } } return data; }
public Object visit(Or filter, Object data) { List<Filter> childList = filter.getChildren(); if (childList != null) { for (Filter child : childList) { if (child == null) continue; children.add(child); data = child.accept(this, data); } } return data; }
@Override public Object visit(Or filter, Object extraData) { List<Filter> children = filter.getChildren(); for (Filter child : children) { child.accept(this, extraData); } return extraData; }
/** Check if this is an encoding of ECQL IN */ private boolean isInFilter(Or filter) { if (filter.getChildren() == null) { return false; } Expression left = null; for (Filter child : filter.getChildren()) { if (child instanceof PropertyIsEqualTo) { PropertyIsEqualTo equal = (PropertyIsEqualTo) child; if (left == null) { left = equal.getExpression1(); } else if (!left.equals(equal.getExpression1())) { return false; // not IN } } else { return false; // not IN } } return true; }
public Object visit(Or filter, Object extraData) { List<Filter> children = filter.getChildren(); List<Filter> newChildren = new ArrayList<Filter>(); for (Iterator<Filter> iter = children.iterator(); iter.hasNext(); ) { Filter child = iter.next(); if (child != null) { Filter newChild = (Filter) child.accept(this, extraData); newChildren.add(newChild); } } return getFactory(extraData).or(newChildren); }
public Object visit(Or filter, Object data) { if (found(data)) { return data; // short cut } if (filter.getChildren() != null) { for (Filter child : filter.getChildren()) { data = child.accept(this, data); } if (found(data)) { return data; } } return data; }
private Object buildIN(Or filter, Object extraData) { StringBuilder output = FilterToTextUtil.asStringBuilder(extraData); List<Filter> children = filter.getChildren(); PropertyIsEqualTo first = (PropertyIsEqualTo) filter.getChildren().get(0); Expression left = first.getExpression1(); left.accept(expressionVisitor, output); output.append(" IN ("); for (Iterator<Filter> i = children.iterator(); i.hasNext(); ) { PropertyIsEqualTo child = (PropertyIsEqualTo) i.next(); Expression right = child.getExpression2(); right.accept(expressionVisitor, output); if (i.hasNext()) { output.append(","); } } output.append(")"); return output; }
private Filter translateOr(Or filter) throws IllegalFilterException { if (!(filter instanceof Or)) { return filter; } // a|b == ~~(a|b) negative introduction // ~(a|b) == (~a + ~b) modus ponens // ~~(a|b) == ~(~a + ~b) substitution // a|b == ~(~a + ~b) negative simpilification Iterator i = filter.getChildren().iterator(); List translated = new ArrayList(); while (i.hasNext()) { Filter f = (Filter) i.next(); if (f instanceof Not) { // simplify it Not logic = (Not) f; Filter next = logic.getFilter(); translated.add(next); } else { translated.add(ff.not(f)); } } Filter and = ff.and(translated); return ff.not(and); }
private Filter translateOr(Or filter) throws IllegalFilterException { if (!(filter instanceof Or)) { return filter; } // a|b == ~~(a|b) negative introduction // ~(a|b) == (~a + ~b) modus ponens // ~~(a|b) == ~(~a + ~b) substitution // a|b == ~(~a + ~b) negative simpilification Iterator i = filter.getChildren().iterator(); List translated = new ArrayList(); while (i.hasNext()) { Filter f = (Filter) i.next(); if (f instanceof Not) { // simplify it Not logic = (Not) f; Filter next = logic.getFilter(); translated.add(next); } else { translated.add(ff.not(f)); } } Filter and = ff.and(translated); return ff.not(and); }
@Override public Object visit(Or filter, Object data) { Envelope mixed = new Envelope(); for (Filter f : filter.getChildren()) { Envelope env = (Envelope) f.accept(this, data); mixed.expandToInclude(env); } return mixed; }
public Object visit(Or filter, Object extraData) { start("Or"); for (org.opengis.filter.Filter child : filter.getChildren()) { child.accept(this, extraData); } end("Or"); return extraData; }
public Object visit(Or filter, Object extraData) { ScalarCapabilities scalar = capabilities.getScalarCapabilities(); if (scalar == null || !scalar.hasLogicalOperators()) { return false; } List<Filter> children = filter.getChildren(); if (children == null) return false; for (Filter child : children) { boolean yes = (Boolean) child.accept(this, null); if (!yes) return false; } return true; }
@Override public Object visit(Or filter, Object extraData) { BasicDBObject output = asDBObject(extraData); List<Filter> children = filter.getChildren(); BasicDBList orList = new BasicDBList(); if (children != null) { for (Filter child : children) { BasicDBObject item = (BasicDBObject) child.accept(this, null); orList.add(item); } output.put("$or", orList); } return output; }
public void testOrParse() throws Exception { FilterMockData.or(document, document); Or or = (Or) parse(); assertEquals(2, or.getChildren().size()); }
public void testOrParse() throws Exception { FilterMockData.or(document, document); Or or = (Or) parse(); assertEquals(2, or.getChildren().size()); }
public void testCoalesheNestedOr() { Filter eq = ff.equal(ff.property("A"), ff.literal("3"), true); Filter gt = ff.greater(ff.property("b"), ff.literal("3")); Filter lt = ff.less(ff.property("c"), ff.literal("5")); Or nested = ff.or(Arrays.asList(ff.or(Arrays.asList(eq, gt)), lt)); Or simplified = (Or) nested.accept(simpleVisitor, null); assertEquals(3, simplified.getChildren().size()); assertEquals(ff.or(Arrays.asList(eq, gt, lt)), simplified); }