Package tigase.db
Interface DataRepository
- All Superinterfaces:
DataSource
,Repository
- All Known Implementing Classes:
DataRepoPool
,DataRepositoryImpl
,DataRepositoryPool
The interface defines a generic data repository for storing arbitrary data in any application specific form. This
interface unifies database (repository) access allowing for easier way to create database connections pools or
database fail-over mechanisms.
Created: Jun 16, 2010 3:34:32 PM
Created: Jun 16, 2010 3:34:32 PM
- Author:
- Artur Hefczyc
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic enum
Helper enumeration with types of supported databases.Nested classes/interfaces inherited from interface tigase.db.Repository
Repository.Meta, Repository.SchemaId
-
Field Summary
Fields inherited from interface tigase.db.DataSource
log
-
Method Summary
Modifier and TypeMethodDescriptionboolean
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 databaseint
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.default Timestamp
getTimestamp
(ResultSet rs, int pos) Helper method to get timestamp from result set.default Timestamp
getTimestamp
(ResultSet rs, String field) Helper method to get timestamp from result set.void
initPreparedStatement
(String stIdKey, String query) Initializes a prepared statement for a given query and stores it internally under the given id key.void
initPreparedStatement
(String stIdKey, String query, int autoGeneratedKeys) Initializes a prepared statement for a given query and stores it internally under the given id key.void
A helper method to release resources from the statement and result set.void
void
rollback()
Rolls back started transaction on the DataRepository connection.default void
setTimestamp
(PreparedStatement stmt, int pos, Timestamp timestamp) Helper method to set timestamp into prepared statements.void
Starts transaction on the DataRepository connection.takeRepoHandle
(BareJID user_id) ReturnsDataRepository
instance.Methods inherited from interface tigase.db.DataSource
automaticSchemaManagement, checkConnectivity, checkSchemaVersion, getSchemaVersion, initialize
Methods inherited from interface tigase.db.Repository
initRepository
-
Field Details
-
UTC_CALENDAR
-
-
Method Details
-
checkTable
The method checks whether a table for the given name exists in the database.- 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
The method checks whether a table for the given name exists in the database and if it does not, it automatically creates it.- 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.
-
commit
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.- Throws:
SQLException
-
createStatement
Creates a SQL statement on which SQL queries can be executed later by the higher repository layer.- 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.
-
endTransaction
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.- Throws:
SQLException
-
initPreparedStatement
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.- Parameters:
stIdKey
- is a statement identification key.query
- is a query for the prepared statement.- Throws:
SQLException
-
initPreparedStatement
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.- 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
-
release
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.- Parameters:
stmt
- aStatement
variable to release resources for. Might be null.rs
- aResultSet
variable to release resources for. Might be null.
-
releaseRepoHandle
-
rollback
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.- Throws:
SQLException
-
startTransaction
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.- Throws:
SQLException
-
takeRepoHandle
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.- Parameters:
user_id
- is user account ID for which we acquire the handle.- Returns:
- DataRepository instance.
-
getDatabaseType
DataRepository.dbTypes getDatabaseType()Returns type of DataRepository database- Returns:
- a value of
dbTypes
-
getPoolSize
int getPoolSize() -
getPreparedStatement
Returns a prepared statement for a given key.- 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
Returns a prepared statement for a given key.- 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
String getResourceUri()Returns a DB connection string or DB connection URI.- Specified by:
getResourceUri
in interfaceDataSource
- Returns:
- a
String
value representing database connection string.
-
setTimestamp
Helper method to set timestamp into prepared statements. Provides proper calendar when needed to adjust timestamps so that they are stored in the database in proper time zone.- Throws:
SQLException
-
getTimestamp
Helper method to get timestamp from result set. Provides proper calendar when needed to adjust timestamps so that they are stored in the database in proper time zone.- Throws:
SQLException
-
getTimestamp
Helper method to get timestamp from result set. Provides proper calendar when needed to adjust timestamps so that they are stored in the database in proper time zone.- Throws:
SQLException
-