org.geotools.filter.visitor
Class SimplifyingFilterVisitor

Object
  extended by DuplicatingFilterVisitor
      extended by SimplifyingFilterVisitor
All Implemented Interfaces:
ExpressionVisitor, FilterVisitor
Direct Known Subclasses:
ArcSdeSimplifyingFilterVisitor

public class SimplifyingFilterVisitor
extends DuplicatingFilterVisitor

Takes a filter and returns a simplified, equivalent one. At the moment the filter:

FID filter validation is meant to wipe out non valid feature ids from Id filters. This is so in order to avoid sending feature ids down to DataStores that are not valid as per the specific FeatureType fid structure. Since this is structure is usually DataStore specific, some times being a strategy based on how the feature type primary key is generated, fid validation is abstracted out to the SimplifyingFilterVisitor.FIDValidator interface so when a DataStore is about to send a query down to the backend it van provide this visitor with a validator specific for the feature type fid structure being queried.

By default all feature ids are valid. DataStores that want non valid fids to be wiped out should set a SimplifyingFilterVisitor.FIDValidator through the setFIDValidator(FIDValidator) method.

Since:
2.5.x
Author:
Andrea Aime - OpenGeo, Gabriel Roldan (OpenGeo)

Nested Class Summary
static interface SimplifyingFilterVisitor.FIDValidator
          Defines a simple means of assessing whether a feature id in an Id filter is structurally valid and hence can be send down to the backend with confidence it will not cause trouble, the most common one being filtering by pk number even if the type name prefix does not match.
static class SimplifyingFilterVisitor.RegExFIDValidator
          A FID validator that matches the fids with a given regular expression to determine the fid's validity.
static class SimplifyingFilterVisitor.TypeNameDotNumberFidValidator
          A convenient fid validator for the common case of a feature id being a composition of a {@code .
 
Field Summary
static SimplifyingFilterVisitor.FIDValidator ANY_FID_VALID
          A 'null-object' fid validator that assumes any feature id in an Id filter is valid
 
Fields inherited from class DuplicatingFilterVisitor
ff
 
Constructor Summary
SimplifyingFilterVisitor()
           
 
Method Summary
 void setFIDValidator(SimplifyingFilterVisitor.FIDValidator validator)
           
static Filter simplify(Filter filter)
          Tries to simplify the filter if it's not already a simple one
 Object visit(And filter, Object extraData)
           
 Object visit(Function function, Object extraData)
           
 Object visit(Id filter, Object extraData)
          Uses the current SimplifyingFilterVisitor.FIDValidator to wipe out illegal feature ids from the returned filters.
 Object visit(Not filter, Object extraData)
           
 Object visit(Or filter, Object extraData)
           
 Object visit(PropertyIsBetween filter, Object extraData)
           
 Object visit(PropertyIsEqualTo filter, Object extraData)
           
 Object visit(PropertyIsGreaterThan filter, Object extraData)
           
 Object visit(PropertyIsGreaterThanOrEqualTo filter, Object extraData)
           
 Object visit(PropertyIsLessThan filter, Object extraData)
           
 Object visit(PropertyIsLessThanOrEqualTo filter, Object extraData)
           
 Object visit(PropertyIsLike filter, Object extraData)
           
 Object visit(PropertyIsNil filter, Object extraData)
           
 Object visit(PropertyIsNotEqualTo filter, Object extraData)
           
 Object visit(PropertyIsNull filter, Object extraData)
           
 
Methods inherited from class DuplicatingFilterVisitor
getFactory, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitNullFilter
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ANY_FID_VALID

public static final SimplifyingFilterVisitor.FIDValidator ANY_FID_VALID
A 'null-object' fid validator that assumes any feature id in an Id filter is valid

Constructor Detail

SimplifyingFilterVisitor

public SimplifyingFilterVisitor()
Method Detail

setFIDValidator

public void setFIDValidator(SimplifyingFilterVisitor.FIDValidator validator)

visit

public Object visit(And filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(Or filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(Id filter,
                    Object extraData)
Uses the current SimplifyingFilterVisitor.FIDValidator to wipe out illegal feature ids from the returned filters.

Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor
Returns:
a filter containing only valid fids as per the current SimplifyingFilterVisitor.FIDValidator, may be Filter.EXCLUDE if none matches or the filter is already empty

visit

public Object visit(Not filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(Function function,
                    Object extraData)
Specified by:
visit in interface ExpressionVisitor
Overrides:
visit in class DuplicatingFilterVisitor

simplify

public static Filter simplify(Filter filter)
Tries to simplify the filter if it's not already a simple one

Parameters:
filter -
Returns:

visit

public Object visit(PropertyIsBetween filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsEqualTo filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsNotEqualTo filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsGreaterThan filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsGreaterThanOrEqualTo filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsLessThan filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsLessThanOrEqualTo filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsLike filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsNil filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor

visit

public Object visit(PropertyIsNull filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor
Overrides:
visit in class DuplicatingFilterVisitor


Copyright © 1996-2014 Geotools. All Rights Reserved.