org.geotools.xml.filter
Class FilterEncodingPreProcessor

Object
  extended by FilterEncodingPreProcessor
All Implemented Interfaces:
FilterVisitor, FilterVisitor2

public class FilterEncodingPreProcessor
extends Object
implements FilterVisitor, FilterVisitor2

Prepares a filter for xml encoded for interoperability with another system. It will behave differently depeding on the compliance level chosen. A new request will have to be made and the features will have to be tested again on the client side if there are any FidFilters in the filter. Consider the following to understand why: and { nullFilter or{ fidFilter nullFilter } } for strict it would throw an exception, for low it would be left alone, but for Medium it would end up as: and{ nullFilter nullFilter } and getFids() would return the fids in the fidFilter. So the final filter would (this is not standard but a common implementation) return the results of the and filter as well as all the features that match the fids. Which is more than the original filter would accept. The XML Document writer can operate at different levels of compliance. The geotools level is extremely flexible and forgiving.

All NOT(FidFilter) are changed to Filter.INCLUDE. So make sure that the filter is processed again on the client with the original filter

For a description of the difference Compliance levels that can be used see

Author:
Jesse
Module:
modules/library/xml (gt-xml.jar)

Constructor Summary
FilterEncodingPreProcessor(Integer complianceLevel)
           
 
Method Summary
 FidFilter getFidFilter()
          Gets the fid filter that contains all the fids.
 Filter getFilter()
          Returns the filter that can be encoded.
 boolean requiresPostProcessing()
          Returns true if the filter was one where the request to the server is more general than the actual filter.
 void visit(AttributeExpression expression)
          Called when accept is called on an attribute expression.
 void visit(BetweenFilter filter)
          Called when accept is called on a BetweenFilter.
 void visit(CompareFilter filter)
          Called when accept is called on a Compare Filter.
 void visit(ExcludeFilter filter)
           
 void visit(Expression expression)
          This should never be called.
 void visit(FidFilter filter)
          Called when accept is called on a Fid Filter.
 void visit(Filter filter)
          Called when accept is called on an AbstractFilter.
 void visit(FunctionExpression expression)
          Called when accept is called on an function expression.
 void visit(GeometryFilter filter)
          Called when accept is called on a Geometry Filter.
 void visit(IncludeFilter filter)
           
 void visit(LikeFilter filter)
          Called when accept is called on a Like Filter.
 void visit(LiteralExpression expression)
          Called when accept is called on a literal expression.
 void visit(LogicFilter filter)
          Called when accept is called on a Logic Filter.
 void visit(MathExpression expression)
          Called when accept is called on an math expression.
 void visit(NullFilter filter)
          Called when accept is called on a Null Filter.
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FilterEncodingPreProcessor

public FilterEncodingPreProcessor(Integer complianceLevel)
Method Detail

getFidFilter

public FidFilter getFidFilter()
Gets the fid filter that contains all the fids.

Returns:
the fid filter that contains all the fids.

getFilter

public Filter getFilter()
Returns the filter that can be encoded.

Returns:
the filter that can be encoded.

visit

public void visit(Filter filter)
Description copied from interface: FilterVisitor
Called when accept is called on an AbstractFilter. As it is imposible to create an instance of AbstractFilter this should never happen. If it does it means that a subclass of AbstractFilter has failed to implement accept(FilterVisitor) correctly. Implementers of this method should probaly log a warning.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit

visit

public void visit(BetweenFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a BetweenFilter. Implementers will want to access the left, middle and right expresions.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit

visit

public void visit(CompareFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Compare Filter. Implementers will want to access the left and right expresions.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit

visit

public void visit(GeometryFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Geometry Filter. Implementers will want to access the left and right geometries.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit

visit

public void visit(LikeFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Like Filter. Implementers will want to access the pattern and value.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit.

visit

public void visit(LogicFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Logic Filter. Implementers will want to access the sub filters.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit.

visit

public void visit(NullFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Null Filter. Implementers will want to access the null check.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit.

visit

public void visit(FidFilter filter)
Description copied from interface: FilterVisitor
Called when accept is called on a Fid Filter. Implementers will want to access the fids.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - The filter to visit.

visit

public void visit(AttributeExpression expression)
Description copied from interface: FilterVisitor
Called when accept is called on an attribute expression. Implementors will want to access the attribute.

Specified by:
visit in interface FilterVisitor
Parameters:
expression - The expression to visit.

visit

public void visit(Expression expression)
Description copied from interface: FilterVisitor
This should never be called. This can only happen if a subclass of DefaultExpression fails to implement its own version of accept(FilterVisitor);

Specified by:
visit in interface FilterVisitor
Parameters:
expression - the expression to visit.

visit

public void visit(LiteralExpression expression)
Description copied from interface: FilterVisitor
Called when accept is called on a literal expression. Implementors will want to access the literal.

Specified by:
visit in interface FilterVisitor
Parameters:
expression - The expression to visit.

visit

public void visit(MathExpression expression)
Description copied from interface: FilterVisitor
Called when accept is called on an math expression.

Specified by:
visit in interface FilterVisitor
Parameters:
expression - The expression to visit.

visit

public void visit(FunctionExpression expression)
Description copied from interface: FilterVisitor
Called when accept is called on an function expression.

Specified by:
visit in interface FilterVisitor
Parameters:
expression - The expression to visit.

visit

public void visit(IncludeFilter filter)
Specified by:
visit in interface FilterVisitor2

visit

public void visit(ExcludeFilter filter)
Specified by:
visit in interface FilterVisitor2

requiresPostProcessing

public boolean requiresPostProcessing()
Returns true if the filter was one where the request to the server is more general than the actual filter. See XMLHandlerHints.VALUE_FILTER_COMPLIANCE_MEDIUM and example of when this can happen.

Returns:
true if the filter was one where the request to the server is more general than the actual filter.


Copyright © 1996-2010 Geotools. All Rights Reserved.