Class DataRepoPool

java.lang.Object
tigase.db.converter.DataRepoPool
All Implemented Interfaces:
DataRepository, DataSource, DataSourcePool<DataRepository>, Repository, RepositoryPool<DataRepository>

public class DataRepoPool extends Object implements DataRepository, DataSourcePool<DataRepository>
  • Constructor Details

    • DataRepoPool

      public DataRepoPool()
  • Method Details

    • addRepo

      public void addRepo(DataRepository repo)
      Description copied from interface: RepositoryPool
      Method called to add instance of a repository to the repository pool.
      Specified by:
      addRepo in interface RepositoryPool<DataRepository>
      Parameters:
      repo - instance of a repository
    • takeRepoHandle

      public DataRepository takeRepoHandle(BareJID user_id)
      Description copied from interface: DataRepository
      Returns DataRepository instance. If this is a repository pool then it returns particular instance from the pool. It this is a real repository instance it returns itself. This is exclusive take, no other thread may use this handle until it is returned to the pool.
      Specified by:
      takeRepoHandle in interface DataRepository
      Parameters:
      user_id - is user account ID for which we acquire the handle.
      Returns:
      DataRepository instance.
    • releaseRepoHandle

      public void releaseRepoHandle(DataRepository repo)
      Specified by:
      releaseRepoHandle in interface DataRepository
    • automaticSchemaManagement

      public boolean automaticSchemaManagement()
      Specified by:
      automaticSchemaManagement in interface DataSource
    • checkConnectivity

      public void checkConnectivity(Duration watchdogTime)
      Description copied from interface: DataSource
      This method is called by data source bean watchdog mechanism to ensure that there is proper connectivity to underlying data storage.
      Specified by:
      checkConnectivity in interface DataSource
      Parameters:
      watchdogTime - time which should pass between checks
    • checkSchemaVersion

      public boolean checkSchemaVersion(DataSourceAware<? extends DataSource> datasource, boolean shutdownServer)
      Description copied from interface: DataSource
      Method checks version of the particular DataSource stored in the defined source.
      Specified by:
      checkSchemaVersion in interface DataSource
      Parameters:
      datasource - implementation of DataSourceAware interface
      shutdownServer - specifies whether server should be shutdown automatically if the version in the database doesn't match required version.
      Returns:
      a false when the version doesn't match or there is no version information in the repository. if shutdownServer is set to true and the component version is final it would force shutting down of the server, otherwise (for non-final version) only a warning would be printed.
    • getSchemaVersion

      public Optional<Version> getSchemaVersion(String component)
      Description copied from interface: DataSource
      Method obtains version of the schema for particular component stored in the database.
      Specified by:
      getSchemaVersion in interface DataSource
      Parameters:
      component - name of the component for which we want to get the schema version
      Returns:
      an optional value of the version.
    • checkTable

      public boolean checkTable(String tableName) throws SQLException
      Description copied from interface: DataRepository
      The method checks whether a table for the given name exists in the database.
      Specified by:
      checkTable in interface DataRepository
      Parameters:
      tableName - is a String value of the table name to check
      Returns:
      true boolean value if the table exist in the database and false if the table was not found.
      Throws:
      SQLException - if there was a problem accessing database.
    • checkTable

      public boolean checkTable(String tableName, String createTableQuery) throws SQLException
      Description copied from interface: DataRepository
      The method checks whether a table for the given name exists in the database and if it does not, it automatically creates it.
      Specified by:
      checkTable in interface DataRepository
      Parameters:
      tableName - is a String value of the table name to check
      createTableQuery - is a String with the query to create table
      Returns:
      true boolean value if the table exist in the database and false if the table was not found.
      Throws:
      SQLException - if there was a problem accessing database.
    • createStatement

      public Statement createStatement(BareJID user_id) throws SQLException
      Description copied from interface: DataRepository
      Creates a SQL statement on which SQL queries can be executed later by the higher repository layer.
      Specified by:
      createStatement in interface DataRepository
      Parameters:
      user_id - user id for which the statement has to be created. This is an optional parameter and null can be provided. It is used mainly to group queries for the same user on the same DB connection.
      Returns:
      a newly created Statement
      Throws:
      SQLException - if a JDBC error occurs.
    • getPreparedStatement

      public PreparedStatement getPreparedStatement(BareJID user_id, String stIdKey) throws SQLException
      Description copied from interface: DataRepository
      Returns a prepared statement for a given key.
      Specified by:
      getPreparedStatement in interface DataRepository
      Parameters:
      user_id - user id for which the statement has to be created. This is an optional parameter and null can be provided. It is used mainly to group queries for the same user on the same DB connection.
      stIdKey - is a statement identification key.
      Returns:
      a PreparedStatement for the given id key or null if such a statement does not exist.
      Throws:
      SQLException
    • getPreparedStatement

      public PreparedStatement getPreparedStatement(int hashCode, String stIdKey) throws SQLException
      Description copied from interface: DataRepository
      Returns a prepared statement for a given key.
      Specified by:
      getPreparedStatement in interface DataRepository
      Parameters:
      hashCode - user for selection of connection to use. It is used mainly to group queries for the same user on the same DB connection.
      stIdKey - is a statement identification key.
      Returns:
      a PreparedStatement for the given id key or null if such a statement does not exist.
      Throws:
      SQLException
    • getResourceUri

      public String getResourceUri()
      Description copied from interface: DataRepository
      Returns a DB connection string or DB connection URI.
      Specified by:
      getResourceUri in interface DataRepository
      Specified by:
      getResourceUri in interface DataSource
      Returns:
      a String value representing database connection string.
    • getDatabaseType

      public DataRepository.dbTypes getDatabaseType()
      Description copied from interface: DataRepository
      Returns type of DataRepository database
      Specified by:
      getDatabaseType in interface DataRepository
      Returns:
      a value of dbTypes
    • initPreparedStatement

      public void initPreparedStatement(String stIdKey, String query) throws SQLException
      Description copied from interface: DataRepository
      Initializes a prepared statement for a given query and stores it internally under the given id key. It can be retrieved later using getPreparedStatement(stIdKey) method.
      Specified by:
      initPreparedStatement in interface DataRepository
      Parameters:
      stIdKey - is a statement identification key.
      query - is a query for the prepared statement.
      Throws:
      SQLException
    • initPreparedStatement

      public void initPreparedStatement(String stIdKey, String query, int autoGeneratedKeys) throws SQLException
      Description copied from interface: DataRepository
      Initializes a prepared statement for a given query and stores it internally under the given id key. It can be retrieved later using getPreparedStatement(stIdKey) method.
      Specified by:
      initPreparedStatement in interface DataRepository
      Parameters:
      stIdKey - is a statement identification key.
      query - is a query for the prepared statement.
      autoGeneratedKeys - defines if statement should return auto generated keys
      Throws:
      SQLException
    • initialize

      public void initialize(String resource_uri) throws DBInitException
      Description copied from interface: DataSource
      The method is called to initialize the data repository.
      Specified by:
      initialize in interface DataSource
      Parameters:
      resource_uri - value in most cases representing the database connection string.
      Throws:
      DBInitException
    • release

      public void release(Statement stmt, ResultSet rs)
      Description copied from interface: DataRepository
      A helper method to release resources from the statement and result set. This is most common operation for all database calls, therefore it does make sense to add such a utility method to the API.
      Specified by:
      release in interface DataRepository
      Parameters:
      stmt - a Statement variable to release resources for. Might be null.
      rs - a ResultSet variable to release resources for. Might be null.
    • startTransaction

      public void startTransaction() throws SQLException
      Description copied from interface: DataRepository
      Starts transaction on the DataRepository connection. Please note that calling this method on the repository pool has no effect. You have to obtain particular repository handle first, before you can start transaction.
      Specified by:
      startTransaction in interface DataRepository
      Throws:
      SQLException
    • commit

      public void commit() throws SQLException
      Description copied from interface: DataRepository
      Commits current transaction on the DataRepository connection. Please note that calling this method on the repository pool has no effect. You have to obtain particular repository handle first, before you can start transaction.
      Specified by:
      commit in interface DataRepository
      Throws:
      SQLException
    • rollback

      public void rollback() throws SQLException
      Description copied from interface: DataRepository
      Rolls back started transaction on the DataRepository connection. Please note that calling this method on the repository pool has no effect. You have to obtain particular repository handle first, before you can start transaction.
      Specified by:
      rollback in interface DataRepository
      Throws:
      SQLException
    • endTransaction

      public void endTransaction() throws SQLException
      Description copied from interface: DataRepository
      Ends current transaction on the DataRepository connection. Please note that calling this method on the repository pool has no effect. You have to obtain particular repository handle first, before you can start transaction.
      Specified by:
      endTransaction in interface DataRepository
      Throws:
      SQLException
    • getPoolSize

      public int getPoolSize()
      Specified by:
      getPoolSize in interface DataRepository