Object
AbstractFactory
DefaultFilterFactory<R,G,T>
- Type Parameters:
R
- the type of resources (e.g.AbstractFeature
) to use as inputs.G
- base class of geometry objects. The implementation-neutral type is GeoAPIGeometry
, but this factory allows the use of other implementations such as JTSGeometry
or ESRIGeometry
.T
- base class of temporal objects.
- All Implemented Interfaces:
Factory
- Direct Known Subclasses:
DefaultFilterFactory.Features
A factory of default
Filter
and Expression
implementations.
This base class operates on resources of arbitrary type <R>
.
Concrete subclass operates on resources of specific type such as AbstractFeature
.
Upcoming API change
In a future version, all
In a future version, all
Filter
and Expression
parameters may be replaced by parameters
of the same names but from the org.opengis.filter
package instead of org.apache.sis.filter
.
This change is pending next GeoAPI release.
In addition, return types may become more specialized types.
- Since:
- 1.1
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A filter factory operating onAbstractFeature
instances. -
Constructor Summary
ModifierConstructorDescriptionprotected
DefaultFilterFactory
(Class<G> spatial, Class<T> temporal, WraparoundMethod wraparound) Creates a new factory for geometries and temporal objects of the given types. -
Method Summary
Modifier and TypeMethodDescriptionadd
(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric addition of the first and second operand.after
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is after the second.and
(Collection<? extends Filter<R>> operands) Creates aAND
filter between two or more filters.Creates aAND
filter between two filters.anyInteracts
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates a shortcut operator semantically equivalent to NOT (Before OR Meets OR MetBy OR After).bbox
(Expression<R, ? extends G> geometry, Envelope bounds) Creates an operator that checks if the bounding box of the feature's geometry interacts with the bounding box provided in the filter properties.before
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is before the second.begins
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand begins at the second.begunBy
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand begun by the second.between
(Expression<R, ?> expression, Expression<R, ?> lowerBoundary, Expression<R, ?> upperBoundary) Filter operation for a range check.beyond
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2, Quantity<Length> distance) Creates an operator that checks if all of a feature's geometry is more distant than the given distance from the given geometry.contains
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the first geometric operand contains the second.crosses
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the first geometric operand crosses the second.disjoint
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the first operand is disjoint from the second.divide
(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric quotient resulting from dividing the first operand by the second.during
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is during the second.endedBy
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is ended by the second.ends
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand ends at the second.equal
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that compares that two sub-expressions are equal to each other.equals
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the geometry of the two operands are equal.Returns a factory operating onAbstractFeature
instances.Expression
<R, ?> function
(String name, Expression<? super R, ?> parameter) Creates an implementation-specific function with a single parameter.Expression
<R, ?> function
(String name, Expression<? super R, ?> param1, Expression<? super R, ?> param2) Creates an implementation-specific function with two parameters.Expression
<R, ?> function
(String name, Expression<R, ?>[] parameters) Creates an implementation-specific function.greater
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that checks that its first sub-expression is greater than its second sub-expression.greaterOrEqual
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that checks that its first sub-expression is greater than its second sub-expression.intersects
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the two geometric operands intersect.isNil
(Expression<R, ?> expression, String nilReason) An operator that tests if an expression's value is nil.isNull
(Expression<R, ?> expression) An operator that tests if an expression's value isnull
.less
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that checks that its first sub-expression is less than its second sub-expression.lessOrEqual
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that checks that its first sub-expression is less than or equal to its second sub-expression.like
(Expression<R, ?> expression, String pattern) Character string comparison operator with pattern matching and default wildcards.like
(Expression<R, ?> expression, String pattern, char wildcard, char singleChar, char escape, boolean isMatchingCase) Character string comparison operator with pattern matching and specified wildcards.<V> Expression
<R, V> literal
(V value) Creates a constant, literal value that can be used in expressions.meets
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand meets the second.metBy
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is met by the second.multiply
(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric product of their first and second operand.Creates aNOT
filter for the given filter.notEqual
(Expression<R, ?> expression1, Expression<R, ?> expression2) Filter operator that compares that its two sub-expressions are not equal to each other.or
(Collection<? extends Filter<R>> operands) Creates aOR
filter between two or more filters.Creates aOR
filter between two filters.overlappedBy
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is overlapped by the second.overlaps
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the interior of the first geometric operand somewhere overlaps the interior of the second geometric operand.Expression
<R, ?> Creates an expression whose value is computed by retrieving the value indicated by a path in a resource.abstract <V> Expression
<R, V> Creates an expression retrieving the value as an instance of the specified class.resourceId
(String rid) Creates a predicate to identify an identifiable resource within a filter expression.subtract
(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric difference between the first and second operand.tcontains
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is contained by the second.tequals
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand is equal to the second.touches
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the two geometric operands touch each other, but do not overlap.toverlaps
(Expression<R, ? extends T> time1, Expression<R, ? extends T> time2) Creates an operator that checks if first temporal operand overlaps the second.within
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the first geometric operand is completely contained by the constant geometric operand.within
(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2, Quantity<Length> distance) Creates an operator that checks if any part of the first geometry lies within the given distance of the second geometry.Methods inherited from class AbstractFactory
getVendor
-
Constructor Details
-
DefaultFilterFactory
Creates a new factory for geometries and temporal objects of the given types. Thespatial
argument can be one of the following classes:Authorized spatial class argument values Library Spatial class ESRI com.esri.core.geometry.Geometry
JTS org.locationtech.jts.geom.Geometry
Java2D java.awt.Shape
Default java.lang.Object
Authorized temporal class argument values Library Temporal class Default java.lang.Object
- Parameters:
spatial
- type of spatial objects, orObject.class
for default.temporal
- type of temporal objects, orObject.class
for default.wraparound
- the strategy to use for representing a region crossing the anti-meridian.
-
-
Method Details
-
forFeatures
Returns a factory operating onAbstractFeature
instances. The geometry library will be the system default.- Returns:
- factory operating on
AbstractFeature
instances. - "TODO:"
- The type of temporal objects is not yet determined.
-
resourceId
Creates a predicate to identify an identifiable resource within a filter expression.- Parameters:
rid
- identifier of the resource that shall be selected by the predicate.- Returns:
- the predicate.
-
property
Creates an expression whose value is computed by retrieving the value indicated by a path in a resource. If all characters in the path are Unicode identifier parts, then the XPath expression is simply a property name.- Parameters:
xpath
- the path to the property whose value will be returned by theapply(R)
method.- Returns:
- an expression evaluating the referenced property value.
-
property
Creates an expression retrieving the value as an instance of the specified class. Thexpath
argument follows the rule described inproperty(String)
.The desired type of property values can be specified. For example if the property values should be numbers, then
type
can beNumber.class
. If property values can be of any type with no conversion desired, thentype
should beObject.class
.- Type Parameters:
V
- the type of the values to be fetched (compile-time value oftype
).- Parameters:
xpath
- the path to the property whose value will be returned by theapply(R)
method.type
- the type of the values to be fetched (run-time value of<V>
).- Returns:
- an expression evaluating the referenced property value.
-
literal
Creates a constant, literal value that can be used in expressions. The given value should be data objects such as strings, numbers, dates or geometries.- Type Parameters:
V
- the type of the value of the literal.- Parameters:
value
- the literal value. May benull
.- Returns:
- a literal for the given value.
-
equal
Filter operator that compares that two sub-expressions are equal to each other.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
=expression2
.
-
notEqual
Filter operator that compares that its two sub-expressions are not equal to each other.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
≠expression2
.
-
less
Filter operator that checks that its first sub-expression is less than its second sub-expression.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
<expression2
.
-
greater
Filter operator that checks that its first sub-expression is greater than its second sub-expression.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
>expression2
.
-
lessOrEqual
Filter operator that checks that its first sub-expression is less than or equal to its second sub-expression.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
≤expression2
.
-
greaterOrEqual
Filter operator that checks that its first sub-expression is greater than its second sub-expression.- Parameters:
expression1
- the first of the two expressions to be used by this comparator.expression2
- the second of the two expressions to be used by this comparator.- Returns:
- a filter evaluating
expression1
≥expression2
.
-
between
public Filter<R> between(Expression<R, ?> expression, Expression<R, ?> lowerBoundary, Expression<R, ?> upperBoundary) Filter operation for a range check. The lower and upper boundary values are inclusive.- Parameters:
expression
- the expression to be compared by this comparator.lowerBoundary
- the lower bound (inclusive) as an expression.upperBoundary
- the upper bound (inclusive) as an expression.- Returns:
- a filter evaluating (
expression
≥lowerBoundary
) & (expression
≤upperBoundary
).
-
like
Character string comparison operator with pattern matching and default wildcards. The wildcard character is'%'
, the single character is'_'
and the escape character is'\\'
. The comparison is case-sensitive.- Parameters:
expression
- source of values to compare against the pattern.pattern
- pattern to match against expression values.- Returns:
- a character string comparison operator with pattern matching.
-
like
public Filter<R> like(Expression<R, ?> expression, String pattern, char wildcard, char singleChar, char escape, boolean isMatchingCase) Character string comparison operator with pattern matching and specified wildcards.- Parameters:
expression
- source of values to compare against the pattern.pattern
- pattern to match against expression values.wildcard
- pattern character for matching any sequence of characters.singleChar
- pattern character for matching exactly one character.escape
- pattern character for indicating that the next character should be matched literally.isMatchingCase
- specifies how a filter expression processor should perform string comparisons.- Returns:
- a character string comparison operator with pattern matching.
-
isNull
An operator that tests if an expression's value isnull
. This corresponds to checking whether the property exists in the real-world.- Parameters:
expression
- source of values to compare againstnull
.- Returns:
- a filter that checks if an expression's value is
null
.
-
isNil
An operator that tests if an expression's value is nil. The difference withNullOperator
is that a value should exist but cannot be provided for the reason given bynilReason
. Possible reasons are:- inapplicable — there is no value.
- template — the value will be available later.
- missing — the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist.
- unknown — the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists..
- withheld — the value is not divulged.
- Other strings at implementation choice.
- Parameters:
expression
- source of values to compare against nil values.nilReason
- the reason why the value is nil, ornull
for accepting any reason.- Returns:
- a filter that checks if an expression's value is nil for the specified reason.
- See Also:
-
and
Creates aAND
filter between two filters.- Parameters:
operand1
- the first operand of the AND operation.operand2
- the second operand of the AND operation.- Returns:
- a filter evaluating
operand1 AND operand2
.
-
and
Creates aAND
filter between two or more filters.- Parameters:
operands
- a collection of at least 2 operands.- Returns:
- a filter evaluating
operand1 AND operand2 AND operand3
… - Throws:
IllegalArgumentException
- if the given collection contains less than 2 elements.
-
or
Creates aOR
filter between two filters.- Parameters:
operand1
- the first operand of the OR operation.operand2
- the second operand of the OR operation.- Returns:
- a filter evaluating
operand1 OR operand2
.
-
or
Creates aOR
filter between two or more filters.- Parameters:
operands
- a collection of at least 2 operands.- Returns:
- a filter evaluating
operand1 OR operand2 OR operand3
… - Throws:
IllegalArgumentException
- if the given collection contains less than 2 elements.
-
not
Creates aNOT
filter for the given filter.- Parameters:
operand
- the operand of the NOT operation.- Returns:
- a filter evaluating
NOT operand
.
-
bbox
Creates an operator that checks if the bounding box of the feature's geometry interacts with the bounding box provided in the filter properties.- Parameters:
geometry
- expression fetching the geometry to check for interaction with bounds.bounds
- the bounds to check geometry against.- Returns:
- a filter checking for any interactions between the bounding boxes.
-
equals
Creates an operator that checks if the geometry of the two operands are equal.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Equals" operation between the two geometries.
-
disjoint
Creates an operator that checks if the first operand is disjoint from the second.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Disjoint" operation between the two geometries.
-
intersects
public Filter<R> intersects(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2) Creates an operator that checks if the two geometric operands intersect.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Intersects" operation between the two geometries.
-
touches
Creates an operator that checks if the two geometric operands touch each other, but do not overlap.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Touches" operation between the two geometries.
-
crosses
Creates an operator that checks if the first geometric operand crosses the second.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Crosses" operation between the two geometries.
-
within
Creates an operator that checks if the first geometric operand is completely contained by the constant geometric operand.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Within" operation between the two geometries.
-
contains
Creates an operator that checks if the first geometric operand contains the second.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Contains" operation between the two geometries.
-
overlaps
Creates an operator that checks if the interior of the first geometric operand somewhere overlaps the interior of the second geometric operand.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.- Returns:
- a filter for the "Overlaps" operation between the two geometries.
-
beyond
public Filter<R> beyond(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2, Quantity<Length> distance) Creates an operator that checks if all of a feature's geometry is more distant than the given distance from the given geometry.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.distance
- minimal distance for evaluating the expression astrue
.- Returns:
- operator that evaluates to
true
when all of a feature's geometry is more distant than the given distance from the second geometry.
-
within
public Filter<R> within(Expression<R, ? extends G> geometry1, Expression<R, ? extends G> geometry2, Quantity<Length> distance) Creates an operator that checks if any part of the first geometry lies within the given distance of the second geometry.- Parameters:
geometry1
- expression fetching the first geometry of the binary operator.geometry2
- expression fetching the second geometry of the binary operator.distance
- maximal distance for evaluating the expression astrue
.- Returns:
- operator that evaluates to
true
when any part of the feature's geometry lies within the given distance of the second geometry.
-
after
Creates an operator that checks if first temporal operand is after the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "After" operator between the two temporal values.
-
before
Creates an operator that checks if first temporal operand is before the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "Before" operator between the two temporal values.
-
begins
Creates an operator that checks if first temporal operand begins at the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "Begins" operator between the two temporal values.
-
begunBy
Creates an operator that checks if first temporal operand begun by the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "BegunBy" operator between the two temporal values.
-
tcontains
Creates an operator that checks if first temporal operand is contained by the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "TContains" operator between the two temporal values.
-
during
Creates an operator that checks if first temporal operand is during the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "During" operator between the two temporal values.
-
tequals
Creates an operator that checks if first temporal operand is equal to the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "TEquals" operator between the two temporal values.
-
toverlaps
Creates an operator that checks if first temporal operand overlaps the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "TOverlaps" operator between the two temporal values.
-
meets
Creates an operator that checks if first temporal operand meets the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "Meets" operator between the two temporal values.
-
ends
Creates an operator that checks if first temporal operand ends at the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "Ends" operator between the two temporal values.
-
overlappedBy
Creates an operator that checks if first temporal operand is overlapped by the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "OverlappedBy" operator between the two temporal values.
-
metBy
Creates an operator that checks if first temporal operand is met by the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "MetBy" operator between the two temporal values.
-
endedBy
Creates an operator that checks if first temporal operand is ended by the second.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "EndedBy" operator between the two temporal values.
-
anyInteracts
Creates a shortcut operator semantically equivalent to NOT (Before OR Meets OR MetBy OR After). This is applicable to periods only.- Parameters:
time1
- expression fetching the first temporal value.time2
- expression fetching the second temporal value.- Returns:
- a filter for the "AnyInteracts" operator between the two temporal values.
-
add
public Expression<R,Number> add(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric addition of the first and second operand.- Parameters:
operand1
- expression fetching the first number.operand2
- expression fetching the second number.- Returns:
- an expression for the "Add" function between the two numerical values.
-
subtract
public Expression<R,Number> subtract(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric difference between the first and second operand.- Parameters:
operand1
- expression fetching the first number.operand2
- expression fetching the second number.- Returns:
- an expression for the "Subtract" function between the two numerical values.
-
multiply
public Expression<R,Number> multiply(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric product of their first and second operand.- Parameters:
operand1
- expression fetching the first number.operand2
- expression fetching the second number.- Returns:
- an expression for the "Multiply" function between the two numerical values.
-
divide
public Expression<R,Number> divide(Expression<R, ? extends Number> operand1, Expression<R, ? extends Number> operand2) Creates a function computing the numeric quotient resulting from dividing the first operand by the second.- Parameters:
operand1
- expression fetching the first number.operand2
- expression fetching the second number.- Returns:
- an expression for the "Divide" function between the two numerical values.
-
function
Creates an implementation-specific function with a single parameter.- Parameters:
name
- name of the function to call.parameter
- expression providing values for the function argument.- Returns:
- an expression which will call the specified function.
- Throws:
IllegalArgumentException
- if the given name is not recognized, or if the argument is illegal for the specified function.
-
function
public Expression<R,?> function(String name, Expression<? super R, ?> param1, Expression<? super R, ?> param2) Creates an implementation-specific function with two parameters.- Parameters:
name
- name of the function to call.param1
- expression providing values for the first function argument.param2
- expression providing values for the second function argument.- Returns:
- an expression which will call the specified function.
- Throws:
IllegalArgumentException
- if the given name is not recognized, or if the arguments are illegal for the specified function.
-
function
Creates an implementation-specific function.- Parameters:
name
- name of the function to call.parameters
- expressions providing values for the function arguments.- Returns:
- an expression which will call the specified function.
- Throws:
IllegalArgumentException
- if the given name is not recognized, or if the arguments are illegal for the specified function.
-