org.geotools.data.jdbc
Class FilterToSQL

Object
  extended by FilterToSQL
All Implemented Interfaces:
ExpressionVisitor, FilterVisitor
Direct Known Subclasses:
FilterToSQLSDE, H2FilterToSQL, MySQLFilterToSQL, PostgisFilterToSQL, PreparedFilterToSQL, SpatiaLiteFilterToSQL, SQLServerFilterToSQL

public class FilterToSQL
extends Object
implements FilterVisitor, ExpressionVisitor

Encodes a filter into a SQL WHERE statement. It should hopefully be generic enough that any SQL database will work with it. This generic SQL encoder should eventually be able to encode all filters except Geometry Filters. This is because the OGC's SFS for SQL document specifies two ways of doing SQL databases, one with native geometry types and one without. To implement an encoder for one of the two types simply subclass off of this encoder and put in the proper GeometryFilter visit method. Then add the filter types supported to the capabilities by overriding the {createFilterCapabilities() method. This version was ported from the original to support org.opengis.filter type Filters.

Author:
originally by Chris Holmes, TOPP, ported by Saul Farber, MassGIS
TODO:
REVISIT: need to figure out exceptions, we're currently eating io errors, which is bad. Probably need a generic visitor exception.

Nested Class Summary
static interface FilterToSQL.FieldEncoder
          Interface for customizing the encoding of Fields, irrespective of which subclass of FilterToSQL we are using.
 
Field Summary
protected  FilterCapabilities capabilities
          The filter types that this class can encode
protected  Integer currentDimension
          The dimension corresponding to the current binary spatial filter being encoded
protected  GeometryDescriptor currentGeometry
          the geometry descriptor corresponding to the current binary spatial filter being encoded
protected  Integer currentSRID
          the srid corresponding to the current binary spatial filter being encoded
protected  String databaseSchema
          The schema that contains the table the filter being encoded against.
protected  boolean encodingFunction
          flag which indicates that the encoder is currently encoding a function
protected  SimpleFeatureType featureType
          the schmema the encoder will be used to be encode sql for
protected  FilterToSQL.FieldEncoder fieldEncoder
          Current field encoder
protected static FilterFactory filterFactory
          filter factory
protected  boolean inline
          inline flag, controlling whether "WHERE" will prefix the SQL encoded filter
protected static String IO_ERROR
          error message for exceptions
protected  FIDMapper mapper
          Deprecated. use primaryKey
protected  Writer out
          where to write the constructed string from visiting the filters.
protected  PrimaryKey primaryKey
          The primary key corresponding to the table the filter is being encoded against.
 
Constructor Summary
FilterToSQL()
          Default constructor
FilterToSQL(Writer out)
           
 
Method Summary
protected  String cast(String encodedProperty, Class target)
          Gives the opportunity to subclasses to force the property to the desired type.
protected  FilterCapabilities createFilterCapabilities()
          Sets the capabilities of this filter.
 void encode(Expression expression)
          Performs the encoding, sends the encoded sql to the writer passed in.
 void encode(Filter filter)
          Performs the encoding, sends the encoded sql to the writer passed in.
 String encodeToString(Expression expression)
          purely a convenience method.
 String encodeToString(Filter filter)
          purely a convenience method.
 String escapeName(String name)
          Surrounds a name with the SQL escape character.
protected  Object evaluateLiteral(Literal expression, Class target)
           
 FilterCapabilities getCapabilities()
          Describes the capabilities of this encoder.
 String getDatabaseSchema()
           
 FIDMapper getFIDMapper()
          Deprecated. use getPrimaryKey()
protected  String getFunctionName(Function function)
          Maps the function to the native database function name
protected  Expression getParameter(Function function, int idx, boolean mandatory)
          Returns the n-th parameter of a function, throwing an exception if the parameter is not there and has been marked as mandatory
 PrimaryKey getPrimaryKey()
           
 void setCapabilities(FilterCapabilities capabilities)
          Sets the capabilities for the encoder.
 void setDatabaseSchema(String databaseSchema)
           
 void setFeatureType(SimpleFeatureType featureType)
          Sets the featuretype the encoder is encoding sql for.
 void setFIDMapper(FIDMapper mapper)
          Deprecated. use setPrimaryKey(PrimaryKey)
 void setFieldEncoder(FilterToSQL.FieldEncoder fieldEncoder)
          Set custom field encoder
 void setInline(boolean inline)
           
 void setPrimaryKey(PrimaryKey primaryKey)
           
 void setSqlNameEscape(String escape)
          Sets the SQL name escape string.
 void setWriter(Writer out)
          Sets the writer the encoder will write to.
 Object visit(Add expression, Object extraData)
           
 Object visit(After after, Object extraData)
           
 Object visit(And filter, Object extraData)
          Write the SQL for an And filter
 Object visit(AnyInteracts anyInteracts, Object extraData)
           
 Object visit(BBOX filter, Object extraData)
           
 Object visit(Before before, Object extraData)
           
 Object visit(Begins begins, Object extraData)
           
 Object visit(BegunBy begunBy, Object extraData)
           
 Object visit(Beyond filter, Object extraData)
           
protected  Object visit(BinaryExpression expression, String operator, Object extraData)
          Writes the SQL for the Math Expression.
protected  Object visit(BinaryLogicOperator filter, Object extraData)
          Common implementation for BinaryLogicOperator filters.
 Object visit(Contains filter, Object extraData)
           
 Object visit(Crosses filter, Object extraData)
           
 Object visit(Disjoint filter, Object extraData)
           
 Object visit(Divide expression, Object extraData)
           
 Object visit(During during, Object extraData)
           
 Object visit(DWithin filter, Object extraData)
           
 Object visit(EndedBy endedBy, Object extraData)
           
 Object visit(Ends ends, Object extraData)
           
 Object visit(Equals filter, Object extraData)
           
 Object visit(ExcludeFilter filter, Object extraData)
          Visit Filter.EXCLUDE (often used during data structure transformations).
 Object visit(Function function, Object extraData)
          Writes sql for a function expression.
 Object visit(Id filter, Object extraData)
          Encodes an Id filter
 Object visit(IncludeFilter filter, Object extraData)
          Visit Filter.INCLUDE (often used during data structure transformations).
 Object visit(Intersects filter, Object extraData)
           
 Object visit(Literal expression, Object context)
          Export the contents of a Literal Expresion
 Object visit(Meets meets, Object extraData)
           
 Object visit(MetBy metBy, Object extraData)
           
 Object visit(Multiply expression, Object extraData)
           
 Object visit(NilExpression expression, Object extraData)
          Used to visit a Expression.NIL, also called for null where an expression is expected.
 Object visit(Not filter, Object extraData)
          Write the SQL for a Not filter
 Object visit(Or filter, Object extraData)
          Write the SQL for an Or filter
 Object visit(OverlappedBy overlappedBy, Object extraData)
           
 Object visit(Overlaps filter, Object extraData)
           
 Object visit(PropertyIsBetween filter, Object extraData)
          Writes the SQL for the PropertyIsBetween Filter.
 Object visit(PropertyIsEqualTo filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsGreaterThan filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsGreaterThanOrEqualTo filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsLessThan filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsLessThanOrEqualTo filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsLike filter, Object extraData)
          Writes the SQL for the Like Filter.
 Object visit(PropertyIsNil filter, Object extraData)
           
 Object visit(PropertyIsNotEqualTo filter, Object extraData)
          Write the SQL for this kind of filter
 Object visit(PropertyIsNull filter, Object extraData)
          Writes the SQL for the Null Filter.
 Object visit(PropertyName expression, Object extraData)
          Writes the SQL for the attribute Expression.
 Object visit(Subtract expression, Object extraData)
           
 Object visit(TContains contains, Object extraData)
           
 Object visit(TEquals equals, Object extraData)
           
 Object visit(Touches filter, Object extraData)
           
 Object visit(TOverlaps contains, Object extraData)
           
 Object visit(Within filter, Object extraData)
           
protected  void visitBinaryComparisonOperator(BinaryComparisonOperator filter, Object extraData)
          Common implementation for BinaryComparisonOperator filters.
protected  Object visitBinarySpatialOperator(BinarySpatialOperator filter, Expression e1, Expression e2, Object extraData)
          Handles the more general case of two generic expressions.
protected  Object visitBinarySpatialOperator(BinarySpatialOperator filter, Object extraData)
           
protected  Object visitBinarySpatialOperator(BinarySpatialOperator filter, PropertyName property, Literal geometry, boolean swapped, Object extraData)
          Handles the common case of a PropertyName,Literal geometry binary spatial operator.
protected  Object visitBinaryTemporalOperator(BinaryTemporalOperator filter, Expression e1, Expression e2, Object extraData)
          Handles the general case of two expressions in a binary temporal filter.
protected  Object visitBinaryTemporalOperator(BinaryTemporalOperator filter, Object extraData)
           
protected  Object visitBinaryTemporalOperator(BinaryTemporalOperator filter, PropertyName property, Literal temporal, boolean swapped, Object extraData)
          Handles the common case of a PropertyName,Literal geometry binary temporal operator.
protected  void visitLiteralGeometry(Literal expression)
          Subclasses must implement this method in order to encode geometry filters according to the specific database implementation
protected  void visitLiteralTimePeriod(Period expression)
           
 Object visitNullFilter(Object extraData)
          Encodes a null filter value.
protected  void writeLiteral(Object literal)
          Writes out a non null, non geometry literal.
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IO_ERROR

protected static final String IO_ERROR
error message for exceptions

See Also:
Constant Field Values

filterFactory

protected static FilterFactory filterFactory
filter factory


capabilities

protected FilterCapabilities capabilities
The filter types that this class can encode


out

protected Writer out
where to write the constructed string from visiting the filters.


mapper

protected FIDMapper mapper
Deprecated. use primaryKey
the fid mapper used to encode the fid filters


primaryKey

protected PrimaryKey primaryKey
The primary key corresponding to the table the filter is being encoded against.


databaseSchema

protected String databaseSchema
The schema that contains the table the filter being encoded against.


featureType

protected SimpleFeatureType featureType
the schmema the encoder will be used to be encode sql for


encodingFunction

protected boolean encodingFunction
flag which indicates that the encoder is currently encoding a function


currentGeometry

protected GeometryDescriptor currentGeometry
the geometry descriptor corresponding to the current binary spatial filter being encoded


currentSRID

protected Integer currentSRID
the srid corresponding to the current binary spatial filter being encoded


currentDimension

protected Integer currentDimension
The dimension corresponding to the current binary spatial filter being encoded


inline

protected boolean inline
inline flag, controlling whether "WHERE" will prefix the SQL encoded filter


fieldEncoder

protected FilterToSQL.FieldEncoder fieldEncoder
Current field encoder

Constructor Detail

FilterToSQL

public FilterToSQL()
Default constructor


FilterToSQL

public FilterToSQL(Writer out)
Method Detail

setWriter

public void setWriter(Writer out)
Sets the writer the encoder will write to.


setInline

public void setInline(boolean inline)

encode

public void encode(Filter filter)
            throws FilterToSQLException
Performs the encoding, sends the encoded sql to the writer passed in.

Parameters:
filter - the Filter to be encoded.
Throws:
OpenGISFilterToOpenGISFilterToSQLEncoderException - If filter type not supported, or if there were io problems.
FilterToSQLException

encodeToString

public String encodeToString(Filter filter)
                      throws FilterToSQLException
purely a convenience method. Equivalent to: StringWriter out = new StringWriter(); new FilterToSQL(out).encode(filter); out.getBuffer().toString();

Parameters:
filter -
Returns:
a string representing the filter encoded to SQL.
Throws:
FilterToSQLException

encode

public void encode(Expression expression)
            throws FilterToSQLException
Performs the encoding, sends the encoded sql to the writer passed in.

Parameters:
filter - the Filter to be encoded.
Throws:
OpenGISFilterToOpenGISFilterToSQLEncoderException - If filter type not supported, or if there were io problems.
FilterToSQLException

encodeToString

public String encodeToString(Expression expression)
                      throws FilterToSQLException
purely a convenience method. Equivalent to: StringWriter out = new StringWriter(); new FilterToSQL(out).encode(filter); out.getBuffer().toString();

Parameters:
filter -
Returns:
a string representing the filter encoded to SQL.
Throws:
FilterToSQLException

setFeatureType

public void setFeatureType(SimpleFeatureType featureType)
Sets the featuretype the encoder is encoding sql for.

This is used for context for attribute expressions when encoding to sql.

Parameters:
featureType -

setFIDMapper

public void setFIDMapper(FIDMapper mapper)
Deprecated. use setPrimaryKey(PrimaryKey)

Sets the FIDMapper that will be used in subsequente visit calls. There must be a FIDMapper in order to invoke the FIDFilter encoder.

Parameters:
mapper -

getFIDMapper

public FIDMapper getFIDMapper()
Deprecated. use getPrimaryKey()


getPrimaryKey

public PrimaryKey getPrimaryKey()

setPrimaryKey

public void setPrimaryKey(PrimaryKey primaryKey)

getDatabaseSchema

public String getDatabaseSchema()

setDatabaseSchema

public void setDatabaseSchema(String databaseSchema)

createFilterCapabilities

protected FilterCapabilities createFilterCapabilities()
Sets the capabilities of this filter.

Returns:
FilterCapabilities for this Filter

getCapabilities

public final FilterCapabilities getCapabilities()
Describes the capabilities of this encoder.

Performs lazy creation of capabilities.

If you're subclassing this class, override createFilterCapabilities to declare which filtercapabilities you support. Don't use this method.

Returns:
The capabilities supported by this encoder.

setCapabilities

public void setCapabilities(FilterCapabilities capabilities)
Sets the capabilities for the encoder.


visit

public Object visit(ExcludeFilter filter,
                    Object extraData)
Description copied from interface: FilterVisitor
Visit Filter.EXCLUDE (often used during data structure transformations).

Specified by:
visit in interface FilterVisitor
Parameters:
the - filter to be visited
Returns:
subclass supplied
See Also:
FilterVisitor#visit(ExcludeFilter, Object)} Writes the SQL for the IncludeFilter by writing "FALSE".

visit

public Object visit(IncludeFilter filter,
                    Object extraData)
Description copied from interface: FilterVisitor
Visit Filter.INCLUDE (often used during data structure transformations).

Specified by:
visit in interface FilterVisitor
Parameters:
the - filter to be visited
Returns:
subclass supplied
See Also:
FilterVisitor#visit(IncludeFilter, Object)} Writes the SQL for the IncludeFilter by writing "TRUE".

visit

public Object visit(PropertyIsBetween filter,
                    Object extraData)
             throws RuntimeException
Writes the SQL for the PropertyIsBetween Filter.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the Filter to be visited.
Throws:
RuntimeException - for io exception with writer

visit

public Object visit(PropertyIsLike filter,
                    Object extraData)
Writes the SQL for the Like Filter. Assumes the current java implemented wildcards for the Like Filter: . for multi and .? for single. And replaces them with the SQL % and _, respectively.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the Like Filter to be visited.
TODO:
REVISIT: Need to think through the escape char, so it works right when Java uses one, and escapes correctly with an '_'.

visit

public Object visit(And filter,
                    Object extraData)
Write the SQL for an And filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(Not filter,
                    Object extraData)
Write the SQL for a Not filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(Or filter,
                    Object extraData)
Write the SQL for an Or filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

protected Object visit(BinaryLogicOperator filter,
                       Object extraData)
Common implementation for BinaryLogicOperator filters. This way they're all handled centrally.

Parameters:
filter - the logic statement to be turned into SQL.
extraData - extra filter data. Not modified directly by this method.

visit

public Object visit(PropertyIsEqualTo filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(PropertyIsGreaterThanOrEqualTo filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(PropertyIsGreaterThan filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(PropertyIsLessThan filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(PropertyIsLessThanOrEqualTo filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visit

public Object visit(PropertyIsNotEqualTo filter,
                    Object extraData)
Write the SQL for this kind of filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the filter to visit
extraData - extra data (unused by this method)

visitBinaryComparisonOperator

protected void visitBinaryComparisonOperator(BinaryComparisonOperator filter,
                                             Object extraData)
                                      throws RuntimeException
Common implementation for BinaryComparisonOperator filters. This way they're all handled centrally. DJB: note, postgis overwrites this implementation because of the way null is handled. This is for filters and filters are handled. They will come here with "property = null". NOTE: SELECT * FROM WHERE isnull; -- postgresql SELECT * FROM
WHERE isnull(); -- oracle???

Parameters:
filter - the comparison to be turned into SQL.
Throws:
RuntimeException - for io exception with writer

visit

public Object visit(PropertyIsNull filter,
                    Object extraData)
             throws RuntimeException
Writes the SQL for the Null Filter.

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the null filter to be written to SQL.
Throws:
RuntimeException - for io exception with writer

visit

public Object visit(PropertyIsNil filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Id filter,
                    Object extraData)
Encodes an Id filter

Specified by:
visit in interface FilterVisitor
Parameters:
filter - the
Throws:
RuntimeException - If there's a problem writing output

visit

public Object visit(BBOX filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Beyond filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Contains filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Crosses filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Disjoint filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(DWithin filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Equals filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Intersects filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Overlaps filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Touches filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Within filter,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visitBinarySpatialOperator

protected Object visitBinarySpatialOperator(BinarySpatialOperator filter,
                                            Object extraData)

visitBinarySpatialOperator

protected Object visitBinarySpatialOperator(BinarySpatialOperator filter,
                                            PropertyName property,
                                            Literal geometry,
                                            boolean swapped,
                                            Object extraData)
Handles the common case of a PropertyName,Literal geometry binary spatial operator.


visitBinarySpatialOperator

protected Object visitBinarySpatialOperator(BinarySpatialOperator filter,
                                            Expression e1,
                                            Expression e2,
                                            Object extraData)
Handles the more general case of two generic expressions.

The most common case is two PropertyName expressions, which happens during a spatial join.


visitBinaryTemporalOperator

protected Object visitBinaryTemporalOperator(BinaryTemporalOperator filter,
                                             Object extraData)

visitBinaryTemporalOperator

protected Object visitBinaryTemporalOperator(BinaryTemporalOperator filter,
                                             PropertyName property,
                                             Literal temporal,
                                             boolean swapped,
                                             Object extraData)
Handles the common case of a PropertyName,Literal geometry binary temporal operator.

Subclasses should override if they support more temporal operators than what is handled in this base class.


visitBinaryTemporalOperator

protected Object visitBinaryTemporalOperator(BinaryTemporalOperator filter,
                                             Expression e1,
                                             Expression e2,
                                             Object extraData)
Handles the general case of two expressions in a binary temporal filter.

Subclasses should override if they support more temporal operators than what is handled in this base class.


visitNullFilter

public Object visitNullFilter(Object extraData)
Encodes a null filter value. The current implementation does exactly nothing.

Specified by:
visitNullFilter in interface FilterVisitor
Parameters:
extraData - extra data to be used to evaluate the filter
Returns:
the untouched extraData parameter

visit

public Object visit(PropertyName expression,
                    Object extraData)
             throws RuntimeException
Writes the SQL for the attribute Expression.

Specified by:
visit in interface ExpressionVisitor
Parameters:
expression - the attribute to turn to SQL.
Throws:
RuntimeException - for io exception with writer

cast

protected String cast(String encodedProperty,
                      Class target)
               throws IOException
Gives the opportunity to subclasses to force the property to the desired type. By default it simply writes out the property as-is (the property must be already escaped).

Parameters:
encodedProperty -
target -
Throws:
IOException

visit

public Object visit(Literal expression,
                    Object context)
             throws RuntimeException
Export the contents of a Literal Expresion

Specified by:
visit in interface ExpressionVisitor
Parameters:
expression - the Literal to export
Throws:
RuntimeException - for io exception with writer

evaluateLiteral

protected Object evaluateLiteral(Literal expression,
                                 Class target)

writeLiteral

protected void writeLiteral(Object literal)
                     throws IOException
Writes out a non null, non geometry literal. The base class properly handles null, numeric and booleans (true|false), and turns everything else into a string. Subclasses are expected to override this shall they need a different treatment (e.g. for dates)

Parameters:
literal -
Throws:
IOException

visitLiteralGeometry

protected void visitLiteralGeometry(Literal expression)
                             throws IOException
Subclasses must implement this method in order to encode geometry filters according to the specific database implementation

Parameters:
expression -
Throws:
IOException - DOCUMENT ME!
RuntimeException - DOCUMENT ME!

visitLiteralTimePeriod

protected void visitLiteralTimePeriod(Period expression)

visit

public Object visit(Add expression,
                    Object extraData)
Specified by:
visit in interface ExpressionVisitor

visit

public Object visit(Divide expression,
                    Object extraData)
Specified by:
visit in interface ExpressionVisitor

visit

public Object visit(Multiply expression,
                    Object extraData)
Specified by:
visit in interface ExpressionVisitor

visit

public Object visit(Subtract expression,
                    Object extraData)
Specified by:
visit in interface ExpressionVisitor

visit

protected Object visit(BinaryExpression expression,
                       String operator,
                       Object extraData)
                throws RuntimeException
Writes the SQL for the Math Expression.

Parameters:
expression - the Math phrase to be written.
operator - The operator of the expression.
Throws:
RuntimeException - for io problems

visit

public Object visit(Function function,
                    Object extraData)
             throws RuntimeException
Writes sql for a function expression. By default it will write the call by using the same arguments provided to the GeoTools function, subclasses should override on a case by case basis if this behavior is not the desired one.

Specified by:
visit in interface ExpressionVisitor
Parameters:
expression - a function expression
Throws:
RuntimeException - If an IO error occurs.
See Also:
getFunctionName(Function)

getParameter

protected Expression getParameter(Function function,
                                  int idx,
                                  boolean mandatory)
Returns the n-th parameter of a function, throwing an exception if the parameter is not there and has been marked as mandatory

Returns:

getFunctionName

protected String getFunctionName(Function function)
Maps the function to the native database function name

Parameters:
function -
Returns:

visit

public Object visit(NilExpression expression,
                    Object extraData)
Description copied from interface: ExpressionVisitor
Used to visit a Expression.NIL, also called for null where an expression is expected.

This is particularly useful when doing data transformations, as an example when using a StyleSymbolizer Expression.NIL can be used to represent the default stroke color.

Specified by:
visit in interface ExpressionVisitor
Returns:
implementation specific

visit

public Object visit(After after,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(AnyInteracts anyInteracts,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Before before,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Begins begins,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(BegunBy begunBy,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(During during,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(EndedBy endedBy,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Ends ends,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(Meets meets,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(MetBy metBy,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(OverlappedBy overlappedBy,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(TContains contains,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(TEquals equals,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

visit

public Object visit(TOverlaps contains,
                    Object extraData)
Specified by:
visit in interface FilterVisitor

setSqlNameEscape

public void setSqlNameEscape(String escape)
Sets the SQL name escape string.

The value of this string is prefixed and appended to table schema names, table names and column names in an SQL statement to support mixed-case and non-English names. Without this, the DBMS may assume a mixed-case name in the query should be treated as upper-case and an SQLCODE of -204 or 206 may result if the name is not found.

Typically this is the double-quote character, ", but may not be for all databases.

For example, consider the following query:

SELECT Geom FROM Spear.ArchSites May be interpreted by the database as: SELECT GEOM FROM SPEAR.ARCHSITES If the column and table names were actually created using mixed-case, the query needs to be specified as: SELECT "Geom" from "Spear"."ArchSites"

Parameters:
escape - the character to be used to escape database names

escapeName

public String escapeName(String name)
Surrounds a name with the SQL escape character.

Parameters:
name -
Returns:
DOCUMENT ME!

setFieldEncoder

public void setFieldEncoder(FilterToSQL.FieldEncoder fieldEncoder)
Set custom field encoder

Parameters:
fieldEncoder - the field encoder


Copyright © 1996-2014 Geotools. All Rights Reserved.