|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.geotools.data.jdbc.DefaultSQLBuilder
Builds a complete SQL query to select the specified attributes for the specified feature type, using a specified filter to generate a WHERE clause.
The actual WHERE clause is generated by the SQLEncoder class or appropriate subclass for a particular database. If a specific encoder is to be used, it must be specified to the constructor for this class.
In order to implement the functionality of the application-specified Filter, this is split into a 'preQueryFilter' which can be incorporated into the SQL query itself and a 'postQueryFilter. The encoder capabilities are used to determine how much of the function can be performed by the database directly and how much has to be performed on the result set.
Field Summary | |
protected SQLEncoder |
encoder
|
Constructor Summary | |
DefaultSQLBuilder()
Constructs an instance of this class with a default SQLEncoder |
|
DefaultSQLBuilder(SQLEncoder encoder)
Constructs an instance of this class using the encoder class specified. |
Method Summary | |
java.lang.String |
buildSQLQuery(java.lang.String typeName,
FIDMapper mapper,
AttributeType[] attrTypes,
Filter filter)
Constructs the full SQL SELECT statement for the supplied Filter. |
Filter |
getPostQueryFilter(Filter filter)
Return the postQueryFilter that must be applied to the database query result set. |
Filter |
getPreQueryFilter(Filter filter)
Return the preQueryFilter that can be used to generate the WHERE clause. |
void |
sqlColumns(java.lang.StringBuffer sql,
FIDMapper mapper,
AttributeType[] attributes)
Appends the names of the columns to be selected. |
void |
sqlFrom(java.lang.StringBuffer sql,
java.lang.String typeName)
Constructs the FROM clause for a featureType sql: FROM typeName
|
void |
sqlGeometryColumn(java.lang.StringBuffer sql,
AttributeType geomAttribute)
Generates the select column specification for a geometry column. |
void |
sqlWhere(java.lang.StringBuffer sql,
Filter preFilter)
Constructs WHERE clause, if needed, for FILTER. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected SQLEncoder encoder
Constructor Detail |
public DefaultSQLBuilder()
public DefaultSQLBuilder(SQLEncoder encoder)
encoder
- the specific encoder to be used.Method Detail |
public Filter getPostQueryFilter(Filter filter)
getPostQueryFilter
in interface SQLBuilder
filter
- the application filter which must be applied
public Filter getPreQueryFilter(Filter filter)
getPreQueryFilter
in interface SQLBuilder
filter
- the application filter which must be applied
public void sqlFrom(java.lang.StringBuffer sql, java.lang.String typeName)
sql: FROM typeName
sqlFrom
in interface SQLBuilder
sql
- the StringBuffer that the WHERE clause should be appended totypeName
- the name of the table (feature type) to be queriedpublic void sqlWhere(java.lang.StringBuffer sql, Filter preFilter) throws SQLEncoderException
sql: WHERE filter encoding
sqlWhere
in interface SQLBuilder
sql
- The StringBuffer that the WHERE clause should be appended topreFilter
- The filter to be used by the encoder class to generate
the WHERE clause
SQLEncoderException
- Not thrown here but may be thrown by the
encoderpublic java.lang.String buildSQLQuery(java.lang.String typeName, FIDMapper mapper, AttributeType[] attrTypes, Filter filter) throws SQLEncoderException
The statement is constructed by concatenating the SELECT column list, FROM table specification and WHERE clause appropriate to the supplied Filter.
buildSQLQuery
in interface SQLBuilder
typeName
- The name of the table (feature type) to be queriedmapper
- FIDMapper to identify the FID columns in the tableattrTypes
- The specific attribute columns to be selectedfilter
- The Filter that will be used by the encoder to construct
the WHERE clause
SQLEncoderException
- Not thrown by this method but may be thrown
by the encoder classpublic void sqlColumns(java.lang.StringBuffer sql, FIDMapper mapper, AttributeType[] attributes)
sqlGeometryColumn is invoked for any special handling for geometry columns.
sqlColumns
in interface SQLBuilder
sql
- StringBuffer to be appended tomapper
- FIDMapper to provide the name(s) of the FID columnsattributes
- Array of columns to be selectedpostgisDataStore.SQLBuilder#sqlColumns(java.lang.StringBuffer,
postgisDataStore.FIDMapper.FIDMapper,
org.geotools.feature.AttributeType[])
public void sqlGeometryColumn(java.lang.StringBuffer sql, AttributeType geomAttribute)
This should typically be overridden in the subclass to return a meaningful value that the attribute i/o handler can process.
sql
- A StringBuffer that the column specification can be appended
togeomAttribute
- An AttributeType for a geometry attribute
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |