|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectFilterToSQL
public class FilterToSQL
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.
Field Summary | |
---|---|
protected FilterCapabilities |
capabilities
The filter types that this class can encode |
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 static String |
IO_ERROR
error message for exceptions |
protected FIDMapper |
mapper
the fid mapper used to encode the fid filters |
protected Writer |
out
where to write the constructed string from visiting the filters. |
Constructor Summary | |
---|---|
FilterToSQL()
Default constructor |
|
FilterToSQL(Writer out)
|
Method Summary | |
---|---|
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. |
FIDMapper |
getFIDMapper()
|
void |
setCapabilities(FilterCapabilities capabilities)
Sets the capabilities for the encoder. |
void |
setFeatureType(SimpleFeatureType featureType)
Sets the featuretype the encoder is encoding sql for. |
void |
setFIDMapper(FIDMapper mapper)
Sets the FIDMapper that will be used in subsequente visit calls. |
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(And filter,
Object extraData)
Write the SQL for an And filter |
Object |
visit(BBOX filter,
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(DWithin filter,
Object extraData)
|
Object |
visit(Equals filter,
Object extraData)
|
Object |
visit(ExcludeFilter filter,
Object extraData)
|
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)
|
Object |
visit(Intersects filter,
Object extraData)
|
Object |
visit(Literal expression,
Object context)
Export the contents of a Literal Expresion |
Object |
visit(Multiply expression,
Object extraData)
|
Object |
visit(NilExpression expression,
Object extraData)
|
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(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(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(Touches filter,
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,
Object extraData)
|
protected void |
visitLiteralGeometry(Literal expression)
Subclasses must implement this method in order to encode geometry filters according to the specific database implementation |
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 |
---|
protected static final String IO_ERROR
protected FilterCapabilities capabilities
protected Writer out
protected FIDMapper mapper
protected SimpleFeatureType featureType
protected boolean encodingFunction
Constructor Detail |
---|
public FilterToSQL()
public FilterToSQL(Writer out)
Method Detail |
---|
public void setWriter(Writer out)
public void encode(Filter filter) throws FilterToSQLException
filter
- the Filter to be encoded.
OpenGISFilterToOpenGISFilterToSQLEncoderException
- If filter type not supported, or if there
were io problems.
FilterToSQLException
public String encodeToString(Filter filter) throws FilterToSQLException
filter
-
FilterToSQLException
public void encode(Expression expression) throws FilterToSQLException
filter
- the Filter to be encoded.
OpenGISFilterToOpenGISFilterToSQLEncoderException
- If filter type not supported, or if there
were io problems.
FilterToSQLException
public String encodeToString(Expression expression) throws FilterToSQLException
filter
-
FilterToSQLException
public void setFeatureType(SimpleFeatureType featureType)
This is used for context for attribute expressions when encoding to sql.
featureType
- public void setFIDMapper(FIDMapper mapper)
mapper
- public FIDMapper getFIDMapper()
protected FilterCapabilities createFilterCapabilities()
public final FilterCapabilities getCapabilities()
Performs lazy creation of capabilities.
If you're subclassing this class, override createFilterCapabilities to declare which filtercapabilities you support. Don't use this method.
public void setCapabilities(FilterCapabilities capabilities)
public Object visit(ExcludeFilter filter, Object extraData)
visit
in interface FilterVisitor
the
- filter to be visitedFilterVisitor#visit(ExcludeFilter, Object)}
Writes the SQL for the IncludeFilter by writing "FALSE".
public Object visit(IncludeFilter filter, Object extraData)
visit
in interface FilterVisitor
the
- filter to be visitedFilterVisitor#visit(IncludeFilter, Object)}
Writes the SQL for the IncludeFilter by writing "TRUE".
public Object visit(PropertyIsBetween filter, Object extraData) throws RuntimeException
visit
in interface FilterVisitor
filter
- the Filter to be visited.
RuntimeException
- for io exception with writerpublic Object visit(PropertyIsLike filter, Object extraData)
visit
in interface FilterVisitor
filter
- the Like Filter to be visited.public Object visit(And filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(Not filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(Or filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)protected Object visit(BinaryLogicOperator filter, Object extraData)
filter
- the logic statement to be turned into SQL.extraData
- extra filter data. Not modified directly by this method.public Object visit(PropertyIsEqualTo filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(PropertyIsGreaterThanOrEqualTo filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(PropertyIsGreaterThan filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(PropertyIsLessThan filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(PropertyIsLessThanOrEqualTo filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)public Object visit(PropertyIsNotEqualTo filter, Object extraData)
visit
in interface FilterVisitor
filter
- the filter to visitextraData
- extra data (unused by this method)protected void visitBinaryComparisonOperator(BinaryComparisonOperator filter, Object extraData) throws RuntimeException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |