net.obsearch.storage.bdb
Class BDBOBStoreJeDouble

java.lang.Object
  extended by net.obsearch.storage.bdb.AbstractBDBOBStoreJe<TupleDouble>
      extended by net.obsearch.storage.bdb.BDBOBStoreJeDouble
All Implemented Interfaces:
OBStore<TupleDouble>, OBStoreDouble

public final class BDBOBStoreJeDouble
extends AbstractBDBOBStoreJe<TupleDouble>
implements OBStoreDouble

BDBOBStoreDouble is a wrapper for Berkeley indexes that assumes that keys are doubles and values are byte[].

Author:
Arnoldo Jose Muller Molina

Nested Class Summary
 
Nested classes/interfaces inherited from class net.obsearch.storage.bdb.AbstractBDBOBStoreJe
AbstractBDBOBStoreJe.ByteArrayIterator, AbstractBDBOBStoreJe.CursorIterator<T>
 
Field Summary
 
Fields inherited from class net.obsearch.storage.bdb.AbstractBDBOBStoreJe
counter, db, sequence, stats
 
Constructor Summary
BDBOBStoreJeDouble(String name, com.sleepycat.je.Database db, com.sleepycat.je.Database seq, OBStoreFactory fact, boolean duplicates)
          Builds a new Storage system by receiving a Berkeley DB database that uses doubles as a primary indexing method.
 
Method Summary
 double bytesToValue(byte[] entry)
          Converts the value of the given entry into its primitive type.
 OperationStatus delete(double key)
          Deletes the given key and its corresponding value from the database.
 byte[] getValue(double key)
          Returns the associated value for the given key.
 CloseIterator<TupleDouble> processAll()
          Process all the elements in the DB.
 CloseIterator<TupleDouble> processRange(double low, double high)
          Process the given range of items (from low to high), including low and high.
 CloseIterator<TupleDouble> processRangeNoDup(double low, double high)
           
 CloseIterator<TupleDouble> processRangeReverse(double low, double high)
          Process the given range of items (from high to low), including low and high.
 CloseIterator<TupleDouble> processRangeReverseNoDup(double low, double high)
           
 OperationStatus put(double key, byte[] value)
          Inserts the key value pair.
 
Methods inherited from class net.obsearch.storage.bdb.AbstractBDBOBStoreJe
allowsDuplicatedData, close, delete, deleteAll, getFactory, getName, getReadStats, getStats, getValue, nextId, optimize, prepareBytes, processAllKeys, processRange, processRangeNoDup, processRangeReverse, processRangeReverseNoDup, put, putIfNew, setReadStats, size
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.obsearch.storage.OBStore
close, delete, deleteAll, getFactory, getName, getReadStats, getStats, getValue, nextId, optimize, prepareBytes, processRange, processRangeNoDup, processRangeReverse, processRangeReverseNoDup, put, setReadStats, size
 

Constructor Detail

BDBOBStoreJeDouble

public BDBOBStoreJeDouble(String name,
                          com.sleepycat.je.Database db,
                          com.sleepycat.je.Database seq,
                          OBStoreFactory fact,
                          boolean duplicates)
                   throws com.sleepycat.je.DatabaseException
Builds a new Storage system by receiving a Berkeley DB database that uses doubles as a primary indexing method.

Parameters:
db - The database to be stored.
seq - Sequences database.
name - Name of the database.
Throws:
com.sleepycat.je.DatabaseException - if something goes wrong with the database.
Method Detail

delete

public OperationStatus delete(double key)
                       throws OBStorageException
Description copied from interface: OBStoreDouble
Deletes the given key and its corresponding value from the database.

Specified by:
delete in interface OBStoreDouble
Parameters:
key - The key that will be deleted.
Returns:
net.obsearch.OperationStatus.Status#OK if the key was found, otherwise, net.obsearch.OperationStatus.Status#NOT_EXISTS.
Throws:
OBStorageException - If an exception occurs at the underlying storage system. You can query the exception to see more details regarding the nature of the error.

bytesToValue

public double bytesToValue(byte[] entry)
Converts the value of the given entry into its primitive type.

Specified by:
bytesToValue in interface OBStoreDouble
Parameters:
entry - The place where we will put the entry.

getValue

public byte[] getValue(double key)
                throws IllegalArgumentException,
                       OBStorageException
Description copied from interface: OBStoreDouble
Returns the associated value for the given key. If the underlying storage system can hold repeated keys, then an IllegalArgumentException is thrown.

Specified by:
getValue in interface OBStoreDouble
Parameters:
key - the key that will be searched.
Returns:
the associated value for the given key.
Throws:
IllegalArgumentException - If the underlying storage system can hold multiple keys.
OBStorageException - If an exception occurs at the underlying storage system. You can query the exception to see more details regarding the nature of the error.

put

public OperationStatus put(double key,
                           byte[] value)
                    throws IllegalArgumentException,
                           OBStorageException
Description copied from interface: OBStoreDouble
Inserts the key value pair. If the key existed, it will be overwritten.

Specified by:
put in interface OBStoreDouble
Parameters:
key - Key to insert
value - The value that the key will hold after this operation completes.
Returns:
net.obsearch.OperationStatus.Status#OK the record was inserted/updated successfully. net.obsearch.OperationStatus.Status#ERROR if the record could not be updated.
Throws:
OBStorageException - If an exception occurs at the underlying storage system. You can query the exception to see more details regarding the nature of the error.
IllegalArgumentException

processRange

public CloseIterator<TupleDouble> processRange(double low,
                                               double high)
                                        throws OBStorageException
Description copied from interface: OBStoreDouble
Process the given range of items (from low to high), including low and high. The TupleProcessor's process method will be called for each value found within the range.

Specified by:
processRange in interface OBStoreDouble
Throws:
OBStorageException - If an exception occurs at the underlying storage system. You can query the exception to see more details regarding the nature of the error.

processRangeNoDup

public CloseIterator<TupleDouble> processRangeNoDup(double low,
                                                    double high)
                                             throws OBStorageException
Throws:
OBStorageException

processRangeReverse

public CloseIterator<TupleDouble> processRangeReverse(double low,
                                                      double high)
                                               throws OBStorageException
Description copied from interface: OBStoreDouble
Process the given range of items (from high to low), including low and high. The TupleProcessor's process method will be called for each value found within the range.

Specified by:
processRangeReverse in interface OBStoreDouble
Throws:
OBStorageException - If an exception occurs at the underlying storage system. You can query the exception to see more details regarding the nature of the error.

processRangeReverseNoDup

public CloseIterator<TupleDouble> processRangeReverseNoDup(double low,
                                                           double high)
                                                    throws OBStorageException
Throws:
OBStorageException

processAll

public CloseIterator<TupleDouble> processAll()
                                      throws OBStorageException
Description copied from interface: OBStore
Process all the elements in the DB. Useful for debugging.

Specified by:
processAll in interface OBStore<TupleDouble>
Returns:
An iterator that goes through all the data in the DB.
Throws:
OBStorageException


Copyright © 2007-2011 Arnoldo Jose Muller Molina. All Rights Reserved.