|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.geotools.data.jdbc.DefaultSQLBuilder
public class 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 ClientTransactionAccessor |
accessor
Deprecated. |
protected SQLEncoder |
encoder
Deprecated. |
protected org.opengis.feature.simple.SimpleFeatureType |
ft
Deprecated. |
Constructor Summary | |
---|---|
DefaultSQLBuilder()
Deprecated. Constructs an instance of this class with a default SQLEncoder |
|
DefaultSQLBuilder(SQLEncoder encoder)
Deprecated. |
|
DefaultSQLBuilder(SQLEncoder encoder,
org.opengis.feature.simple.SimpleFeatureType featureType,
ClientTransactionAccessor accessor)
Deprecated. Constructs an instance of this class using the encoder class specified. |
Method Summary | |
---|---|
protected void |
addOrderByPK(java.lang.StringBuffer sql,
FIDMapper mapper,
org.opengis.filter.sort.SortOrder sortOrder)
Deprecated. |
java.lang.String |
buildSQLQuery(java.lang.String typeName,
FIDMapper mapper,
org.opengis.feature.type.AttributeDescriptor[] attrTypes,
org.opengis.filter.Filter filter)
Deprecated. |
java.lang.String |
buildSQLQuery(java.lang.String typeName,
FIDMapper mapper,
org.opengis.feature.type.AttributeDescriptor[] attrTypes,
org.opengis.filter.Filter filter,
org.opengis.filter.sort.SortBy[] sortBy,
java.lang.Integer offset,
java.lang.Integer limit)
Deprecated. Constructs the full SQL SELECT statement for the supplied Filter. |
void |
encode(java.lang.StringBuffer sql,
org.opengis.filter.expression.Expression expression)
Deprecated. Lower level method allowing for the encoding of a single expession in sql |
void |
encode(java.lang.StringBuffer sql,
org.opengis.filter.Filter filter)
Deprecated. Lower level method allowing for the encoding of a single filter in sql |
protected SimplifyingFilterVisitor.FIDValidator |
getFidValidator()
Deprecated. Returns a fid validator to filter out the invalid fids from a Filter |
org.opengis.filter.Filter |
getPostQueryFilter(org.opengis.filter.Filter filter)
Deprecated. Return the postQueryFilter that must be applied to the database query result set. |
org.opengis.filter.Filter |
getPreQueryFilter(org.opengis.filter.Filter filter)
Deprecated. Return the preQueryFilter that can be used to generate the WHERE clause. |
boolean |
isForce2D()
Deprecated. Check the hints to see if we are forced into 2D |
void |
setHints(Hints hints)
Deprecated. Hints supplied by the user. |
protected void |
splitFilter(org.opengis.filter.Filter filter)
Deprecated. |
void |
sqlColumns(java.lang.StringBuffer sql,
FIDMapper mapper,
org.opengis.feature.type.AttributeDescriptor[] attributes)
Deprecated. Appends the names of the columns to be selected. |
void |
sqlFrom(java.lang.StringBuffer sql,
java.lang.String typeName)
Deprecated. Constructs the FROM clause for a featureType |
void |
sqlGeometryColumn(java.lang.StringBuffer sql,
org.opengis.feature.type.AttributeDescriptor geomAttribute)
Deprecated. Generates the select column specification for a geometry column. |
void |
sqlOrderBy(java.lang.StringBuffer sql,
FIDMapper mapper,
org.opengis.filter.sort.SortBy[] sortBy)
Deprecated. Generates the order by clause. |
void |
sqlOrderBy(java.lang.StringBuffer sql,
org.opengis.filter.sort.SortBy[] sortBy)
Deprecated. |
void |
sqlWhere(java.lang.StringBuffer sql,
org.opengis.filter.Filter preFilter)
Deprecated. 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
protected org.opengis.feature.simple.SimpleFeatureType ft
protected ClientTransactionAccessor accessor
Constructor Detail |
---|
public DefaultSQLBuilder()
public DefaultSQLBuilder(SQLEncoder encoder)
This constructor should not be used to obtain Pre/Post filters, as these methods require a SimpleFeatureType to function properly.
encoder
- the specific encoder to be used.public DefaultSQLBuilder(SQLEncoder encoder, org.opengis.feature.simple.SimpleFeatureType featureType, ClientTransactionAccessor accessor)
encoder
- the specific encoder to be used.featureType
- accessor
- client-side transaction handler; may be null.Method Detail |
---|
public void setHints(Hints hints)
SQLBuilder
The following hints are of interest when working with Features:
setHints
in interface SQLBuilder
public boolean isForce2D()
public org.opengis.filter.Filter getPostQueryFilter(org.opengis.filter.Filter filter)
getPostQueryFilter
in interface SQLBuilder
filter
- the application filter which must be applied
public org.opengis.filter.Filter getPreQueryFilter(org.opengis.filter.Filter filter)
getPreQueryFilter
in interface SQLBuilder
filter
- the application filter which must be applied
protected void splitFilter(org.opengis.filter.Filter filter)
protected SimplifyingFilterVisitor.FIDValidator getFidValidator()
encoder
's
FIDMapper.isValid(String)
splitFilter(Filter)
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, org.opengis.filter.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, org.opengis.feature.type.AttributeDescriptor[] attrTypes, org.opengis.filter.Filter filter) throws SQLEncoderException
buildSQLQuery
in interface SQLBuilder
SQLEncoderException
public java.lang.String buildSQLQuery(java.lang.String typeName, FIDMapper mapper, org.opengis.feature.type.AttributeDescriptor[] attrTypes, org.opengis.filter.Filter filter, org.opengis.filter.sort.SortBy[] sortBy, java.lang.Integer offset, java.lang.Integer limit) throws SQLEncoderException
The statement is constructed by concatenating the SELECT column list, FROM table specification and WHERE clause appropriate to the supplied Filte.
Subclasses that support startIndex
should override as
appropriate.
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, org.opengis.feature.type.AttributeDescriptor[] 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 selectedpublic void sqlGeometryColumn(java.lang.StringBuffer sql, org.opengis.feature.type.AttributeDescriptor 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 AttributeDescriptor for a geometry attributepublic void sqlOrderBy(java.lang.StringBuffer sql, org.opengis.filter.sort.SortBy[] sortBy) throws SQLEncoderException
SQLBuilder
sql: ORDER BY <property1> [ASC|DESC], ....
sqlOrderBy
in interface SQLBuilder
SQLEncoderException
public void sqlOrderBy(java.lang.StringBuffer sql, FIDMapper mapper, org.opengis.filter.sort.SortBy[] sortBy) throws SQLEncoderException
This uses the standard ASC,DESC sql keywords to denote ascending,descending sort respectivley.
sqlOrderBy
in interface SQLBuilder
sql
- buffer where the complete query is being builtmapper
- where to inferr the primary key fields from in case the sortBy list contains
SortBy.NATURAL_ORDER
or SortBy.REVERSE_ORDER
sortBy
- the order by criteria, possibly null
FIXME: This should change to a FilterToSQLException after SQLEncoder is dropped
SQLEncoderException
public void encode(java.lang.StringBuffer sql, org.opengis.filter.expression.Expression expression) throws SQLEncoderException
SQLBuilder
encode
in interface SQLBuilder
SQLEncoderException
public void encode(java.lang.StringBuffer sql, org.opengis.filter.Filter filter) throws SQLEncoderException
SQLBuilder
encode
in interface SQLBuilder
SQLEncoderException
protected void addOrderByPK(java.lang.StringBuffer sql, FIDMapper mapper, org.opengis.filter.sort.SortOrder sortOrder) throws SQLEncoderException
sql
- the buffer where the select statement is being built, already contains the "ORDER
BY " clause, only needs to be appended with the PK fields.mapper
- the fid mapper where to get the PK fields from, may be null, in which case
implementations should either throw an exception or not, depending on whether they
actually need it.sortOrder
- the order in which to encode the PK fields (eg,
"pkAtt1 DESC, pkAtt2 DESC"
)
SQLEncoderException
- by default, subclasses shall override if pk ordering is supported
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |