com.tivoli.twg.util
Class DataStore

java.lang.Object
  extended bycom.tivoli.twg.util.DataStore

public class DataStore
extends java.lang.Object

DataStore object.


Constructor Summary
DataStore(java.lang.String fileName)
          Constructor for DataStore : create default unopened R/W datastore
DataStore(java.lang.String fileName, boolean open)
          Constructor for DataStore : create default R/W datastore
DataStore(java.lang.String fileName, int userSignature, boolean open, boolean readOnly)
          Constructor for DataStore : create datastore with given attributes
DataStore(java.lang.String fileName, int userSignature, boolean open, boolean readOnly, int order)
          Constructor for DataStore : create datastore with given attributes
 
Method Summary
 long add(byte[] data, int length)
          Add new record : returns assigned record ID
 long addAndRemove(long delkey, byte[] data, int length)
          Add a new record AND delete an existing record : allows faster update of logging-style DataStore file
 long[] addAndRemoveMultiple(int num, long[] delkeys, byte[][] data, int[] length)
          Add multiple new records AND delete multiple existing record : allows faster update of logging-style DataStore file
 long[] addAndRemoveMultiple2(int num, long[] delkeys, byte[][] data, int[] length)
          Add multiple new records AND delete multiple existing record : allows faster update of logging-style DataStore file - if delete records don't exist, continue without an error.
 void addDataStoreListener(DataStoreListener listen)
          Register DataStore listener for this DataStore instance
static void addGlobalDataStoreListener(DataStoreListener listen)
          Register DataStore listener for all DataStore instances
 long[] addMultiple(int num, byte[][] data, int[] length)
          Add multiple new records : returns assigned record IDs
 void addUpdate(long key, byte[] data, int length)
          Add new record, or update existing record, using given key
 void addUpdateMultiple(int num, long[] keys, byte[][] data, int[] length)
          Add new records, or update existing records, using given keys
 void close()
          Closed datastore file
 void copyWholeDataStore(java.io.File new_file)
          Safely copy whole contents of DataStore into a new file provided by the caller: allows thread-safe backup or replication of whole datastore.
 void delete()
          Delete whole datastore and contents
 void enumerate(DataStoreEnumeration enumerator)
          Fill in enumerator for all elements
 boolean exists(long key)
          Test to see if record with given key exists
 java.lang.String getFileName()
          Get DataStore file name
 int getIdentifier()
          Get DataStore identifier
 LongValueSet getKeySet()
          Get all of the record keys in a LongValueSet
protected  LongSortSet getRecordIDs()
           
 long highestKey()
          Get next key number
 boolean isNew()
          Is newly created DataStore
 int length(long key)
          Get length of given record
 long nextKey()
          Get next key number
static void notifyDataStoreFileDeleted(java.io.File file)
          Notify global listeners of deleted DataStore file.
 int numRecords()
           
 void open()
          Open DataStore
 byte[][] read(long[] keys)
          Read data for a set of keys, and return as a set of data arrays
 void read(long key, byte[] data, int length)
          Read data from given key into buffer
 byte[] readWholeDataStore(long max_size)
          Safely read whole contents of DataStore into a buffer for return to caller: allows thread-safe backup or replication of whole datastore.
 void remove(long key)
          Remove record with given key
 void remove(long[] keys)
          Remove set of records
 void removeAll()
          Remove all data records from data store
 void removeDataStoreListener(DataStoreListener listen)
          Deregister DataStore listener for this DataStore instance
 void removeGlobalDataStoreListener(DataStoreListener listen)
          Deregister DataStore listener for all DataStore instances
protected  int setInitSize()
           
 void setWriteFlush(boolean enabled)
          Enable/disable per write disk flushing
 void update(long key, byte[] data, int length)
          Update existing record
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataStore

public DataStore(java.lang.String fileName)
          throws DataStoreException
Constructor for DataStore : create default unopened R/W datastore

Parameters:
fileName - - filename

DataStore

public DataStore(java.lang.String fileName,
                 boolean open)
          throws DataStoreException
Constructor for DataStore : create default R/W datastore

Parameters:
fileName - - filename
open - - open initially

DataStore

public DataStore(java.lang.String fileName,
                 int userSignature,
                 boolean open,
                 boolean readOnly)
          throws DataStoreException
Constructor for DataStore : create datastore with given attributes

Parameters:
fileName - - filename
userSignature - - user signature
open - - open initially
readOnly - - read-only access

DataStore

public DataStore(java.lang.String fileName,
                 int userSignature,
                 boolean open,
                 boolean readOnly,
                 int order)
          throws DataStoreException
Constructor for DataStore : create datastore with given attributes

Parameters:
fileName - - filename
userSignature - - user signature
open - - open initially
readOnly - - read-only access
order - - records per index record
Method Detail

open

public void open()
          throws DataStoreException
Open DataStore

Throws:
DataStoreException

getFileName

public final java.lang.String getFileName()
Get DataStore file name


getIdentifier

public final int getIdentifier()
Get DataStore identifier


isNew

public boolean isNew()
Is newly created DataStore


exists

public boolean exists(long key)
               throws DataStoreException
Test to see if record with given key exists

Parameters:
key - - key to be checked
Throws:
DataStoreException

add

public long add(byte[] data,
                int length)
         throws DataStoreException
Add new record : returns assigned record ID

Parameters:
data - - data to be written
length - - length of data to be written
Throws:
DataStoreException

addMultiple

public long[] addMultiple(int num,
                          byte[][] data,
                          int[] length)
                   throws DataStoreException
Add multiple new records : returns assigned record IDs

Parameters:
data - - array of data records to be written
length - - array of lengths of data records to be written
Throws:
DataStoreException

addAndRemove

public long addAndRemove(long delkey,
                         byte[] data,
                         int length)
                  throws DataStoreException
Add a new record AND delete an existing record : allows faster update of logging-style DataStore file

Parameters:
delkey - - key to be deleted
data - - data for new record to be written
Returns:
ID of new record
Throws:
DataStoreException

addAndRemoveMultiple

public long[] addAndRemoveMultiple(int num,
                                   long[] delkeys,
                                   byte[][] data,
                                   int[] length)
                            throws DataStoreException
Add multiple new records AND delete multiple existing record : allows faster update of logging-style DataStore file

Parameters:
num - - number of keys to delete and number of records to add
delkeys - - array of key to be deleted
data - - array of data buffers for new records to be written
Returns:
array of IDs of new records
Throws:
DataStoreException

addAndRemoveMultiple2

public long[] addAndRemoveMultiple2(int num,
                                    long[] delkeys,
                                    byte[][] data,
                                    int[] length)
                             throws DataStoreException
Add multiple new records AND delete multiple existing record : allows faster update of logging-style DataStore file - if delete records don't exist, continue without an error.

Parameters:
num - - number of keys to delete and number of records to add
delkeys - - array of key to be deleted
data - - array of data buffers for new records to be written
Returns:
array of IDs of new records
Throws:
DataStoreException

addUpdate

public void addUpdate(long key,
                      byte[] data,
                      int length)
               throws DataStoreException
Add new record, or update existing record, using given key

Parameters:
key - - record key
data - - data to be stored
length - - length of data
Throws:
DataStoreException

addUpdateMultiple

public void addUpdateMultiple(int num,
                              long[] keys,
                              byte[][] data,
                              int[] length)
                       throws DataStoreException
Add new records, or update existing records, using given keys

Parameters:
num - - number of records to add or update
keys - - array of record keys
data - - array of data to be stored
length - - array of lengths of data
Throws:
DataStoreException

length

public int length(long key)
           throws DataStoreException
Get length of given record

Parameters:
key - - record key
Throws:
DataStoreException

read

public void read(long key,
                 byte[] data,
                 int length)
          throws DataStoreException
Read data from given key into buffer

Parameters:
key - - record key
data - - data buffer to read data into
length - - length of data requested
Throws:
DataStoreException

read

public byte[][] read(long[] keys)
              throws DataStoreException
Read data for a set of keys, and return as a set of data arrays

Parameters:
keys - - key array
Throws:
DataStoreException

update

public void update(long key,
                   byte[] data,
                   int length)
            throws DataStoreException
Update existing record

Parameters:
key - - record key
data - - record data
length - - length of record data
Throws:
DataStoreException

remove

public void remove(long key)
            throws DataStoreException
Remove record with given key

Parameters:
key - - record key
Throws:
DataStoreException

remove

public void remove(long[] keys)
            throws DataStoreException
Remove set of records

Parameters:
keys - - list of keys
Throws:
DataStoreException

removeAll

public void removeAll()
               throws DataStoreException
Remove all data records from data store

Throws:
DataStoreException

getKeySet

public LongValueSet getKeySet()
Get all of the record keys in a LongValueSet

Returns:
LongValueSet with the sorted list of record keys

enumerate

public void enumerate(DataStoreEnumeration enumerator)
               throws DataStoreException
Fill in enumerator for all elements

Parameters:
enumerator - - enumerator to callback to with each found element
Throws:
DataStoreException

close

public void close()
           throws DataStoreException
Closed datastore file

Throws:
DataStoreException

delete

public void delete()
            throws DataStoreException
Delete whole datastore and contents

Throws:
DataStoreException

setWriteFlush

public void setWriteFlush(boolean enabled)
                   throws DataStoreIOException
Enable/disable per write disk flushing

Throws:
DataStoreIOException

nextKey

public long nextKey()
Get next key number


highestKey

public long highestKey()
Get next key number


setInitSize

protected int setInitSize()

addDataStoreListener

public void addDataStoreListener(DataStoreListener listen)
Register DataStore listener for this DataStore instance

Parameters:
listen - - listener

removeDataStoreListener

public void removeDataStoreListener(DataStoreListener listen)
Deregister DataStore listener for this DataStore instance

Parameters:
listen - - listener

addGlobalDataStoreListener

public static void addGlobalDataStoreListener(DataStoreListener listen)
Register DataStore listener for all DataStore instances

Parameters:
listen - - listener

removeGlobalDataStoreListener

public void removeGlobalDataStoreListener(DataStoreListener listen)
Deregister DataStore listener for all DataStore instances

Parameters:
listen - - listener

notifyDataStoreFileDeleted

public static void notifyDataStoreFileDeleted(java.io.File file)
Notify global listeners of deleted DataStore file. Used for file deleted outside of DataStore class.

Parameters:
file - - file deleted

readWholeDataStore

public byte[] readWholeDataStore(long max_size)
                          throws DataStoreException
Safely read whole contents of DataStore into a buffer for return to caller: allows thread-safe backup or replication of whole datastore.

Parameters:
max_size - - maximum size to copy to buffer
Returns:
buffer containing binary image of DataStore file, or null if too long
Throws:
DataStoreException - if error reading file

copyWholeDataStore

public void copyWholeDataStore(java.io.File new_file)
                        throws DataStoreException
Safely copy whole contents of DataStore into a new file provided by the caller: allows thread-safe backup or replication of whole datastore.

Parameters:
new_file - - new file for contents
Throws:
DataStoreException - if error reading or writing file

numRecords

public int numRecords()

getRecordIDs

protected LongSortSet getRecordIDs()