public class IndexedObjectDatabase extends ObjectDatabaseFile
IndexedObjectDatabase
class provides a mechanism for
using a key value to an object serialized to a file.
A IndexedObjectDatabase
object encapsulates access to a
ObjectDatabaseFile
via a set of ObjectIndex
s.
When an object is stored, it is associated with a key value by storing the
key and an object reference in each attached ObjectIndex
.
Objects may then be retrieved either by providing a key and index pair,
or through an iterator created for an index associated with the database.
Rationale
: The Java Database Connection (JDBC) is
often overkill for many applications. Sun designed JDBC to access
enterprise-level database systems, such as DB2, SQL Server, and Oracle.
Those systems, while very flexible and expansive, come with a high
price tag, both in terms of system requirements and database overhead.
BTreeDatabase
provides a simpler tool for associating
"key" information with data in external storage.
BTreeIndex
,
DatabaseException
,
KeyObject
,
ObjectIndex
DEL_LIST_END, IS_ACTIVE, IS_DELETED, m_dataFile, m_fileName, m_filter, m_firstDeleted
Constructor | Description |
---|---|
IndexedObjectDatabase(java.lang.String filename,
boolean is_new) |
Opens an existing
IndexedObjectDatabase , using a supplied file name. |
Modifier and Type | Method | Description |
---|---|---|
void |
attachIndex(ObjectIndex index) |
Attaches an index object to this database.
|
void |
insert(KeyObject[] key,
java.io.Serializable obj) |
Write a new object to the database, associating it with the provided keys.
|
java.lang.Object |
read(IndexIterator iterator) |
Read the object associated with a given iterator.
|
java.lang.Object |
read(KeyObject key,
ObjectIndex index) |
Read the object associated with a given key.
|
void |
remove(KeyObject[] key) |
Delete the record associated with a given key.
|
void |
removeIndex(ObjectIndex index) |
Removes the association of an index with this database.
|
void |
write(KeyObject[] key,
java.io.Serializable obj) |
Writes an object to the database, associating it with the provided key, replacing
an existing object with a new one.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
assignFilter, close, compact, createObjectInputStream, createObjectOutputStream, delete, getFD, getFilePointer, length, readObject, rewind, rewriteObject, seek, skip, writeObject
public IndexedObjectDatabase(java.lang.String filename, boolean is_new) throws java.io.IOException
IndexedObjectDatabase
, using a supplied file name.filename
- The name of an external database file containing serialized objects.
If filename
exists, it is opened; otherwise, the constructor
creates the file and initializes it.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classpublic void attachIndex(ObjectIndex index)
index
- An ObjectIndex
to be associated with this database.ObjectIndex
public void removeIndex(ObjectIndex index)
index
- An ObjectIndex
that should no longer be associated with this database.ObjectIndex
public void insert(KeyObject[] key, java.io.Serializable obj) throws java.io.IOException, java.lang.ClassNotFoundException
key
- The key values associated with obj
. There must be
one key for each attached index; the keys are associated with
the indexes in order of attachment; in other words, the first key
is associated with the first index attached, etc.obj
- The object to be stored in the database.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classjava.lang.ClassNotFoundException
- for a casting error, usually when a persistent object or index does
match the expected typeDatabaseException
- when an error occurs during database processingDatabaseException
,
KeyObject
public void write(KeyObject[] key, java.io.Serializable obj) throws java.io.IOException, java.lang.ClassNotFoundException
key
- key values associated with obj
. There must be
one key for each attached index; the keys are associated with
the indexes in order of attachment; in other words, the first key
is associated with the first index attached, etc.obj
- record object to be stored in the database.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classjava.lang.ClassNotFoundException
- for a casting error, usually when a persistent object or index does
match the expected typeDatabaseException
- when an error occurs during database processingDatabaseException
,
KeyObject
public java.lang.Object read(KeyObject key, ObjectIndex index) throws java.io.IOException, java.lang.ClassNotFoundException
key
- key identifying the record to be readindex
- index used to retrieve the object by key
.key
, or null
if no such object could be found.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classjava.lang.ClassNotFoundException
- for a casting error, usually when a persistent object or index does
match the expected typeDatabaseException
- when an error occurs during database processingDatabaseException
,
KeyObject
public java.lang.Object read(IndexIterator iterator) throws java.io.IOException, java.lang.ClassNotFoundException
iterator
- a BTreeIterator
pointing to the requested recorditerator
, or null
if the iterator was invalid or no such record could be found.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classjava.lang.ClassNotFoundException
- for a casting error, usually when a persistent object or index does
match the expected typeDatabaseException
- when an error occurs during database processingDatabaseException
,
BTreeIterator
,
KeyObject
public void remove(KeyObject[] key) throws java.io.IOException, DatabaseException, java.lang.ClassNotFoundException
key
- array of keys identifying the record to be deleted.index
- index used to retrive the object by key
.java.io.IOException
- when an I/O exception is thrown by an underlying java.io.* classjava.lang.ClassNotFoundException
- for a casting error, usually when a persistent object or index does
match the expected typeDatabaseException
- when an error occurs during database processingDatabaseException
,
KeyObject