org.geotools.data.complex.filter
Class UnmappingFilterVisitor

java.lang.Object
  extended by org.geotools.data.complex.filter.UnmappingFilterVisitor
All Implemented Interfaces:
org.opengis.filter.expression.ExpressionVisitor, org.opengis.filter.FilterVisitor
Direct Known Subclasses:
XmlUnmappingFilterVisitor

public class UnmappingFilterVisitor
extends java.lang.Object
implements org.opengis.filter.FilterVisitor, org.opengis.filter.expression.ExpressionVisitor

A Filter visitor that traverse a Filter or Expression made against a complex FeatureType, and that uses the attribute and type mapping information given by a FeatureTypeMapping object to produce an equivalent Filter that operates against the original FeatureType.

Usage:

 <code>
    Filter filterOnTargetType = ...
    FeatureTypeMappings schemaMapping = ....
                       
    UnMappingFilterVisitor visitor = new UnmappingFilterVisitor(schemaMapping);
    Filter filterOnSourceType = (Filter)filterOnTargetType.accept(visitor, null);
    
 </code>
 

Since:
2.4
Version:
$Id: UnmappingFilterVisitor.java 35836 2010-07-05 07:49:35Z ang05a $
Author:
Gabriel Roldan, Axios Engineering, Rini Angreani, Curtin University of Technology

Constructor Summary
UnmappingFilterVisitor(FeatureTypeMapping mappings)
          visit(*Expression) holds the unmapped expression here.
 
Method Summary
protected  java.util.List<org.opengis.filter.expression.Expression> findMappingsFor(FeatureTypeMapping mappings, XPath.StepList propertyName)
          Looks up for attribute mappings matching the xpath expression propertyName.
 java.lang.Object visit(org.opengis.filter.expression.Add expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.And filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.BBOX filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Beyond filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Contains filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Crosses filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Disjoint filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.Divide expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.DWithin filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Equals filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.ExcludeFilter filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.Function function, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.Id filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.IncludeFilter filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Intersects filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.Literal expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.Multiply expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.NilExpression expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.Not filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.Or filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Overlaps filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsBetween filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsEqualTo filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsGreaterThan filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsGreaterThanOrEqualTo filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsLessThan filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsLessThanOrEqualTo filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsLike filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsNotEqualTo filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.PropertyIsNull filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.PropertyName expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.expression.Subtract expr, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Touches filter, java.lang.Object arg1)
           
 java.lang.Object visit(org.opengis.filter.spatial.Within filter, java.lang.Object arg1)
           
 org.opengis.filter.expression.Expression[][] visitBinaryComparisonOperator(org.opengis.filter.BinaryComparisonOperator filter)
          Returns a CompareFilter of the same type than filter, but built on the unmapped expressions pointing to the surrogate type attributes.
 org.opengis.filter.expression.Expression[][] visitBinaryExpression(org.opengis.filter.expression.BinaryExpression expression)
           
 java.util.List visitBinaryLogicOp(org.opengis.filter.BinaryLogicOperator filter)
           
 org.opengis.filter.expression.Expression[][] visitBinarySpatialOp(org.opengis.filter.spatial.BinarySpatialOperator filter)
           
 java.lang.Object visitNullFilter(java.lang.Object arg0)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UnmappingFilterVisitor

public UnmappingFilterVisitor(FeatureTypeMapping mappings)
visit(*Expression) holds the unmapped expression here. Package visible just for unit tests

Method Detail

visitBinaryComparisonOperator

public org.opengis.filter.expression.Expression[][] visitBinaryComparisonOperator(org.opengis.filter.BinaryComparisonOperator filter)
Returns a CompareFilter of the same type than filter, but built on the unmapped expressions pointing to the surrogate type attributes.

Returns:
the scalar product of the evaluation of both expressions

visitBinarySpatialOp

public org.opengis.filter.expression.Expression[][] visitBinarySpatialOp(org.opengis.filter.spatial.BinarySpatialOperator filter)

visitBinaryLogicOp

public java.util.List visitBinaryLogicOp(org.opengis.filter.BinaryLogicOperator filter)

visitBinaryExpression

public org.opengis.filter.expression.Expression[][] visitBinaryExpression(org.opengis.filter.expression.BinaryExpression expression)

visit

public java.lang.Object visit(org.opengis.filter.ExcludeFilter filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.IncludeFilter filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.And filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.Id filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.Not filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.Or filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsBetween filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsEqualTo filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsNotEqualTo filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsGreaterThan filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsGreaterThanOrEqualTo filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsLessThan filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsLessThanOrEqualTo filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsLike filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.PropertyIsNull filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.BBOX filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Beyond filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Contains filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Crosses filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Disjoint filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.DWithin filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Equals filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Intersects filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Overlaps filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Touches filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.spatial.Within filter,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.FilterVisitor

visitNullFilter

public java.lang.Object visitNullFilter(java.lang.Object arg0)
Specified by:
visitNullFilter in interface org.opengis.filter.FilterVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.NilExpression expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.Add expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.Divide expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.Function function,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.Literal expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.Multiply expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

visit

public java.lang.Object visit(org.opengis.filter.expression.PropertyName expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor

findMappingsFor

protected java.util.List<org.opengis.filter.expression.Expression> findMappingsFor(FeatureTypeMapping mappings,
                                                                                   XPath.StepList propertyName)
Looks up for attribute mappings matching the xpath expression propertyName.

If any step in propertyName has index greater than 1, any mapping for the same property applies, regardless of the mapping. For example, if there are mappings for gml:name[1], gml:name[2] and gml:name[3], but propertyName is just gml:name, all three mappings apply.

Parameters:
mappings - Feature type mapping to search for
simplifiedSteps -
Returns:

visit

public java.lang.Object visit(org.opengis.filter.expression.Subtract expr,
                              java.lang.Object arg1)
Specified by:
visit in interface org.opengis.filter.expression.ExpressionVisitor


Copyright © 1996-2010 Geotools. All Rights Reserved.