org.geotools.filter
Class BetweenFilterImpl

java.lang.Object
  extended byorg.geotools.filter.FilterAbstract
      extended byorg.geotools.filter.AbstractFilter
          extended byorg.geotools.filter.BinaryComparisonAbstract
              extended byorg.geotools.filter.CompareFilterImpl
                  extended byorg.geotools.filter.BetweenFilterImpl
All Implemented Interfaces:
BetweenFilter, org.opengis.filter.BinaryComparisonOperator, CompareFilter, Filter, org.opengis.filter.Filter, FilterType, org.opengis.filter.PropertyIsBetween

public class BetweenFilterImpl
extends CompareFilterImpl
implements BetweenFilter

Defines a 'between' filter (which is a specialized compare filter). A between filter is just shorthand for a less-than-or-equal filter ANDed with a greater-than-or-equal filter. Arguably, this would be better handled using those constructs, but the OGC filter specification creates its own object for this, so we do as well. An important note here is that a between filter is actually a math filter, so its outer (left and right) expressions must be math expressions. This is enforced by the FilterAbstract class, which considers a BETWEEN operator to be a math filter.

Version:
$Id: BetweenFilterImpl.java 18021 2006-02-14 20:36:18Z jdeolive $
Author:
Rob Hranac, TOPP
Task:
REVISIT: I think AbstractFilter right now does not consider between a math filter. ch

Field Summary
protected  org.opengis.filter.expression.Expression middleValue
          The 'middle' value, which must be an attribute expression.
 
Fields inherited from class org.geotools.filter.BinaryComparisonAbstract
expression1, expression2
 
Fields inherited from class org.geotools.filter.AbstractFilter
filterType, permissiveConstruction
 
Fields inherited from interface org.geotools.filter.Filter
ALL, NONE
 
Fields inherited from interface org.geotools.filter.FilterType
BETWEEN, COMPARE_EQUALS, COMPARE_GREATER_THAN, COMPARE_GREATER_THAN_EQUAL, COMPARE_LESS_THAN, COMPARE_LESS_THAN_EQUAL, COMPARE_NOT_EQUALS, FID, GEOMETRY_BBOX, GEOMETRY_BEYOND, GEOMETRY_CONTAINS, GEOMETRY_CROSSES, GEOMETRY_DISJOINT, GEOMETRY_DWITHIN, GEOMETRY_EQUALS, GEOMETRY_INTERSECTS, GEOMETRY_OVERLAPS, GEOMETRY_TOUCHES, GEOMETRY_WITHIN, LIKE, LOGIC_AND, LOGIC_NOT, LOGIC_OR, NULL
 
Constructor Summary
protected BetweenFilterImpl()
          Constructor which flags the operator as between.
protected BetweenFilterImpl(FilterFactory factory)
           
 
Method Summary
 java.lang.Object accept(org.opengis.filter.FilterVisitor visitor, java.lang.Object extraData)
          Used by FilterVisitors to perform some action on this filter instance.
 void addMiddleValue(Expression middleValue)
          Deprecated. use setExpression(org.opengis.filter.expression.Expression)
 boolean equals(java.lang.Object oFilter)
          Returns true if the passed in object is the same as this filter.
 boolean evaluate(Feature feature)
          Determines whether or not a given feature is 'inside' this filter.
 org.opengis.filter.expression.Expression getExpression()
          Gets the middle value of the between.
 org.opengis.filter.expression.Expression getLowerBoundary()
          Returns the left,lower, or first expression.
 Expression getMiddleValue()
          Deprecated. use getExpression()
 org.opengis.filter.expression.Expression getUpperBoundary()
          Returns the right,upper, or second expression.
 int hashCode()
          Override of hashCode method.
 void setExpression(org.opengis.filter.expression.Expression expression)
          Sets the expression or middle value.
 void setLowerBoundary(org.opengis.filter.expression.Expression lowerBounds)
          Sets the left,lower, or first expression.
 void setUpperBoundary(org.opengis.filter.expression.Expression upperBounds)
          Sets the right,upper, or second expression.
 java.lang.String toString()
          Returns a string representation of this filter.
 
Methods inherited from class org.geotools.filter.CompareFilterImpl
addLeftValue, addRightValue, compare, getLeftValue, getRightValue, setExpression1, setExpression2
 
Methods inherited from class org.geotools.filter.BinaryComparisonAbstract
and, getExpression1, getExpression2, not, or
 
Methods inherited from class org.geotools.filter.AbstractFilter
accept, contains, evaluate, getFilterType, isCompareFilter, isGeometryDistanceFilter, isGeometryFilter, isLogicFilter, isMathFilter, isSimpleFilter
 
Methods inherited from class org.geotools.filter.FilterAbstract
accepts, comparable, eval, eval
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.geotools.filter.BetweenFilter
contains, getExpression1, getExpression2, setExpression1, setExpression2
 
Methods inherited from interface org.geotools.filter.CompareFilter
addLeftValue, addRightValue, getLeftValue, getRightValue
 
Methods inherited from interface org.geotools.filter.Filter
accept, and, getFilterType, not, or
 
Methods inherited from interface org.opengis.filter.Filter
evaluate
 

Field Detail

middleValue

protected org.opengis.filter.expression.Expression middleValue
The 'middle' value, which must be an attribute expression.

Constructor Detail

BetweenFilterImpl

protected BetweenFilterImpl(FilterFactory factory)

BetweenFilterImpl

protected BetweenFilterImpl()
                     throws IllegalFilterException
Constructor which flags the operator as between.

Throws:
IllegalFilterException - Should never happen.
Method Detail

addMiddleValue

public final void addMiddleValue(Expression middleValue)
Deprecated. use setExpression(org.opengis.filter.expression.Expression)

Sets the values to be compared as between the left and right values.

Specified by:
addMiddleValue in interface BetweenFilter
Parameters:
middleValue - The expression to be compared.

setExpression

public void setExpression(org.opengis.filter.expression.Expression expression)
Sets the expression or middle value.

Specified by:
setExpression in interface org.opengis.filter.PropertyIsBetween

getMiddleValue

public final Expression getMiddleValue()
Deprecated. use getExpression()

Gets the middle value of the between.

Specified by:
getMiddleValue in interface BetweenFilter
Returns:
The expression in the middle.

getExpression

public org.opengis.filter.expression.Expression getExpression()
Gets the middle value of the between.

Specified by:
getExpression in interface org.opengis.filter.PropertyIsBetween
Returns:
The expression in the middle.

getLowerBoundary

public org.opengis.filter.expression.Expression getLowerBoundary()
Returns the left,lower, or first expression.

Specified by:
getLowerBoundary in interface org.opengis.filter.PropertyIsBetween

setLowerBoundary

public void setLowerBoundary(org.opengis.filter.expression.Expression lowerBounds)
Sets the left,lower, or first expression.

Specified by:
setLowerBoundary in interface org.opengis.filter.PropertyIsBetween

getUpperBoundary

public org.opengis.filter.expression.Expression getUpperBoundary()
Returns the right,upper, or second expression.

Specified by:
getUpperBoundary in interface org.opengis.filter.PropertyIsBetween

setUpperBoundary

public void setUpperBoundary(org.opengis.filter.expression.Expression upperBounds)
Sets the right,upper, or second expression.

Specified by:
setUpperBoundary in interface org.opengis.filter.PropertyIsBetween

evaluate

public boolean evaluate(Feature feature)
Determines whether or not a given feature is 'inside' this filter.

Specified by:
evaluate in interface Filter
Specified by:
evaluate in class CompareFilterImpl
Parameters:
feature - Specified feature to examine.
Returns:
Flag confirming whether or not this feature is inside the filter.

toString

public java.lang.String toString()
Returns a string representation of this filter.

Overrides:
toString in class CompareFilterImpl
Returns:
String representation of the between filter.

equals

public boolean equals(java.lang.Object oFilter)
Returns true if the passed in object is the same as this filter. Checks to make sure the filter types are the same as well as all three of the values.

Overrides:
equals in class CompareFilterImpl
Parameters:
oFilter - the filter to test for eqaulity.
Returns:
True if the objects are equal.

hashCode

public int hashCode()
Override of hashCode method.

Overrides:
hashCode in class CompareFilterImpl
Returns:
a code to hash this filter by.

accept

public java.lang.Object accept(org.opengis.filter.FilterVisitor visitor,
                               java.lang.Object extraData)
Used by FilterVisitors to perform some action on this filter instance. Typicaly used by Filter decoders, but may also be used by any thing which needs infomration from filter structure. Implementations should always call: visitor.visit(this); It is importatant that this is not left to a parent class unless the parents API is identical.

Specified by:
accept in interface org.opengis.filter.Filter
Specified by:
accept in class CompareFilterImpl
Parameters:
visitor - The visitor which requires access to this filter, the method must call visitor.visit(this);


Copyright © GeoTools. All Rights Reserved.