/** * Retypes a filter making sure the fids are using the internal typename prefix * * @param filter * @param typeMap */ Filter retypeFilter(Filter filter, FeatureTypeMap typeMap) { FidTransformeVisitor visitor = new FidTransformeVisitor(typeMap); return (Filter) filter.accept(visitor, null); }
static Filter unmapIdentifiers(Filter filter, String viewName) { GranuleStoreViewFilterVisitor visitor = new GranuleStoreViewFilterVisitor(viewName); return (Filter) filter.accept(visitor, null); }
public SimpleFeatureCollection subCollection(Filter filter) { // reproject the filter to the delegate native crs CoordinateReferenceSystem crs = getSchema().getCoordinateReferenceSystem(); CoordinateReferenceSystem crsDelegate = delegate.getSchema().getCoordinateReferenceSystem(); if (crs != null) { DefaultCRSFilterVisitor defaulter = new DefaultCRSFilterVisitor(FF, crs); filter = (Filter) filter.accept(defaulter, null); if (crsDelegate != null && !CRS.equalsIgnoreMetadata(crs, crsDelegate)) { ReprojectingFilterVisitor reprojector = new ReprojectingFilterVisitor(FF, delegate.getSchema()); filter = (Filter) filter.accept(reprojector, null); } } SimpleFeatureCollection sub = delegate.subCollection(filter); if (sub != null) { try { ReprojectingFeatureCollection wrapper = new ReprojectingFeatureCollection(sub, target); wrapper.setDefaultSource(defaultSource); return wrapper; } catch (Exception e) { throw new RuntimeException(e); } } return null; }
/** * Quickly look at the filter and determine the OperationName we need to check for in the * FilterCapabilities data structure. * * @param filter * @return Operation name */ public String toOperationName(Filter filter) { if (filter == null) return null; return (String) filter.accept(operationNameVisitor, null); }
protected Filter expandBBox(Filter filter, double distance) { return (Filter) filter.accept( new BBOXExpandingFilterVisitor(distance, distance, distance, distance), null); }
@Override public Object visit(Or filter, Object extraData) { List<Filter> children = filter.getChildren(); for (Filter child : children) { child.accept(this, extraData); } return extraData; }
protected Filter aliasFilter(Filter filter, SimpleFeatureType featureType, String alias) { JoinQualifier jq = new JoinQualifier(featureType, alias); Filter resultFilter = (Filter) filter.accept(jq, null); return resultFilter; }
/** * Generates the cql predicate associated to the {@link Filter} object. * * @param filter * @return cql predicate */ public static String toCQL(Filter filter) { FilterToCQL toCQL = new FilterToCQL(); StringBuilder output = (StringBuilder) filter.accept(toCQL, new StringBuilder()); return output.toString(); } /**
public static Object buildNot(FilterVisitor filterToCQL, Not filter, Object extraData) { StringBuilder output = asStringBuilder(extraData); output.append("NOT ("); filter.getFilter().accept(filterToCQL, output); output.append(")"); return output; }
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; }
/** overrides just to avoid the "WHERE" keyword */ @Override public void encode(Filter filter) throws FilterToSQLException { if (getCapabilities().fullySupports(filter)) { filter.accept(this, null); } else { throw new FilterToSQLException("Filter type not supported"); } }
DBObject toQuery(Filter f) { if (isAll(f)) { return new BasicDBObject(); } FilterToMongo v = new FilterToMongo(mapper); v.setFeatureType(getSchema()); return (DBObject) f.accept(v, null); }
/** Make sure it does not break with non spatial filters */ public void testNoProjection() { Filter idFilter = ff.id(Collections.singleton(ff.featureId("testType:1"))); Filter clone = (Filter) idFilter.accept(reprojector, null); assertNotSame(idFilter, clone); assertEquals(idFilter, clone); }
public void testNegateLessOrEqual() { Filter f = ff.not(ff.lessOrEqual(ff.property("prop"), ff.literal(10))); Filter result = (Filter) f.accept(simpleVisitor, null); assertEquals(ff.greater(ff.property("prop"), ff.literal(10)), result); // not simplified for complex features result = (Filter) f.accept(complexVisitor, null); assertEquals(f, result); }
@Test public void testVisitFidFilter() throws Exception { HashSet ids = new HashSet(); ids.add(ff.featureId("david")); Filter filter = ff.id(ids); visitor = newVisitor(newCapabilities(Id.class)); filter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(filter, visitor.getFilterPre()); }
public void testDualFilterNullOr() { Filter original = ff.or( Arrays.asList( ff.not(ff.isNull(ff.property("a"))), ff.isNull(ff.property("a")))); assertEquals(Filter.INCLUDE, original.accept(simpleVisitor, null)); }
public void testDualFilterAnd() { Filter original = ff.and( Arrays.asList( ff.not(ff.equal(ff.property("a"), ff.literal(3), true)), ff.equal(ff.property("a"), ff.literal(3), true))); assertEquals(Filter.EXCLUDE, original.accept(simpleVisitor, null)); }
@Test public void testDWithin() { Point geom = new GeometryFactory().createPoint(new Coordinate(0, 0)); Filter filter = ff.dwithin(ff.property("name"), ff.literal(geom), 100, "metre"); Envelope env = (Envelope) filter.accept(visitor, null); assertEquals(new Envelope(-100, 100, -100, 100), env); }
@Test public void testDisjoint() { Coordinate[] coords = new Coordinate[] {new Coordinate(0, 0), new Coordinate(10, 10)}; LineString lineString = new GeometryFactory().createLineString(coords); Filter filter = ff.disjoint(ff.property("name"), ff.literal(lineString)); Envelope env = (Envelope) filter.accept(visitor, null); assertEquals(infinity, env); }