Package tigase.db.jdbc
Class DataRepositoryImpl
java.lang.Object
tigase.db.jdbc.DataRepositoryImpl
- All Implemented Interfaces:
DataRepository
,DataSource
,Repository
,RepositoryVersionAware
,StatisticsProviderIfc
public class DataRepositoryImpl
extends Object
implements DataRepository, StatisticsProviderIfc, RepositoryVersionAware
Created: Sep 3, 2010 5:55:41 PM
- Author:
- Artur Hefczyc
-
Nested Class Summary
Nested classes/interfaces inherited from interface tigase.db.DataRepository
DataRepository.dbTypes
Nested classes/interfaces inherited from interface tigase.db.Repository
Repository.Meta, Repository.SchemaId
Nested classes/interfaces inherited from interface tigase.db.util.RepositoryVersionAware
RepositoryVersionAware.SchemaVersion
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final int
static final String
static final String
static final String
Fields inherited from interface tigase.db.DataRepository
UTC_CALENDAR
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
void
checkConnectivity
(Duration watchdogTime) This method is called by data source bean watchdog mechanism to ensure that there is proper connectivity to underlying data storage.boolean
checkTable
(String tableName) The method checks whether a table for the given name exists in the database.boolean
checkTable
(String tableName, String createTableQuery) The method checks whether a table for the given name exists in the database and if it does not, it automatically creates it.void
commit()
Commits current transaction on the DataRepository connection.createStatement
(BareJID user_id) Creates a SQL statement on which SQL queries can be executed later by the higher repository layer.void
Ends current transaction on the DataRepository connection.Returns type of DataRepository databaseprotected int
int
getPreparedStatement
(int hashCode, String stIdKey) Returns a prepared statement for a given key.getPreparedStatement
(BareJID user_id, String stIdKey) Returns a prepared statement for a given key.Returns a DB connection string or DB connection URI.getSchemaVersion
(String component) Method obtains version of the schema for particular component stored in the database.void
getStatistics
(String compName, StatisticsList list) void
initialize
(String resource_uri) The method is called to initialize the data repository.void
initPreparedStatement
(String key, String query) Initializes a prepared statement for a given query and stores it internally under the given id key.void
initPreparedStatement
(String key, String query, int autoGeneratedKeys) Initializes a prepared statement for a given query and stores it internally under the given id key.void
initRepository
(String resource_uri, Map<String, String> params) Deprecated.static DataRepository.dbTypes
parseDatabaseType
(String resource_uri) void
A helper method to release resources from the statement and result set.void
void
rollback()
Rolls back started transaction on the DataRepository connection.void
Starts transaction on the DataRepository connection.takeRepoHandle
(BareJID user_id) ReturnsDataRepository
instance.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface tigase.db.DataRepository
getTimestamp, getTimestamp, setTimestamp
Methods inherited from interface tigase.db.DataSource
checkSchemaVersion
Methods inherited from interface tigase.db.util.RepositoryVersionAware
getVersion, updateSchema
-
Field Details
-
DERBY_CONNVALID_QUERY
- See Also:
-
JDBC_CONNVALID_QUERY
- See Also:
-
JDBC_SCHEMA_VERSION_QUERY
- See Also:
-
MYSQL_CHECK_TABLE_QUERY
- See Also:
-
PGSQL_CHECK_TABLE_QUERY
- See Also:
-
DERBY_CHECK_TABLE_QUERY
- See Also:
-
SQLSERVER_CHECK_TABLE_QUERY
- See Also:
-
OTHER_CHECK_TABLE_QUERY
- See Also:
-
SP_STARTS_WITH
- See Also:
-
QUERY_TIMEOUT_PROP_KEY
- See Also:
-
QUERY_TIMEOUT
public static final int QUERY_TIMEOUT- See Also:
-
DB_CONN_TIMEOUT_PROP_KEY
- See Also:
-
DB_CONN_TIMEOUT
public static final int DB_CONN_TIMEOUT- See Also:
-
-
Constructor Details
-
DataRepositoryImpl
public DataRepositoryImpl()
-
-
Method Details
-
automaticSchemaManagement
public boolean automaticSchemaManagement()- Specified by:
automaticSchemaManagement
in interfaceDataSource
-
getSchemaVersion
Description copied from interface:DataSource
Method obtains version of the schema for particular component stored in the database.- Specified by:
getSchemaVersion
in interfaceDataSource
- Parameters:
component
- name of the component for which we want to get the schema version- Returns:
- an optional value of the version.
-
checkTable
Description copied from interface:DataRepository
The method checks whether a table for the given name exists in the database.- Specified by:
checkTable
in interfaceDataRepository
- Parameters:
tableName
- is aString
value of the table name to check- Returns:
true
boolean
value if the table exist in the database andfalse
if the table was not found.- Throws:
SQLException
- if there was a problem accessing database.
-
checkTable
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 interfaceDataRepository
- Parameters:
tableName
- is aString
value of the table name to checkcreateTableQuery
- is aString
with the query to create table- Returns:
true
boolean
value if the table exist in the database andfalse
if the table was not found.- Throws:
SQLException
- if there was a problem accessing database.
-
checkConnectivity
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 interfaceDataSource
- Parameters:
watchdogTime
- time which should pass between checks
-
createStatement
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 interfaceDataRepository
- 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
Description copied from interface:DataRepository
Returns a prepared statement for a given key.- Specified by:
getPreparedStatement
in interfaceDataRepository
- 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
Description copied from interface:DataRepository
Returns a prepared statement for a given key.- Specified by:
getPreparedStatement
in interfaceDataRepository
- 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
Description copied from interface:DataRepository
Returns a DB connection string or DB connection URI.- Specified by:
getResourceUri
in interfaceDataRepository
- Specified by:
getResourceUri
in interfaceDataSource
- Returns:
- a
String
value representing database connection string.
-
getDatabaseType
Description copied from interface:DataRepository
Returns type of DataRepository database- Specified by:
getDatabaseType
in interfaceDataRepository
- Returns:
- a value of
dbTypes
-
initPreparedStatement
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 usinggetPreparedStatement(stIdKey)
method.- Specified by:
initPreparedStatement
in interfaceDataRepository
- Parameters:
key
- is a statement identification key.query
- is a query for the prepared statement.- Throws:
SQLException
-
initPreparedStatement
public void initPreparedStatement(String key, 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 usinggetPreparedStatement(stIdKey)
method.- Specified by:
initPreparedStatement
in interfaceDataRepository
- 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:
SQLException
-
initialize
Description copied from interface:DataSource
The method is called to initialize the data repository.- Specified by:
initialize
in interfaceDataSource
- Parameters:
resource_uri
- value in most cases representing the database connection string.- Throws:
DBInitException
-
parseDatabaseType
-
initRepository
@Deprecated public void initRepository(String resource_uri, Map<String, String> params) throws DBInitExceptionDeprecated.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 viaresource_uri
parameter as the database connection string or viaparams
map if the required repository parameters are more complex or both.- Specified by:
initRepository
in interfaceRepository
- Parameters:
resource_uri
- value in most cases representing the database connection string.params
- is aMap
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
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 interfaceDataRepository
- Parameters:
stmt
- aStatement
variable to release resources for. Might be null.rs
- aResultSet
variable to release resources for. Might be null.
-
takeRepoHandle
Description copied from interface:DataRepository
ReturnsDataRepository
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 interfaceDataRepository
- Parameters:
user_id
- is user account ID for which we acquire the handle.- Returns:
- DataRepository instance.
-
startTransaction
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 interfaceDataRepository
- Throws:
SQLException
-
commit
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 interfaceDataRepository
- Throws:
SQLException
-
rollback
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 interfaceDataRepository
- Throws:
SQLException
-
endTransaction
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 interfaceDataRepository
- Throws:
SQLException
-
releaseRepoHandle
- Specified by:
releaseRepoHandle
in interfaceDataRepository
-
getStatistics
- Specified by:
getStatistics
in interfaceStatisticsProviderIfc
-
getPoolSize
public int getPoolSize()- Specified by:
getPoolSize
in interfaceDataRepository
-
getParam
-