org.geotools.filter
Class BetweenFilterImpl

java.lang.Object
  extended byorg.geotools.filter.AbstractFilter
      extended byorg.geotools.filter.AbstractFilterImpl
          extended byorg.geotools.filter.CompareFilterImpl
              extended byorg.geotools.filter.BetweenFilterImpl
All Implemented Interfaces:
BetweenFilter, CompareFilter, Filter, FilterType

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,v 1.8 2004/03/13 06:25:31 cholmesny Exp $
Author:
Rob Hranac, TOPP
Task:
REVISIT: I think AbstractFilter right now does not consider between a math filter. ch

Field Summary
protected  Expression middleValue
          The 'middle' value, which must be an attribute expression.
 
Fields inherited from class org.geotools.filter.CompareFilterImpl
leftValue, rightValue
 
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.
 
Method Summary
 void accept(FilterVisitor visitor)
          Used by FilterVisitors to perform some action on this filter instance.
 void addMiddleValue(Expression middleValue)
          Sets the values to be compared as between the left and right values.
 boolean contains(Feature feature)
          Determines whether or not a given feature is 'inside' this filter.
 boolean equals(java.lang.Object oFilter)
          Returns true if the passed in object is the same as this filter.
 Expression getMiddleValue()
          Gets the middle value of the between.
 int hashCode()
          Override of hashCode method.
 java.lang.String toString()
          Returns a string representation of this filter.
 
Methods inherited from class org.geotools.filter.CompareFilterImpl
addLeftValue, addRightValue, getLeftValue, getRightValue
 
Methods inherited from class org.geotools.filter.AbstractFilterImpl
and, not, or
 
Methods inherited from class org.geotools.filter.AbstractFilter
getFilterType, isCompareFilter, isGeometryDistanceFilter, isGeometryFilter, isLogicFilter, isMathFilter, isSimpleFilter
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.geotools.filter.CompareFilter
addLeftValue, addRightValue, getLeftValue, getRightValue
 
Methods inherited from interface org.geotools.filter.Filter
and, getFilterType, not, or
 

Field Detail

middleValue

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

Constructor Detail

BetweenFilterImpl

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

Throws:
IllegalFilterException - Should never happen.
Method Detail

addMiddleValue

public void addMiddleValue(Expression middleValue)
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.

getMiddleValue

public Expression getMiddleValue()
Gets the middle value of the between.

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

contains

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

Specified by:
contains in interface BetweenFilter
Overrides:
contains 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 void accept(FilterVisitor visitor)
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 Filter
Overrides:
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.