Class AbstractQueryRewriter
- java.lang.Object
-
- org.apache.metamodel.jdbc.dialects.AbstractQueryRewriter
-
- All Implemented Interfaces:
IQueryRewriter
- Direct Known Subclasses:
DefaultQueryRewriter
public abstract class AbstractQueryRewriter extends Object implements IQueryRewriter
Abstract implementation of query rewriter. This implementation delegates the rewriting of the Query into several subtasks according to the query items to be rendered. This makes it easy to overload single methods in order to correct syntax quirks.
-
-
Constructor Summary
Constructors Constructor Description AbstractQueryRewriter(JdbcDataContext dataContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.metamodel.query.QuerybeforeRewrite(org.apache.metamodel.query.Query query)Method to modify query before rewriting begins.org.apache.metamodel.schema.ColumnTypegetColumnType(int jdbcType, String nativeType, Integer columnSize)Gets the column type for a specific JDBC type (as defined inTypes), native type name and column size.JdbcDataContextgetDataContext()ObjectgetResultSetValue(ResultSet resultSet, int columnIndex, org.apache.metamodel.schema.Column column)Retrieves a value from a JDBCResultSetwhen the anticipated value is mapped to a particular column.booleanisSchemaIncludedInColumnPaths()protected booleanisSupportedVersion(String databaseProductName, int databaseVersion)booleanisTransactional()Determines if the JDBC data source supports transactions or not.StringrewriteColumnType(org.apache.metamodel.schema.ColumnType columnType, Integer columnSize)Rewrites the name of a column type, as it is written in CREATE TABLE statements.protected StringrewriteColumnTypeInternal(String columnType, Object columnParameter)StringrewriteFilterItem(org.apache.metamodel.query.FilterItem item)protected StringrewriteFromClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FromClause fromClause)StringrewriteFromItem(org.apache.metamodel.query.FromItem item)protected StringrewriteFromItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FromItem item)protected StringrewriteGroupByClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.GroupByClause groupByClause)protected StringrewriteGroupByItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.GroupByItem item)protected StringrewriteHavingClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FilterClause havingClause)protected StringrewriteOrderByClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.OrderByClause orderByClause)protected StringrewriteOrderByItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.OrderByItem item)StringrewriteQuery(org.apache.metamodel.query.Query query)protected StringrewriteSelectClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.SelectClause selectClause)protected StringrewriteSelectItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.SelectItem item)protected StringrewriteWhereClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FilterClause whereClause)voidsetStatementParameter(PreparedStatement st, int valueIndex, org.apache.metamodel.schema.Column column, Object value)Method which handles the action of setting a parameterized value on a statement.protected TimetoTime(Date value)protected TimestamptoTimestamp(Date value)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.metamodel.jdbc.dialects.IQueryRewriter
escapeQuotes, isAggregateFunctionSupported, isFirstRowSupported, isMaxRowsSupported, isPrimaryKeySupported, isScalarFunctionSupported
-
-
-
-
Constructor Detail
-
AbstractQueryRewriter
public AbstractQueryRewriter(JdbcDataContext dataContext)
-
-
Method Detail
-
getDataContext
public JdbcDataContext getDataContext()
-
isTransactional
public boolean isTransactional()
Description copied from interface:IQueryRewriterDetermines if the JDBC data source supports transactions or not. Usually this is the case since JDBC is designed for ACID compliant databases, but in some cases the JDBC interface is used also to facilitate connectivity to non-transactional data source such as Apache Hive and others.- Specified by:
isTransactionalin interfaceIQueryRewriter- Returns:
-
getColumnType
public org.apache.metamodel.schema.ColumnType getColumnType(int jdbcType, String nativeType, Integer columnSize)Description copied from interface:IQueryRewriterGets the column type for a specific JDBC type (as defined inTypes), native type name and column size.- Specified by:
getColumnTypein interfaceIQueryRewriter- Returns:
-
rewriteQuery
public String rewriteQuery(org.apache.metamodel.query.Query query)
- Specified by:
rewriteQueryin interfaceIQueryRewriter
-
isSchemaIncludedInColumnPaths
public boolean isSchemaIncludedInColumnPaths()
-
beforeRewrite
protected org.apache.metamodel.query.Query beforeRewrite(org.apache.metamodel.query.Query query)
Method to modify query before rewriting begins. Overwrite this method if you want to change parts of the query that are not just rendering related. Cloning the query before modifying is recommended in order to not violate referential integrity of clients (the query is mutable).- Parameters:
query-- Returns:
- the modified query
-
rewriteColumnType
public String rewriteColumnType(org.apache.metamodel.schema.ColumnType columnType, Integer columnSize)
Description copied from interface:IQueryRewriterRewrites the name of a column type, as it is written in CREATE TABLE statements. Some databases dont support all column types, or have different names for them. The implementation of this method will do that conversion.- Specified by:
rewriteColumnTypein interfaceIQueryRewriter- Parameters:
columnType- the (non-null)ColumnTypeto rewritecolumnSize- the (possibly null) column size that may or may not have been specified- Returns:
-
rewriteColumnTypeInternal
protected String rewriteColumnTypeInternal(String columnType, Object columnParameter)
-
rewriteOrderByClause
protected String rewriteOrderByClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.OrderByClause orderByClause)
-
rewriteFromItem
public String rewriteFromItem(org.apache.metamodel.query.FromItem item)
- Specified by:
rewriteFromItemin interfaceIQueryRewriter
-
rewriteOrderByItem
protected String rewriteOrderByItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.OrderByItem item)
-
rewriteHavingClause
protected String rewriteHavingClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FilterClause havingClause)
-
rewriteGroupByClause
protected String rewriteGroupByClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.GroupByClause groupByClause)
-
rewriteGroupByItem
protected String rewriteGroupByItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.GroupByItem item)
-
rewriteWhereClause
protected String rewriteWhereClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FilterClause whereClause)
-
rewriteFilterItem
public String rewriteFilterItem(org.apache.metamodel.query.FilterItem item)
- Specified by:
rewriteFilterItemin interfaceIQueryRewriter
-
rewriteFromClause
protected String rewriteFromClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FromClause fromClause)
-
rewriteFromItem
protected String rewriteFromItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.FromItem item)
-
rewriteSelectClause
protected String rewriteSelectClause(org.apache.metamodel.query.Query query, org.apache.metamodel.query.SelectClause selectClause)
-
rewriteSelectItem
protected String rewriteSelectItem(org.apache.metamodel.query.Query query, org.apache.metamodel.query.SelectItem item)
-
setStatementParameter
public void setStatementParameter(PreparedStatement st, int valueIndex, org.apache.metamodel.schema.Column column, Object value) throws SQLException
Description copied from interface:IQueryRewriterMethod which handles the action of setting a parameterized value on a statement. Traditionally this is done using thePreparedStatement.setObject(int, Object)method but for some types we use more specific setter methods.- Specified by:
setStatementParameterin interfaceIQueryRewriter- Throws:
SQLException
-
getResultSetValue
public Object getResultSetValue(ResultSet resultSet, int columnIndex, org.apache.metamodel.schema.Column column) throws SQLException
Description copied from interface:IQueryRewriterRetrieves a value from a JDBCResultSetwhen the anticipated value is mapped to a particular column.- Specified by:
getResultSetValuein interfaceIQueryRewriter- Returns:
- Throws:
SQLException
-
isSupportedVersion
protected boolean isSupportedVersion(String databaseProductName, int databaseVersion)
-
-