org.geotools.filter.visitor
Class SimplifyingFilterVisitor
Object
DuplicatingFilterVisitor
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:
- simplifies out
Filter.INCLUDE
and Filter.EXCLUDE
in logical expressions
- removes double logic negations
- deal with FID filter validation removing invalid fids
- optimize out all non volatile functions that do not happen to use attributes,
replacing them with literals
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)
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 |
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
SimplifyingFilterVisitor
public SimplifyingFilterVisitor()
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.