Class DataRepositoryImpl

    • Field Detail

      • DERBY_CONNVALID_QUERY

        public static final java.lang.String DERBY_CONNVALID_QUERY
        See Also:
        Constant Field Values
      • JDBC_CONNVALID_QUERY

        public static final java.lang.String JDBC_CONNVALID_QUERY
        See Also:
        Constant Field Values
      • JDBC_SCHEMA_VERSION_QUERY

        public static final java.lang.String JDBC_SCHEMA_VERSION_QUERY
        See Also:
        Constant Field Values
      • MYSQL_CHECK_TABLE_QUERY

        public static final java.lang.String MYSQL_CHECK_TABLE_QUERY
        See Also:
        Constant Field Values
      • PGSQL_CHECK_TABLE_QUERY

        public static final java.lang.String PGSQL_CHECK_TABLE_QUERY
        See Also:
        Constant Field Values
      • DERBY_CHECK_TABLE_QUERY

        public static final java.lang.String DERBY_CHECK_TABLE_QUERY
        See Also:
        Constant Field Values
      • SQLSERVER_CHECK_TABLE_QUERY

        public static final java.lang.String SQLSERVER_CHECK_TABLE_QUERY
        See Also:
        Constant Field Values
      • OTHER_CHECK_TABLE_QUERY

        public static final java.lang.String OTHER_CHECK_TABLE_QUERY
        See Also:
        Constant Field Values
      • QUERY_TIMEOUT_PROP_KEY

        public static final java.lang.String QUERY_TIMEOUT_PROP_KEY
        See Also:
        Constant Field Values
      • DB_CONN_TIMEOUT_PROP_KEY

        public static final java.lang.String DB_CONN_TIMEOUT_PROP_KEY
        See Also:
        Constant Field Values
    • Constructor Detail

      • DataRepositoryImpl

        public DataRepositoryImpl()
    • Method Detail

      • getSchemaVersion

        public java.util.Optional<Version> getSchemaVersion​(java.lang.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​(java.lang.String tableName)
                           throws java.sql.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:
        java.sql.SQLException - if there was a problem accessing database.
      • checkTable

        public boolean checkTable​(java.lang.String tableName,
                                  java.lang.String createTableQuery)
                           throws java.sql.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:
        java.sql.SQLException - if there was a problem accessing database.
      • checkConnectivity

        public void checkConnectivity​(java.time.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
      • createStatement

        public java.sql.Statement createStatement​(BareJID user_id)
                                           throws java.sql.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:
        java.sql.SQLException - if a JDBC error occurs.
      • getPreparedStatement

        public java.sql.PreparedStatement getPreparedStatement​(BareJID user_id,
                                                               java.lang.String stIdKey)
                                                        throws java.sql.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:
        java.sql.SQLException
      • getPreparedStatement

        public java.sql.PreparedStatement getPreparedStatement​(int hashCode,
                                                               java.lang.String stIdKey)
                                                        throws java.sql.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:
        java.sql.SQLException
      • getResourceUri

        public java.lang.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.
      • initPreparedStatement

        public void initPreparedStatement​(java.lang.String key,
                                          java.lang.String query)
                                   throws java.sql.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:
        key - is a statement identification key.
        query - is a query for the prepared statement.
        Throws:
        java.sql.SQLException
      • initPreparedStatement

        public void initPreparedStatement​(java.lang.String key,
                                          java.lang.String query,
                                          int autoGeneratedKeys)
                                   throws java.sql.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:
        key - is a statement identification key.
        query - is a query for the prepared statement.
        autoGeneratedKeys - defines if statement should return auto generated keys
        Throws:
        java.sql.SQLException
      • initialize

        public void initialize​(java.lang.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
      • parseDatabaseType

        public static DataRepository.dbTypes parseDatabaseType​(java.lang.String resource_uri)
      • initRepository

        @Deprecated
        public void initRepository​(java.lang.String resource_uri,
                                   java.util.Map<java.lang.String,​java.lang.String> params)
                            throws DBInitException
        Deprecated.
        Description copied from interface: Repository
        Method is deprecated and should not be user any more.
        The method is called to initialize the data repository. Depending on the implementation all the initialization parameters can be passed either via resource_uri parameter as the database connection string or via params map if the required repository parameters are more complex or both.
        Specified by:
        initRepository in interface Repository
        Parameters:
        resource_uri - value in most cases representing the database connection string.
        params - is a Map with repository properties necessary to initialize and perform all the functions. The initialization parameters are implementation dependent.
        Throws:
        DBInitException - if there was an error during repository initialization. Some implementations, though, perform so called lazy initialization so even though there is a problem with the underlying repository it may not be signaled through this method call.
      • release

        public void release​(java.sql.Statement stmt,
                            java.sql.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.
      • 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.
      • startTransaction

        public void startTransaction()
                              throws java.sql.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:
        java.sql.SQLException
      • commit

        public void commit()
                    throws java.sql.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:
        java.sql.SQLException
      • rollback

        public void rollback()
                      throws java.sql.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:
        java.sql.SQLException
      • endTransaction

        public void endTransaction()
                            throws java.sql.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:
        java.sql.SQLException
      • getParam

        protected int getParam​(java.lang.String key,
                               java.util.Map<java.lang.String,​java.lang.String> params,
                               int def)