Class 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 Detail

      • AbstractQueryRewriter

        public AbstractQueryRewriter​(JdbcDataContext dataContext)
    • Method Detail

      • isTransactional

        public boolean isTransactional()
        Description copied from interface: IQueryRewriter
        Determines 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:
        isTransactional in interface IQueryRewriter
        Returns:
      • getColumnType

        public org.apache.metamodel.schema.ColumnType getColumnType​(int jdbcType,
                                                                    String nativeType,
                                                                    Integer columnSize)
        Description copied from interface: IQueryRewriter
        Gets the column type for a specific JDBC type (as defined in Types), native type name and column size.
        Specified by:
        getColumnType in interface IQueryRewriter
        Returns:
      • 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: IQueryRewriter
        Rewrites 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:
        rewriteColumnType in interface IQueryRewriter
        Parameters:
        columnType - the (non-null) ColumnType to rewrite
        columnSize - 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)
      • 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)
      • 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)
      • toTime

        protected Time toTime​(Date value)
      • isSupportedVersion

        protected boolean isSupportedVersion​(String databaseProductName,
                                             int databaseVersion)