public class SimplifyingFilterVisitor extends DuplicatingFilterVisitor
Filter.INCLUDE
and Filter.EXCLUDE
in logical expressions
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.
Modifier and Type | Class and Description |
---|---|
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
|
Modifier and Type | Field and Description |
---|---|
static SimplifyingFilterVisitor.FIDValidator |
ANY_FID_VALID
A 'null-object' fid validator that assumes any feature id in an
Id filter is valid |
protected FeatureType |
featureType |
ff
Constructor and Description |
---|
SimplifyingFilterVisitor() |
Modifier and Type | Method and Description |
---|---|
protected List<Filter> |
basicAndSimplification(List<Filter> filters) |
protected List<Filter> |
basicOrSimplification(List<Filter> filters) |
protected <T extends BinaryLogicOperator> |
collect(T filter,
Class<T> type,
Object extraData,
List<Filter> collected) |
protected List<Filter> |
extraAndSimplification(Object extraData,
List<Filter> filters) |
protected List<Filter> |
extraOrSimplification(Object extraData,
List<Filter> filters) |
protected boolean |
isConstant(Expression ex) |
boolean |
isRangeSimplicationEnabled() |
protected boolean |
isSimpleFeature()
Returns true if the target feature type is a simple feature one
|
protected boolean |
isVolatileFunction(Function function)
Checks if a function is volatile in this context.
|
void |
setFeatureType(FeatureType featureType) |
void |
setFIDValidator(SimplifyingFilterVisitor.FIDValidator validator) |
void |
setRangeSimplicationEnabled(boolean rangeSimplicationEnabled)
Enables/disable range simplification.
|
static Filter |
simplify(Filter filter)
Tries to simplify the filter if it's not already a simple one.
|
static Filter |
simplify(Filter filter,
FeatureType featureType)
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) |
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, visit, visit, visitNullFilter
public static final SimplifyingFilterVisitor.FIDValidator ANY_FID_VALID
Id
filter is validprotected FeatureType featureType
public void setFIDValidator(SimplifyingFilterVisitor.FIDValidator validator)
public void setFeatureType(FeatureType featureType)
public Object visit(And filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
protected <T extends BinaryLogicOperator> List<Filter> collect(T filter, Class<T> type, Object extraData, List<Filter> collected)
public Object visit(Or filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
protected List<Filter> extraAndSimplification(Object extraData, List<Filter> filters)
protected List<Filter> extraOrSimplification(Object extraData, List<Filter> filters)
public Object visit(Id filter, Object extraData)
SimplifyingFilterVisitor.FIDValidator
to wipe out illegal feature ids from the returned
filters.visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
SimplifyingFilterVisitor.FIDValidator
, may be
Filter.EXCLUDE
if none matches or the filter is already emptypublic Object visit(Not filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
protected boolean isSimpleFeature()
public Object visit(Function function, Object extraData)
visit
in interface ExpressionVisitor
visit
in class DuplicatingFilterVisitor
protected boolean isVolatileFunction(Function function)
VolatileFunction
interface, subclasses can overridefunction
- public static Filter simplify(Filter filter)
filter
- public static Filter simplify(Filter filter, FeatureType featureType)
filter
- protected boolean isConstant(Expression ex)
public Object visit(PropertyIsBetween filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsEqualTo filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsNotEqualTo filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsGreaterThan filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsGreaterThanOrEqualTo filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsLessThan filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsLessThanOrEqualTo filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsLike filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsNil filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public Object visit(PropertyIsNull filter, Object extraData)
visit
in interface FilterVisitor
visit
in class DuplicatingFilterVisitor
public boolean isRangeSimplicationEnabled()
public void setRangeSimplicationEnabled(boolean rangeSimplicationEnabled)
rangeSimplicationEnabled
- Copyright © 1996–2019 Geotools. All rights reserved.