com.compomics.util.db
Class ObjectsDB

java.lang.Object
  extended by com.compomics.util.db.ObjectsDB
All Implemented Interfaces:
java.io.Serializable

public class ObjectsDB
extends java.lang.Object
implements java.io.Serializable

A database which can easily be used to store objects.

Author:
Marc Vaudel
See Also:
Serialized Form

Constructor Summary
ObjectsDB(java.lang.String folder, java.lang.String dbName, boolean deleteOldDatabase, ObjectsCache objectsCache)
          Constructor.
 
Method Summary
 void addTable(java.lang.String tableName)
          Adds the desired table in the database.
 void close()
          Closes the db connection.
 java.lang.String correctTableName(java.lang.String tableName)
          Surrounds the table name with quotation marks such that spaces etc are allowed.
 void deleteObject(java.lang.String tableName, java.lang.String objectKey)
          Deletes an object from the desired table.
 void establishConnection(java.lang.String aDbFolder, boolean deleteOldDatabase, ObjectsCache objectsCache)
          Establishes connection to the database.
 java.lang.String getName()
          Returns the database name.
 ObjectsCache getObjectsCache()
          Returns the cache used by this database.
 boolean inDB(java.lang.String tableName, java.lang.String objectKey, boolean cache)
          Indicates whether an object is loaded in the given table.
 void insertObject(java.lang.String tableName, java.lang.String objectKey, java.lang.Object object, boolean inCache)
          Stores an object in the desired table.
 void insertObjects(java.lang.String tableName, java.util.HashMap<java.lang.String,java.lang.Object> objects, WaitingHandler waitingHandler)
          Inserts a set of objects in the given table.
 void loadObjects(java.lang.String tableName, java.util.ArrayList<java.lang.String> keys, WaitingHandler waitingHandler)
          Loads some objects from a table in the cache.
 void loadObjects(java.lang.String tableName, WaitingHandler waitingHandler)
          Loads all objects from a table in the cache.
 java.lang.Object retrieveObject(java.lang.String tableName, java.lang.String objectKey)
          Retrieves an object from the desired table.
 void setObjectCache(ObjectsCache objectCache)
          Sets the object cache to be used by this database.
 java.util.ArrayList<java.lang.String> tableContent(java.lang.String tableName)
          Returns an arraylist with the content in the given table.
 void updateObject(java.lang.String tableName, java.lang.String objectKey, java.lang.Object object)
          Updates an object in the cache or in the tables if not in cache.
 void updateObject(java.lang.String tableName, java.lang.String objectKey, java.lang.Object object, boolean cache)
          Updates an object in the cache or in the tables if not in cache or if cache is wrong.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ObjectsDB

public ObjectsDB(java.lang.String folder,
                 java.lang.String dbName,
                 boolean deleteOldDatabase,
                 ObjectsCache objectsCache)
          throws java.sql.SQLException
Constructor.

Parameters:
folder - absolute path of the folder where to establish the database
dbName - name of the database
deleteOldDatabase - if true, tries to delete the old database
objectsCache -
Throws:
java.sql.SQLException
Method Detail

getName

public java.lang.String getName()
Returns the database name.

Returns:
the database name

getObjectsCache

public ObjectsCache getObjectsCache()
Returns the cache used by this database.

Returns:
the cache used by this database

setObjectCache

public void setObjectCache(ObjectsCache objectCache)
Sets the object cache to be used by this database.

Parameters:
objectCache - the object cache to be used by this database

addTable

public void addTable(java.lang.String tableName)
              throws java.sql.SQLException
Adds the desired table in the database.

Parameters:
tableName - the name of the table
Throws:
java.sql.SQLException - exception thrown whenever a problem occurred while working with the database

insertObject

public void insertObject(java.lang.String tableName,
                         java.lang.String objectKey,
                         java.lang.Object object,
                         boolean inCache)
                  throws java.sql.SQLException,
                         java.io.IOException
Stores an object in the desired table. When multiple objects are to be inserted, use insertObjects instead.

Parameters:
tableName - the name of the table
objectKey - the key of the object
object - the object to store
inCache - boolean indicating whether the method shall try to put the object in cache or not
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while storing the object
java.io.IOException - exception thrown whenever an error occurred while writing in the database

insertObjects

public void insertObjects(java.lang.String tableName,
                          java.util.HashMap<java.lang.String,java.lang.Object> objects,
                          WaitingHandler waitingHandler)
                   throws java.sql.SQLException,
                          java.io.IOException
Inserts a set of objects in the given table.

Parameters:
tableName - the name of the table
objects - map of the objects (object key -> object)
waitingHandler - a waiting handler displaying the progress (can be null). The progress will be displayed on the secondary progress bar.
Throws:
java.sql.SQLException
java.io.IOException

loadObjects

public void loadObjects(java.lang.String tableName,
                        WaitingHandler waitingHandler)
                 throws java.sql.SQLException,
                        java.io.IOException,
                        java.lang.ClassNotFoundException
Loads all objects from a table in the cache.

Parameters:
tableName - the table name
waitingHandler - the waiting handler
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while interrogating the database
java.io.IOException - exception thrown whenever an error occurred while reading the database
java.lang.ClassNotFoundException - exception thrown whenever the class of the object is not found when deserializing it.

loadObjects

public void loadObjects(java.lang.String tableName,
                        java.util.ArrayList<java.lang.String> keys,
                        WaitingHandler waitingHandler)
                 throws java.sql.SQLException,
                        java.io.IOException,
                        java.lang.ClassNotFoundException
Loads some objects from a table in the cache.

Parameters:
tableName - the table name
keys - the keys of the objects to load
waitingHandler - the waiting handler, will only be increased
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while interrogating the database
java.io.IOException - exception thrown whenever an error occurred while reading the database
java.lang.ClassNotFoundException - exception thrown whenever the class of the object is not found when deserializing it.

retrieveObject

public java.lang.Object retrieveObject(java.lang.String tableName,
                                       java.lang.String objectKey)
                                throws java.sql.SQLException,
                                       java.io.IOException,
                                       java.lang.ClassNotFoundException
Retrieves an object from the desired table. The key should be unique otherwise the first object will be returned. Returns null if the key is not found.

Parameters:
tableName - the name of the table
objectKey - the object key
Returns:
the object stored in the table.
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while interrogating the database
java.io.IOException - exception thrown whenever an error occurred while reading the database
java.lang.ClassNotFoundException - exception thrown whenever the class of the object is not found when deserializing it.

inDB

public boolean inDB(java.lang.String tableName,
                    java.lang.String objectKey,
                    boolean cache)
             throws java.sql.SQLException
Indicates whether an object is loaded in the given table.

Parameters:
tableName - the table name
objectKey - the object key
cache - a boolean indicating whether the cache should be searched as well
Returns:
a boolean indicating whether an object is loaded in the given table
Throws:
java.sql.SQLException - exception thrown whenever an exception occurred while interrogating the database

tableContent

public java.util.ArrayList<java.lang.String> tableContent(java.lang.String tableName)
                                                   throws java.sql.SQLException
Returns an arraylist with the content in the given table.

Parameters:
tableName - the table to get the content for
Returns:
an arraylist with the content in the given tabl
Throws:
java.sql.SQLException

deleteObject

public void deleteObject(java.lang.String tableName,
                         java.lang.String objectKey)
                  throws java.sql.SQLException,
                         java.io.IOException
Deletes an object from the desired table.

Parameters:
tableName - the name of the table
objectKey - the object key
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while interrogating the database
java.io.IOException - exception thrown whenever an error occurred while interrogating the database

updateObject

public void updateObject(java.lang.String tableName,
                         java.lang.String objectKey,
                         java.lang.Object object)
                  throws java.sql.SQLException,
                         java.io.IOException
Updates an object in the cache or in the tables if not in cache.

Parameters:
tableName - the name of the table
objectKey - the key of the object
object - the object to store
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while storing the object
java.io.IOException - exception thrown whenever an error occurred while writing in the database

updateObject

public void updateObject(java.lang.String tableName,
                         java.lang.String objectKey,
                         java.lang.Object object,
                         boolean cache)
                  throws java.sql.SQLException,
                         java.io.IOException
Updates an object in the cache or in the tables if not in cache or if cache is wrong.

Parameters:
tableName - the name of the table
objectKey - the key of the object
object - the object to store
cache - a boolean indicating whether the method should look in the cache
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while storing the object
java.io.IOException - exception thrown whenever an error occurred while writing in the database

close

public void close()
           throws java.sql.SQLException
Closes the db connection.

Throws:
java.sql.SQLException - exception thrown whenever an error occurred while closing the database connection

establishConnection

public void establishConnection(java.lang.String aDbFolder,
                                boolean deleteOldDatabase,
                                ObjectsCache objectsCache)
                         throws java.sql.SQLException
Establishes connection to the database.

Parameters:
aDbFolder - the folder where the database is located
deleteOldDatabase - if true, tries to delete the old database
objectsCache -
Throws:
java.sql.SQLException - exception thrown whenever an error occurred while establishing the connection

correctTableName

public java.lang.String correctTableName(java.lang.String tableName)
Surrounds the table name with quotation marks such that spaces etc are allowed.

Parameters:
tableName - the table name
Returns:
the corrected table name


Copyright © 2013. All Rights Reserved.