public FilterCapabilities(Class type) { addType(type); }
public FilterCapabilities(long filterCapabilitiesType) { addType(filterCapabilitiesType); }
@Override protected FilterCapabilities createFilterCapabilities() { // MySQL does not actually implement all of the special functions FilterCapabilities caps = super.createFilterCapabilities(); caps.addType(BBOX.class); caps.addType(Contains.class); // caps.addType(Crosses.class); caps.addType(Disjoint.class); caps.addType(Equals.class); caps.addType(Intersects.class); caps.addType(Overlaps.class); caps.addType(Touches.class); caps.addType(Within.class); caps.addType(Beyond.class); return caps; }
/** * Add all the capabilities in the provided FilterCapabilities to this capabilities. * * @param capabilities capabilities to add. */ public void addAll(FilterCapabilities capabilities) { addType(capabilities.ops); functions.addAll(capabilities.functions); }
@Override protected FilterCapabilities createFilterCapabilities() { FilterCapabilities caps = super.createFilterCapabilities(); caps.addAll(SQLDialect.BASE_DBMS_CAPABILITIES); caps.addType(BBOX.class); caps.addType(Contains.class); caps.addType(Crosses.class); caps.addType(Disjoint.class); caps.addType(Equals.class); caps.addType(Intersects.class); caps.addType(Overlaps.class); caps.addType(Touches.class); caps.addType(Within.class); caps.addType(DWithin.class); caps.addType(Beyond.class); return caps; }
@Override protected FilterCapabilities createFilterCapabilities() { FilterCapabilities caps = new FilterCapabilities(); caps.addAll(SQLDialect.BASE_DBMS_CAPABILITIES); // adding the spatial filters support caps.addType(BBOX.class); caps.addType(Contains.class); caps.addType(Crosses.class); caps.addType(Disjoint.class); caps.addType(Equals.class); caps.addType(Intersects.class); caps.addType(Overlaps.class); caps.addType(Touches.class); caps.addType(Within.class); caps.addType(DWithin.class); caps.addType(Beyond.class); return caps; }
@Override protected FilterCapabilities createFilterCapabilities() { FilterCapabilities caps = super.createFilterCapabilities(); caps.addAll(SQLDialect.BASE_DBMS_CAPABILITIES); caps.addType(BBOX.class); caps.addType(Contains.class); caps.addType(Crosses.class); caps.addType(Disjoint.class); caps.addType(Equals.class); caps.addType(Intersects.class); caps.addType(Overlaps.class); caps.addType(Touches.class); caps.addType(Within.class); caps.addType(DWithin.class); caps.addType(Beyond.class); // native filter support caps.addType(NativeFilter.class); return caps; }
/** * Adds a new support type to capabilities. For 2.2 only function expression support is added * this way. As of geotools 2.3 this will be the supported way of adding to Filtercapabilities. * * @param type the Class that indicates the new support. */ public void addType(Class type, boolean addFunctionType) { if (org.opengis.filter.Filter.class.isAssignableFrom(type) || org.opengis.filter.expression.Expression.class.isAssignableFrom(type)) { if (addFunctionType) addType(FUNCTIONS); functions.add(type); } }
/** * Adds a new support type to capabilities. For 2.2 only function expression support is added * this way. As of geotools 2.3 this will be the supported way of adding to Filtercapabilities. * * @param type the Class that indicates the new support. */ public void addType(Class type) { if (org.opengis.filter.Filter.class.isAssignableFrom(type) || org.opengis.filter.expression.Expression.class.isAssignableFrom(type)) { addType(FUNCTIONS); functions.add(type); } }
/** * Overrides the superclass implementation to indicate that we support pushing FeatureId filters * down into the data store. */ @Override protected FilterCapabilities createFilterCapabilities() { FilterCapabilities capabilities = new FilterCapabilities(); capabilities.addAll(FilterCapabilities.LOGICAL_OPENGIS); capabilities.addAll(FilterCapabilities.SIMPLE_COMPARISONS_OPENGIS); capabilities.addType(FilterCapabilities.SIMPLE_ARITHMETIC); capabilities.addType(PropertyIsNull.class); capabilities.addType(PropertyIsBetween.class); capabilities.addType(Id.class); capabilities.addType(IncludeFilter.class); capabilities.addType(ExcludeFilter.class); capabilities.addType(PropertyIsLike.class); return capabilities; }
public void testFunctionANDGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter andFilter = ff.and(funtionFilter, geomFilter); andFilter.accept(visitor, null); assertEquals(funtionFilter.toString(), visitor.getFilterPost().toString()); assertEquals(geomFilter.toString(), visitor.getFilterPre().toString()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); andFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(andFilter, visitor.getFilterPre()); }
public void testNullLiteralInLogicCombination() { FilterCapabilities caps = new FilterCapabilities(); PostPreProcessFilterSplittingVisitor visitor = new PostPreProcessFilterSplittingVisitor(caps, null, null); caps.addAll(FilterCapabilities.SIMPLE_COMPARISONS_OPENGIS); caps.addType(And.class); caps.addType(Or.class); caps.addType(Not.class); Filter f1 = ff.equal(ff.literal(null), ff.literal("test"), false); Filter f2 = ff.not(ff.equal(ff.literal(null), ff.literal("test"), false)); Filter or = ff.or(Arrays.asList(f1, f2)); or.accept(visitor, null); assertEquals(or, visitor.getFilterPre()); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); } }
@SuppressWarnings({"rawtypes", "unchecked"}) public void testVisitIdFilterWithNoIdCapabilities() throws Exception { // Id Filter HashSet ids = new HashSet(); ids.add(ff.featureId("david")); Filter idFilter = ff.id(ids); // no Id Capabilities FilterCapabilities fc = new FilterCapabilities(); fc.addAll(FilterCapabilities.SIMPLE_COMPARISONS_OPENGIS); fc.addType(And.class); visitor = newVisitor(fc); idFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(idFilter, visitor.getFilterPost()); }
public void testFunctionFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter filter = createFunctionFilter(); filter.accept(visitor, null); assertEquals(filter, visitor.getFilterPost()); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); filter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(filter, visitor.getFilterPre()); }
public void testFunctionNOTFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter not = ff.not(funtionFilter); not.accept(visitor, null); assertEquals(not, visitor.getFilterPost()); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); not.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(not, visitor.getFilterPre()); }
public void testFunctionORGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter orFilter = ff.or(funtionFilter, geomFilter); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(orFilter, visitor.getFilterPre()); }
public void testNullParentNullAccessor() throws Exception { simpleLogicalCaps.addType(BBOX.class); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10.0, 20.0, 10.0, 20.0, ""); Filter orFilter = ff.or(funtionFilter, geomFilter); visitor = new PostPreProcessFilterSplittingVisitor(new FilterCapabilities(), null, null); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); visitor = new PostPreProcessFilterSplittingVisitor(simpleLogicalCaps, null, null); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(orFilter, visitor.getFilterPre()); }
public void testSupportOnlySome() throws Exception { PropertyIsEqualTo filter1 = createFunctionFilter(); FilterFunction_abs filterFunction_abs = new FilterFunction_abs(); filterFunction_abs.setParameters(Arrays.asList(new Expression[] {ff.property("name")})); PropertyIsEqualTo filter2 = ff.equals(ff.property("name"), filterFunction_abs); Filter filter = ff.and(filter1, filter2); FilterCapabilities filterCapabilitiesMask = new FilterCapabilities(); filterCapabilitiesMask.addType(FilterFunction_geometryType.class); filterCapabilitiesMask.addAll(FilterCapabilities.SIMPLE_COMPARISONS_OPENGIS); filterCapabilitiesMask.addAll(FilterCapabilities.LOGICAL_OPENGIS); visitor = newVisitor(filterCapabilitiesMask); filter.accept(visitor, null); assertEquals(filter1, visitor.getFilterPre()); assertEquals(filter2, visitor.getFilterPost()); } }
public void testIsNullFilter() { FilterCapabilities caps = new FilterCapabilities(); PostPreProcessFilterSplittingVisitor visitor = new PostPreProcessFilterSplittingVisitor(caps, null, null); caps.addType(PropertyIsNull.class); Filter f1 = ff.isNull(ff.literal("abc")); f1.accept(visitor, null); assertEquals(f1, visitor.getFilterPre()); visitor = new PostPreProcessFilterSplittingVisitor(caps, null, null); Filter f2 = ff.isNull(ff.function("strConcat", ff.literal("abc"), ff.literal("def"))); f2.accept(visitor, null); assertEquals(f2, visitor.getFilterPost()); }