@Override public Object visit(final ExcludeFilter filter, final Object data) { return new ExtractGeometryFilterVisitorResult(null, null); }
@Override public Object visit(final PropertyIsGreaterThan filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final Divide expression, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final Id filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final PropertyIsEqualTo filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final Disjoint filter, final Object data) { // disjoint does not define a rectangle, but a hole in the // Cartesian plane, no way to limit it return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visitNullFilter(final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } }
@Override public Object visit(final Beyond filter, final Object data) { // beyond a certain distance from a finite object, no way to limit it return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final Multiply expression, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final NilExpression expression, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final PropertyIsBetween filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final PropertyIsLessThanOrEqualTo filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final PropertyIsNotEqualTo filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final PropertyIsNull filter, final Object data) { return new ExtractGeometryFilterVisitorResult(infinity(), null); }
@Override public Object visit(final Intersects filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.INTERSECTS); }
@Override public Object visit(final Contains filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); // since predicate is defined relative to the query geometry we are // using WITHIN // which is converse of CONTAINS operator // CQL Expression "CONTAINS(geo, QueryGeometry)" is equivalent to // QueryGeometry.WITHIN(geo) return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.WITHIN); }
@Override public Object visit(final Equals filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.EQUALS); }
@Override public Object visit(final Touches filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.TOUCHES); }
@Override public Object visit(final Crosses filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.CROSSES); }
@Override public Object visit(final Overlaps filter, Object data) { if (!attributeOfInterest.equals(filter.getExpression1().toString())) { return new ExtractGeometryFilterVisitorResult(infinity(), null); } data = filter.getExpression2().accept(this, data); return new ExtractGeometryFilterVisitorResult((Geometry) data, CompareOperation.OVERLAPS); }