|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.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 SQLBuilderfilter - the application filter which must be applied
public Filter getPreQueryFilter(Filter filter)
getPreQueryFilter in interface SQLBuilderfilter - the application filter which must be applied
public void sqlFrom(java.lang.StringBuffer sql,
java.lang.String typeName)
sql: FROM typeName
sqlFrom in interface SQLBuildersql - the StringBuffer that the WHERE clause should be appended totypeName - the name of the table (feature type) to be queried
public void sqlWhere(java.lang.StringBuffer sql,
Filter preFilter)
throws SQLEncoderException
sql: WHERE filter encoding
sqlWhere in interface SQLBuildersql - 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
encoder
public 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 SQLBuildertypeName - 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 class
public void sqlColumns(java.lang.StringBuffer sql,
FIDMapper mapper,
AttributeType[] attributes)
sqlGeometryColumn is invoked for any special handling for geometry columns.
sqlColumns in interface SQLBuildersql - 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 | ||||||||||