protected Filter intersection(Filter a, Filter b) { if (a == null) return b; if (b == null) return a; if (a == Filter.INCLUDE && b == Filter.INCLUDE) { return Filter.INCLUDE; } else if (a == Filter.EXCLUDE || b == Filter.EXCLUDE) { return Filter.EXCLUDE; } else { return factory.and(a, b); } }
/** * If a definition query has been configured for the FeatureTypeInfo, makes and return a new * Filter that contains both the query's filter and the layer's definition one, by logic AND'ing * them. * * @param filter Origional user supplied Filter * @return Filter adjusted to the limitations of definitionQuery * @throws DataSourceException If the filter could not meet the limitations of definitionQuery */ protected Filter makeDefinitionFilter(Filter filter) throws DataSourceException { Filter newFilter = filter; try { if (definitionQuery != Filter.INCLUDE) { newFilter = ff.and(definitionQuery, filter); } } catch (Exception ex) { throw new DataSourceException("Can't create the definition filter", ex); } return newFilter; }
public Object visit(And filter, Object arg1) { List list = visitBinaryLogicOp(filter); Filter unrolled = ff.and(list); return unrolled; }
private BinaryLogicOperator createLogicOperator( BinaryLogicOperator originalOperator, List<Filter> filters) { if (originalOperator instanceof Or) { return ff.or(filters); } else { return ff.and(filters); } }
public Object visit(And filter, Object extraData) { List<Filter> newChildren = children(filter, targetFilter, extraData); if (newChildren.isEmpty()) { // every time you remove a filter from an And // filter you get more stuff, so removing the last is ... return Filter.INCLUDE; } else if (newChildren.size() == 1) { return newChildren.get(0); } else { return getFactory(extraData).and(newChildren); } }
public Object visit(And 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).and(newChildren); }
public SimpleFeatureCollection subCollection(Filter filter) { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); Filter subFilter = ff.and(this.filter, filter); return new FilteringSimpleFeatureCollection(delegate, subFilter); }
protected Filter partialIndexedFilter_2idxfilterResults() { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); List<Filter> filters = Arrays.asList( totallyIndexedFilter(), ff.like(ff.property(attLocationName), "*fer*"), totallyIndexedFilter2()); Filter filter = ff.and(filters); return filter; }
private Filter partialIndexedFilter_2idxfilterResults() { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); List<Filter> filters = Arrays.asList( totallyIndexedFilter(), ff.like(ff.property("st:location/st:name"), "*fer*"), totallyIndexedFilter2()); Filter filter = ff.and(filters); return filter; } }
private Filter partialIndexedFilter() { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); Filter filter = ff.and( totallyIndexedFilter(), ff.like(ff.property("st:location/st:name"), "*fer*")); return filter; }
private Filter partialIndexedFilterXpath() { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); Filter filter = ff.and( ff.equals(ff.property("st:Station"), ff.literal("st.1")), ff.like(ff.property("st:Station/st:location/st:name"), "*fer*")); return filter; } }
private Filter partialIndexedFilter() { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(); Filter filter = ff.and( ff.equals(ff.property("ID"), ff.literal("st.1")), ff.like(ff.property("LOCATION_NAME"), "*fer*")); return filter; }
@Test public void testAndTemporalMetBy() throws Exception { final Period p = period("2016-01-01T00:00:00.000-0500", "2106-01-02T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.metBy(ff.literal("someDate"), ff.literal(p))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalAfter() throws Exception { final Instant start = instant("2016-01-01T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.after(ff.literal("someDate"), ff.literal(start))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalBegins() throws Exception { final Instant start = instant("2016-01-01T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.begins(ff.literal("someDate"), ff.literal(start))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalBegunBy() throws Exception { final Instant start = instant("2016-01-01T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.begunBy(ff.literal("someDate"), ff.literal(start))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalEndedBy() throws Exception { final Instant start = instant("2016-01-01T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.endedBy(ff.literal("someDate"), ff.literal(start))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalTEquals() throws Exception { final Period p = period("2016-01-01T00:00:00.000-0500", "2106-01-02T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.tequals(ff.literal("someDate"), ff.literal(p))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testAndTemporalBetween() throws Exception { final Instant start = instant("2016-01-01T00:00:00.000-0500"); final Instant end = instant("2106-01-02T00:00:00.000-0500"); final Filter f = ff.and( ff.bbox("geom", -10, -10, 10, 10, null), ff.between(ff.literal("someDate"), ff.literal(start), ff.literal(end))); final Envelope env = (Envelope) f.accept(visitor, null); assertEquals(new Envelope(-10, 10, -10, 10), env); }
@Test public void testLike() { PropertyIsLike like = ff.like(ff.property("a"), "*A*"); NullHandlingVisitor visitor = new NullHandlingVisitor(); Filter result = (Filter) like.accept(visitor, null); assertTrue(result instanceof And); Filter expected = ff.and(like, propertyNotNull("a")); assertEquals(expected, result); like = ff.like(ff.literal("a"), "*A*"); result = (Filter) like.accept(visitor, null); assertEquals(like, result); }