org.geotools.filter.visitor
Class SimplifyingFilterVisitor

Object
  extended by DuplicatingFilterVisitor
      extended by SimplifyingFilterVisitor
All Implemented Interfaces:
ExpressionVisitor, FilterVisitor

public class SimplifyingFilterVisitor
extends DuplicatingFilterVisitor

Takes a filter and returns a simplified, equivalent one. At the moment the filter simplifies out Filter.INCLUDE and Filter.EXCLUDE and deal with FID filter validation.

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)
Module:

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)
           
 Object visit(And filter, 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(Or 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, 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


Copyright © 1996-2009 Geotools. All Rights Reserved.