|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectmessif.buckets.storage.impl.DatabaseStorage<T>
T
- the class of objects stored in this storagepublic class DatabaseStorage<T>
Database-based storage. The objects in this storage are stored in a relational database that is accessed via JDBC.
A database table that will hold the stored data must be created. The primary key of the table must be integer compatible and must be automatically generated by the database. The data column types must match the given column convertors.
Nested Class Summary | |
---|---|
static class |
DatabaseStorage.BinarySerializableColumnConvertor<T>
Column convertor that uses a database BLOB into which instances of T are
binary serialized/deserialized . |
static interface |
DatabaseStorage.ColumnConvertor<T>
Provides a conversion between database column data and object instances. |
Field Summary | |
---|---|
static DatabaseStorage.ColumnConvertor<LocalAbstractObject> |
locatorColumnConvertor
Column convertor that stores/restores a locator URI
of LocalAbstractObject s stored in the database. |
static DatabaseStorage.ColumnConvertor<java.lang.Object> |
trivialColumnConvertor
Column convertor that stores/restores instances supported directly by the database. |
Constructor Summary | |
---|---|
DatabaseStorage(java.lang.Class<? extends T> storedObjectsClass,
java.lang.String dbConnUrl,
java.util.Properties dbConnInfo,
java.lang.String tableName,
java.lang.String primaryKeyColumn,
java.lang.String[] columnNames,
DatabaseStorage.ColumnConvertor<T>[] columnConvertors)
Constructs an empty database storage. |
Method Summary | ||
---|---|---|
boolean |
add(T object)
Adds the specified object to this instance. |
|
protected void |
closeConnection()
Closes connection to the database. |
|
static
|
create(java.lang.Class<T> storedObjectsClass,
java.util.Map<java.lang.String,java.lang.Object> parameters)
Creates a new database storage. |
|
void |
destroy()
Destroy this index. |
|
protected java.sql.PreparedStatement |
execute(java.sql.PreparedStatement statement,
java.lang.String sql,
java.lang.Integer primaryKey,
T object)
Prepares and executes an SQL command. |
|
void |
finalize()
Finalize this index. |
|
protected java.sql.Connection |
getConnection()
Returns the database connection of this storage. |
|
java.lang.Class<? extends T> |
getStoredObjectsClass()
Returns the class of objects that the this storage works with. |
|
boolean |
isEmpty()
Returns true if this storage contains no elements. |
|
T |
read(int address)
Reads the object stored at the specified address in this storage. |
|
void |
remove(int address)
Removes the object stored at the specified address in this storage. |
|
IntStorageSearch<T> |
search()
Returns a search for all objects in this index. |
|
|
search(IndexComparator<? super C,? super T> comparator,
C key)
Returns a search for objects in this index that have any of the specified keys. |
|
|
search(IndexComparator<? super C,? super T> comparator,
C from,
C to)
Returns a search for objects in this index that are within the specified key-range. |
|
|
search(IndexComparator<? super C,? super T> comparator,
java.util.Collection<? extends C> keys)
Returns a search for objects in this index that have any of the specified keys. |
|
int |
size()
Returns the number of elements in this storage. |
|
IntAddress<T> |
store(T object)
Stores an object in this storage. |
Methods inherited from class java.lang.Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final DatabaseStorage.ColumnConvertor<LocalAbstractObject> locatorColumnConvertor
locator URI
of LocalAbstractObject
s stored in the database. Note that the associated column must
be String
-compatible. When restoring an object, its key is set only if it has no key yet.
public static final DatabaseStorage.ColumnConvertor<java.lang.Object> trivialColumnConvertor
Integer
s or Double
s, BLOBs as byte[] arrays, etc.
Constructor Detail |
---|
public DatabaseStorage(java.lang.Class<? extends T> storedObjectsClass, java.lang.String dbConnUrl, java.util.Properties dbConnInfo, java.lang.String tableName, java.lang.String primaryKeyColumn, java.lang.String[] columnNames, DatabaseStorage.ColumnConvertor<T>[] columnConvertors) throws java.lang.IllegalArgumentException
storedObjectsClass
- the class of objects that the storage will work withdbConnUrl
- the database connection URL (e.g. "jdbc:mysql://localhost/somedb")dbConnInfo
- additional parameters of the connection (e.g. "user" and "password")tableName
- the name of the table in the databaseprimaryKeyColumn
- the name of the column that is the primary key of the tablecolumnNames
- the names of columns where the data are storedcolumnConvertors
- the convertors that convert between the storage instances and database column;
there must be one convertor for every data column name from columnNames
java.lang.IllegalArgumentException
- if the column names and column convertors do not matchMethod Detail |
---|
public void finalize() throws java.lang.Throwable
ModifiableIndex
finalize
in interface ModifiableIndex<T>
finalize
in interface Storage<T>
finalize
in class java.lang.Object
java.lang.Throwable
- if there was an error while cleaningpublic void destroy() throws java.lang.Throwable
ModifiableIndex
destroy
in interface ModifiableIndex<T>
destroy
in interface Storage<T>
java.lang.Throwable
- if there was an error while cleaningprotected final java.sql.Connection getConnection() throws java.sql.SQLException
java.sql.SQLException
- if there was a problem connecting to the databaseprotected void closeConnection() throws java.sql.SQLException
java.sql.SQLException
- if there was an error while closing the connectionprotected final java.sql.PreparedStatement execute(java.sql.PreparedStatement statement, java.lang.String sql, java.lang.Integer primaryKey, T object) throws java.sql.SQLException, BucketStorageException
ResultSet
returned by the execution can be retrieved by Statement.getResultSet()
.
Note that if a SQLRecoverableException
is thrown while executing,
the current connection is closed
and the command
retried.
statement
- the previous cached statement that matches the given sql
(can be null)sql
- the SQL command to prepare and execute; one parameter (using "?") for the primary key or n parameters for data can be specifiedprimaryKey
- the value for the one SQL parameter of the primary key (if null the parameter is not set)object
- the instance that is converted to database columns using columnConvertors
(if null the parameters are not set)
java.sql.SQLException
- if there was an unrecoverable error when parsing or executing the SQL command
BucketStorageException
- if there was an error converting a column valuepublic static <T> DatabaseStorage<T> create(java.lang.Class<T> storedObjectsClass, java.util.Map<java.lang.String,java.lang.Object> parameters) throws java.lang.IllegalArgumentException
T
- the class of objects that the new storage will work withstoredObjectsClass
- the class of objects that the new storage will work withparameters
- list of named parameters (see above)
java.lang.IllegalArgumentException
- if the parameters specified are invalid (null values, etc.)public java.lang.Class<? extends T> getStoredObjectsClass()
public boolean isEmpty()
public int size()
size
in interface Index<T>
public IntAddress<T> store(T object) throws BucketStorageException
Storage
store
in interface IntStorage<T>
store
in interface Storage<T>
object
- the object to store
BucketStorageException
- if there was an error writing the datapublic T read(int address) throws BucketStorageException
IntStorage
read
in interface IntStorage<T>
address
- the address of the object to read
BucketStorageException
- if there was an error reading the datapublic void remove(int address) throws BucketStorageException, java.lang.UnsupportedOperationException
IntStorage
remove
in interface IntStorage<T>
address
- the address of the object to remove
BucketStorageException
- if there was an error deleting an object
java.lang.UnsupportedOperationException
- if this storage does not support removal of objectspublic boolean add(T object) throws BucketStorageException
Addible
add
in interface Addible<T>
object
- the object to be added
BucketStorageException
- if there was an error adding the objectpublic IntStorageSearch<T> search() throws java.lang.IllegalStateException
Index
search
in interface Index<T>
search
in interface ModifiableIndex<T>
search
in interface IntStorageIndexed<T>
search
in interface StorageIndexed<T>
java.lang.IllegalStateException
- if there was an error initializing the search on this indexpublic <C> IntStorageSearch<T> search(IndexComparator<? super C,? super T> comparator, C key) throws java.lang.IllegalStateException
Index
key
need not necessarily be of the same class as the objects stored
in this index and also consistency with equals
is not required.
Note that objects are not necessarily returned in the order defined by the comparator
search
in interface Index<T>
search
in interface ModifiableIndex<T>
search
in interface IntStorageIndexed<T>
search
in interface StorageIndexed<T>
C
- the type of the key used by the searchcomparator
- compares the key
with the stored objectskey
- the key to search for
java.lang.IllegalStateException
- if there was an error initializing the search on this indexpublic <C> IntStorageSearch<T> search(IndexComparator<? super C,? super T> comparator, java.util.Collection<? extends C> keys) throws java.lang.IllegalStateException
Index
key
need not necessarily be of the same class as the objects stored
in this index and also consistency with equals
is not required.
Note that objects are not necessarily returned in the order defined by the comparator
search
in interface Index<T>
search
in interface ModifiableIndex<T>
search
in interface IntStorageIndexed<T>
search
in interface StorageIndexed<T>
C
- the type of the keys used by the searchcomparator
- compares the keys
with the stored objectskeys
- the keys to search for (at least one key must be given)
java.lang.IllegalStateException
- if there was an error initializing the search on this indexpublic <C> IntStorageSearch<T> search(IndexComparator<? super C,? super T> comparator, C from, C to) throws java.lang.IllegalStateException
Index
[from, to]
need not necessarily be of the same
class as the objects stored in this index, however, the comparator must be
able to compare the boundaries and the internal objects.
Note that objects are not returned in the order defined by the comparator
search
in interface Index<T>
search
in interface ModifiableIndex<T>
search
in interface IntStorageIndexed<T>
search
in interface StorageIndexed<T>
C
- the type the boundaries used by the searchcomparator
- compares the boundaries [from, to]
with the stored objectsfrom
- the lower bound on the searched objects, i.e. objects greater or equal are returnedto
- the upper bound on the searched objects, i.e. objects smaller or equal are returned
java.lang.IllegalStateException
- if there was an error initializing the search on this index
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |