org.geotools.filter
Class LogicFilterImpl

Object
  extended by FilterAbstract
      extended by AbstractFilter
          extended by BinaryLogicAbstract
              extended by LogicFilterImpl
All Implemented Interfaces:
FilterType, LogicFilter, BinaryLogicOperator, Filter
Direct Known Subclasses:
AndImpl, NotImpl, OrImpl

public abstract class LogicFilterImpl
extends BinaryLogicAbstract
implements LogicFilter

Defines a logic filter (the only filter type that contains other filters). This filter holds one or more filters together and relates them logically with an internally defined type (AND, OR, NOT).

Author:
Rob Hranac, TOPP
Module:
modules/library/main (gt-main.jar)

Field Summary
 
Fields inherited from class BinaryLogicAbstract
children
 
Fields inherited from class AbstractFilter
filterType, permissiveConstruction
 
Fields inherited from class FilterAbstract
factory
 
Fields inherited from interface Filter
ALL, NONE
 
Fields inherited from interface 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
 
Fields inherited from interface Filter
EXCLUDE, INCLUDE
 
Fields inherited from interface Filter
EXCLUDE, INCLUDE
 
Constructor Summary
protected LogicFilterImpl(FilterFactory factory)
           
protected LogicFilterImpl(FilterFactory factory, List children)
           
protected LogicFilterImpl(Filter filter1, Filter filter2, short filterType)
          Convenience constructor to create an AND/OR logic filter.
protected LogicFilterImpl(Filter filter, short filterType)
          Convenience constructor to create a NOT logic filter.
protected LogicFilterImpl(short filterType)
          Deprecated. Consructing with type constants should be replaced with an actual java type.
 
Method Summary
abstract  Object accept(FilterVisitor visitor, Object extraData)
          Used by FilterVisitors to perform some action on this filter instance.
 void addFilter(Filter filter)
          Adds a sub filter to this filter.
 Filter and(Filter filter)
          Implements a logical AND with this filter and returns the merged filter.
 boolean equals(Object obj)
          Compares this filter to the specified object.
 Iterator getFilterIterator()
          Gets an iterator for the filters held by this logic filter.
 int hashCode()
          Override of hashCode method.
 Filter not()
          Implements a logical NOT with this filter and returns the merged filter.
 Filter or(Filter filter)
          Implements a logical OR with this filter and returns the merged filter.
 String toString()
          Returns a string representation of this filter.
 
Methods inherited from class BinaryLogicAbstract
getChildren, setChildren
 
Methods inherited from class AbstractFilter
accept, contains, getFilterType, isCompareFilter, isGeometryDistanceFilter, isGeometryFilter, isLogicFilter, isMathFilter, isSimpleFilter
 
Methods inherited from class FilterAbstract
accepts, eval, eval, eval, evaluate
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface LogicFilter
contains
 
Methods inherited from interface Filter
accept, evaluate, getFilterType
 
Methods inherited from interface Filter
evaluate
 
Methods inherited from interface BinaryLogicOperator
getChildren
 
Methods inherited from interface Filter
evaluate
 

Constructor Detail

LogicFilterImpl

protected LogicFilterImpl(FilterFactory factory)

LogicFilterImpl

protected LogicFilterImpl(FilterFactory factory,
                          List children)

LogicFilterImpl

protected LogicFilterImpl(short filterType)
                   throws IllegalFilterException
Deprecated. Consructing with type constants should be replaced with an actual java type.

Constructor with type (must be valid).

Parameters:
filterType - The final relation between all sub filters.
Throws:
IllegalFilterException - If the filtertype is not a logic type.

LogicFilterImpl

protected LogicFilterImpl(Filter filter,
                          short filterType)
                   throws IllegalFilterException
Convenience constructor to create a NOT logic filter.

Parameters:
filter - The initial sub filter.
filterType - The final relation between all sub filters.
Throws:
IllegalFilterException - Does not conform to logic filter structure

LogicFilterImpl

protected LogicFilterImpl(Filter filter1,
                          Filter filter2,
                          short filterType)
                   throws IllegalFilterException
Convenience constructor to create an AND/OR logic filter.

Parameters:
filter1 - An initial sub filter.
filter2 - An initial sub filter.
filterType - The final relation between all sub filters.
Throws:
IllegalFilterException - Does not conform to logic filter structure
Method Detail

addFilter

public final void addFilter(Filter filter)
                     throws IllegalFilterException
Adds a sub filter to this filter.

Specified by:
addFilter in interface LogicFilter
Parameters:
filter - Specified filter to add to the sub filter list.
Throws:
IllegalFilterException - Does not conform to logic filter structure
TODO:
REVISIT: make all filters immutable. This should return a new filter.

getFilterIterator

public Iterator getFilterIterator()
Gets an iterator for the filters held by this logic filter.

Specified by:
getFilterIterator in interface LogicFilter
Returns:
the iterator of the filters.

or

public Filter or(Filter filter)
Implements a logical OR with this filter and returns the merged filter.

Overrides:
or in class BinaryLogicAbstract
Parameters:
filter - Parent of the filter: must implement GMLHandlerGeometry.
Returns:
ORed filter.
TODO:
REVISIT: make immutable, should not modify the subfilters of the filter being ored.

and

public Filter and(Filter filter)
Implements a logical AND with this filter and returns the merged filter.

Overrides:
and in class BinaryLogicAbstract
Parameters:
filter - Parent of the filter: must implement GMLHandlerGeometry.
Returns:
ANDed filter.
TODO:
REVISIT: make immutable, should not modify the subfilters of the filter being anded.

not

public Filter not()
Implements a logical NOT with this filter and returns the merged filter.

Overrides:
not in class BinaryLogicAbstract
Returns:
NOTed filter.

toString

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

Overrides:
toString in class Object
Returns:
String representation of the logic filter.

equals

public boolean equals(Object obj)
Compares this filter to the specified object. Returns true if the passed in object is the same as this filter. Checks to make sure the filter types are the same, and then checks that the subFilters lists are the same size and that one list contains the other. This means that logic filters with different internal orders of subfilters are equal.

Overrides:
equals in class Object
Parameters:
obj - - the object to compare this LogicFilter against.
Returns:
true if specified object is equal to this filter; false otherwise.

hashCode

public int hashCode()
Override of hashCode method.

Overrides:
hashCode in class Object
Returns:
a code to hash this object by.

accept

public abstract Object accept(FilterVisitor visitor,
                              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 Filter
Overrides:
accept in class FilterAbstract
Parameters:
visitor - The visitor which requires access to this filter, the method must call visitor.visit(this);


Copyright © 1996-2010 Geotools. All Rights Reserved.