Class DataSourceWrapper

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public abstract class DataSourceWrapper
    extends java.lang.Object
    implements java.io.Closeable
    A wrapper of HikariDataSource.
    Since:
    2.0.0
    Author:
    Lijun Liao (xipki)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String name  
      protected com.zaxxer.hikari.HikariDataSource service
      References the real data source implementation this class acts as pure proxy for.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addForeignKeyConstraint​(java.sql.Connection conn, java.lang.String constraintName, java.lang.String baseTable, java.lang.String baseColumn, java.lang.String referencedTable, java.lang.String referencedColumn, java.lang.String onDeleteAction, java.lang.String onUpdateAction)  
      void addPrimaryKey​(java.sql.Connection conn, java.lang.String primaryKeyName, java.lang.String table, java.lang.String... columns)  
      void addUniqueConstrain​(java.sql.Connection conn, java.lang.String constraintName, java.lang.String table, java.lang.String... columns)  
      protected java.lang.String buildAndCacheNextSeqValueSql​(java.lang.String sequenceName)  
      protected abstract java.lang.String buildCreateSequenceSql​(java.lang.String sequenceName, long startValue)  
      protected abstract java.lang.String buildDropSequenceSql​(java.lang.String sequenceName)  
      protected abstract java.lang.String buildNextSeqValueSql​(java.lang.String sequenceName)  
      java.lang.String buildSelectFirstSql​(int rows, java.lang.String coreSql)  
      abstract java.lang.String buildSelectFirstSql​(int rows, java.lang.String orderBy, java.lang.String coreSql)  
      void close()  
      boolean columnExists​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.Object value)  
      void createIndex​(java.sql.Connection conn, java.lang.String indexName, java.lang.String table, java.lang.String... columns)  
      void createSequence​(java.lang.String sequenceName, long startValue)  
      java.sql.Statement createStatement()  
      java.sql.Statement createStatement​(java.sql.Connection conn)  
      boolean deleteFromTable​(java.sql.Connection conn, java.lang.String table, java.lang.String idColumn, long id)  
      void deleteFromTableWithException​(java.sql.Connection conn, java.lang.String table, java.lang.String idColumn, long id)  
      void dropAndCreateSequence​(java.lang.String sequenceName, long startValue)  
      void dropForeignKeyConstraint​(java.sql.Connection conn, java.lang.String constraintName, java.lang.String baseTable)  
      void dropIndex​(java.sql.Connection conn, java.lang.String table, java.lang.String indexName)  
      void dropPrimaryKey​(java.sql.Connection conn, java.lang.String primaryKeyName, java.lang.String table)  
      void dropSequence​(java.lang.String sequenceName)  
      void dropUniqueConstrain​(java.sql.Connection conn, java.lang.String constraintName, java.lang.String table)  
      java.sql.Connection getConnection()  
      int getCount​(java.sql.Connection conn, java.lang.String table)  
      DatabaseType getDatabaseType()  
      java.lang.Integer getFirstIntValue​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.String criteria)  
      java.lang.Long getFirstLongValue​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.String criteria)  
      java.lang.String getFirstStringValue​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.String criteria)  
      java.io.PrintWriter getLogWriter()  
      long getMax​(java.sql.Connection conn, java.lang.String table, java.lang.String column)  
      long getMax​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.String condition)  
      int getMaximumPoolSize()  
      long getMin​(java.sql.Connection conn, java.lang.String table, java.lang.String column)  
      long getMin​(java.sql.Connection conn, java.lang.String table, java.lang.String column, java.lang.String condition)  
      java.lang.String getName()  
      protected java.lang.String getSqlToAddForeignKeyConstraint​(java.lang.String constraintName, java.lang.String baseTable, java.lang.String baseColumn, java.lang.String referencedTable, java.lang.String referencedColumn, java.lang.String onDeleteAction, java.lang.String onUpdateAction)  
      protected java.lang.String getSqlToAddPrimaryKey​(java.lang.String primaryKeyName, java.lang.String table, java.lang.String... columns)  
      protected java.lang.String getSqlToAddUniqueConstrain​(java.lang.String constraintName, java.lang.String table, java.lang.String... columns)  
      protected java.lang.String getSqlToCreateIndex​(java.lang.String indexName, java.lang.String table, java.lang.String... columns)  
      protected java.lang.String getSqlToDropForeignKeyConstraint​(java.lang.String constraintName, java.lang.String baseTable)  
      protected java.lang.String getSqlToDropIndex​(java.lang.String table, java.lang.String indexName)  
      protected java.lang.String getSqlToDropPrimaryKey​(java.lang.String primaryKeyName, java.lang.String table)  
      protected java.lang.String getSqlToDropUniqueConstraint​(java.lang.String constraintName, java.lang.String table)  
      protected boolean isUseSqlStateAsCode()  
      long nextSeqValue​(java.sql.Connection conn, java.lang.String sequenceName)  
      java.sql.PreparedStatement prepareStatement​(java.lang.String sqlQuery)  
      java.sql.PreparedStatement prepareStatement​(java.sql.Connection conn, java.lang.String sqlQuery)  
      void releaseResources​(java.sql.Statement ps, java.sql.ResultSet rs)  
      void releaseResources​(java.sql.Statement ps, java.sql.ResultSet rs, boolean returnConnection)  
      void returnConnection​(java.sql.Connection conn)  
      void setLastUsedSeqValue​(java.lang.String sequenceName, long sequenceValue)  
      boolean tableExists​(java.sql.Connection conn, java.lang.String table)  
      boolean tableHasColumn​(java.sql.Connection conn, java.lang.String table, java.lang.String column)  
      DataAccessException translate​(java.lang.String sql, java.sql.SQLException ex)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • service

        protected final com.zaxxer.hikari.HikariDataSource service
        References the real data source implementation this class acts as pure proxy for. Derived classes must set this field at construction time.
      • name

        protected final java.lang.String name
    • Method Detail

      • getName

        public final java.lang.String getName()
      • getDatabaseType

        public final DatabaseType getDatabaseType()
      • getMaximumPoolSize

        public final int getMaximumPoolSize()
      • returnConnection

        public void returnConnection​(java.sql.Connection conn)
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • getLogWriter

        public final java.io.PrintWriter getLogWriter()
                                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • releaseResources

        public void releaseResources​(java.sql.Statement ps,
                                     java.sql.ResultSet rs)
      • releaseResources

        public void releaseResources​(java.sql.Statement ps,
                                     java.sql.ResultSet rs,
                                     boolean returnConnection)
      • buildSelectFirstSql

        public java.lang.String buildSelectFirstSql​(int rows,
                                                    java.lang.String coreSql)
      • buildSelectFirstSql

        public abstract java.lang.String buildSelectFirstSql​(int rows,
                                                             java.lang.String orderBy,
                                                             java.lang.String coreSql)
      • getFirstStringValue

        public java.lang.String getFirstStringValue​(java.sql.Connection conn,
                                                    java.lang.String table,
                                                    java.lang.String column,
                                                    java.lang.String criteria)
                                             throws DataAccessException
        Throws:
        DataAccessException
      • getFirstIntValue

        public java.lang.Integer getFirstIntValue​(java.sql.Connection conn,
                                                  java.lang.String table,
                                                  java.lang.String column,
                                                  java.lang.String criteria)
                                           throws DataAccessException
        Throws:
        DataAccessException
      • getFirstLongValue

        public java.lang.Long getFirstLongValue​(java.sql.Connection conn,
                                                java.lang.String table,
                                                java.lang.String column,
                                                java.lang.String criteria)
                                         throws DataAccessException
        Throws:
        DataAccessException
      • getMin

        public long getMin​(java.sql.Connection conn,
                           java.lang.String table,
                           java.lang.String column,
                           java.lang.String condition)
                    throws DataAccessException
        Throws:
        DataAccessException
      • getMax

        public long getMax​(java.sql.Connection conn,
                           java.lang.String table,
                           java.lang.String column,
                           java.lang.String condition)
                    throws DataAccessException
        Throws:
        DataAccessException
      • deleteFromTable

        public boolean deleteFromTable​(java.sql.Connection conn,
                                       java.lang.String table,
                                       java.lang.String idColumn,
                                       long id)
      • deleteFromTableWithException

        public void deleteFromTableWithException​(java.sql.Connection conn,
                                                 java.lang.String table,
                                                 java.lang.String idColumn,
                                                 long id)
                                          throws java.sql.SQLException,
                                                 DataAccessException
        Throws:
        java.sql.SQLException
        DataAccessException
      • columnExists

        public boolean columnExists​(java.sql.Connection conn,
                                    java.lang.String table,
                                    java.lang.String column,
                                    java.lang.Object value)
                             throws DataAccessException
        Throws:
        DataAccessException
      • buildCreateSequenceSql

        protected abstract java.lang.String buildCreateSequenceSql​(java.lang.String sequenceName,
                                                                   long startValue)
      • buildDropSequenceSql

        protected abstract java.lang.String buildDropSequenceSql​(java.lang.String sequenceName)
      • buildNextSeqValueSql

        protected abstract java.lang.String buildNextSeqValueSql​(java.lang.String sequenceName)
      • buildAndCacheNextSeqValueSql

        protected final java.lang.String buildAndCacheNextSeqValueSql​(java.lang.String sequenceName)
      • isUseSqlStateAsCode

        protected boolean isUseSqlStateAsCode()
      • setLastUsedSeqValue

        public void setLastUsedSeqValue​(java.lang.String sequenceName,
                                        long sequenceValue)
      • getSqlToDropPrimaryKey

        protected java.lang.String getSqlToDropPrimaryKey​(java.lang.String primaryKeyName,
                                                          java.lang.String table)
      • getSqlToAddPrimaryKey

        protected java.lang.String getSqlToAddPrimaryKey​(java.lang.String primaryKeyName,
                                                         java.lang.String table,
                                                         java.lang.String... columns)
      • addPrimaryKey

        public void addPrimaryKey​(java.sql.Connection conn,
                                  java.lang.String primaryKeyName,
                                  java.lang.String table,
                                  java.lang.String... columns)
                           throws DataAccessException
        Throws:
        DataAccessException
      • getSqlToDropForeignKeyConstraint

        protected java.lang.String getSqlToDropForeignKeyConstraint​(java.lang.String constraintName,
                                                                    java.lang.String baseTable)
      • dropForeignKeyConstraint

        public void dropForeignKeyConstraint​(java.sql.Connection conn,
                                             java.lang.String constraintName,
                                             java.lang.String baseTable)
                                      throws DataAccessException
        Throws:
        DataAccessException
      • getSqlToAddForeignKeyConstraint

        protected java.lang.String getSqlToAddForeignKeyConstraint​(java.lang.String constraintName,
                                                                   java.lang.String baseTable,
                                                                   java.lang.String baseColumn,
                                                                   java.lang.String referencedTable,
                                                                   java.lang.String referencedColumn,
                                                                   java.lang.String onDeleteAction,
                                                                   java.lang.String onUpdateAction)
      • addForeignKeyConstraint

        public void addForeignKeyConstraint​(java.sql.Connection conn,
                                            java.lang.String constraintName,
                                            java.lang.String baseTable,
                                            java.lang.String baseColumn,
                                            java.lang.String referencedTable,
                                            java.lang.String referencedColumn,
                                            java.lang.String onDeleteAction,
                                            java.lang.String onUpdateAction)
                                     throws DataAccessException
        Throws:
        DataAccessException
      • getSqlToDropIndex

        protected java.lang.String getSqlToDropIndex​(java.lang.String table,
                                                     java.lang.String indexName)
      • getSqlToCreateIndex

        protected java.lang.String getSqlToCreateIndex​(java.lang.String indexName,
                                                       java.lang.String table,
                                                       java.lang.String... columns)
      • createIndex

        public void createIndex​(java.sql.Connection conn,
                                java.lang.String indexName,
                                java.lang.String table,
                                java.lang.String... columns)
                         throws DataAccessException
        Throws:
        DataAccessException
      • getSqlToDropUniqueConstraint

        protected java.lang.String getSqlToDropUniqueConstraint​(java.lang.String constraintName,
                                                                java.lang.String table)
      • dropUniqueConstrain

        public void dropUniqueConstrain​(java.sql.Connection conn,
                                        java.lang.String constraintName,
                                        java.lang.String table)
                                 throws DataAccessException
        Throws:
        DataAccessException
      • getSqlToAddUniqueConstrain

        protected java.lang.String getSqlToAddUniqueConstrain​(java.lang.String constraintName,
                                                              java.lang.String table,
                                                              java.lang.String... columns)
      • addUniqueConstrain

        public void addUniqueConstrain​(java.sql.Connection conn,
                                       java.lang.String constraintName,
                                       java.lang.String table,
                                       java.lang.String... columns)
                                throws DataAccessException
        Throws:
        DataAccessException
      • translate

        public DataAccessException translate​(java.lang.String sql,
                                             java.sql.SQLException ex)