Berkeley DB
version 4.2.52

com.sleepycat.bdb.bind.serial
Class SerialSerialKeyExtractor

java.lang.Object
  |
  +--com.sleepycat.bdb.bind.serial.SerialSerialKeyExtractor
All Implemented Interfaces:
KeyExtractor

public abstract class SerialSerialKeyExtractor
extends Object
implements KeyExtractor

A abstract key extractor that uses a serial key and a serial value. This class takes care of serializing and deserializing the key and value data automatically. Its two abstract methods must be implemented by a concrete subclass to extract/clear the index key from the deserialized data objects.


Constructor Summary
SerialSerialKeyExtractor(SerialFormat primaryKeyFormat, SerialFormat valueFormat, SerialFormat indexKeyFormat)
          Creates a serial-serial entity binding.
 
Method Summary
 void clearIndexKey(DataBuffer valueData)
          Clears the index key in a value buffer.
abstract  Object clearIndexKey(Object valueData)
          Clears the index key in a value data object.
 void extractIndexKey(DataBuffer primaryKeyData, DataBuffer valueData, DataBuffer indexKeyData)
          Extracts the index key data from primary key and value buffers.
abstract  Object extractIndexKey(Object primaryKeyData, Object valueData)
          Extracts the index key data object from primary key and value data objects.
 DataFormat getIndexKeyFormat()
          Returns the format of the index key data.
 DataFormat getPrimaryKeyFormat()
          Returns the format of the primary key data or null if the index key data is not derived from the primary key data.
 DataFormat getValueFormat()
          Returns the format of the value data or null if the index key data is not derived from the value data.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SerialSerialKeyExtractor

public SerialSerialKeyExtractor(SerialFormat primaryKeyFormat,
                                SerialFormat valueFormat,
                                SerialFormat indexKeyFormat)
Creates a serial-serial entity binding.

Parameters:
primaryKeyFormat - is the primary key format, or null if no primary key data is used to construct the index key.
valueFormat - is the value format, or null if no value data is used to construct the index key.
indexKeyFormat - is the index key format.
Method Detail

getPrimaryKeyFormat

public DataFormat getPrimaryKeyFormat()
Description copied from interface: KeyExtractor
Returns the format of the primary key data or null if the index key data is not derived from the primary key data. If this method returns null, then null will be passed for the primaryKeyData parameter of KeyExtractor.extractIndexKey(com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer).

Specified by:
getPrimaryKeyFormat in interface KeyExtractor
Returns:
the format of the primary key data or null.

getValueFormat

public DataFormat getValueFormat()
Description copied from interface: KeyExtractor
Returns the format of the value data or null if the index key data is not derived from the value data. If this method returns null, then null will be passed for the valueData parameter of KeyExtractor.extractIndexKey(com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer).

Specified by:
getValueFormat in interface KeyExtractor
Returns:
the format of the value data or null.

getIndexKeyFormat

public DataFormat getIndexKeyFormat()
Description copied from interface: KeyExtractor
Returns the format of the index key data.

Specified by:
getIndexKeyFormat in interface KeyExtractor
Returns:
the format of the index key data.

extractIndexKey

public void extractIndexKey(DataBuffer primaryKeyData,
                            DataBuffer valueData,
                            DataBuffer indexKeyData)
                     throws IOException
Description copied from interface: KeyExtractor
Extracts the index key data from primary key and value buffers. The index key is extracted when saving the data record identified by the primary key and value buffers, in order to add or remove an index entry in the database for that data record.

Specified by:
extractIndexKey in interface KeyExtractor
Parameters:
primaryKeyData - is the source primary key data, or null if no primary key data is used to construct the index key, in which case KeyExtractor.getPrimaryKeyFormat() should also return null.
valueData - is the source value data, or null if no value data is used to construct the index key, in which case KeyExtractor.getValueFormat() should also return null.
indexKeyData - is the destination index key buffer. For index keys which are optionally present, the buffer's length should be set to zero to indicate that the key is not present or null.
IOException

clearIndexKey

public void clearIndexKey(DataBuffer valueData)
                   throws IOException
Description copied from interface: KeyExtractor
Clears the index key in a value buffer. The index key is cleared when the index is for a foreign key identifying a record that has been deleted. This method is called only if the ForeignKeyIndex is configured with ForeignKeyIndex.ON_DELETE_CLEAR. It is never called for index keys that are derived from primary key data, since in this case ForeignKeyIndex.ON_DELETE_CLEAR is not allowed.

Specified by:
clearIndexKey in interface KeyExtractor
Parameters:
valueData - is the source and destination value data. On entry this contains the index key to be cleared. It should be changed by this method such that KeyExtractor.extractIndexKey(com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer) will extract a null key (set the buffer length to zero). Other data in the buffer should remain unchanged.
IOException

extractIndexKey

public abstract Object extractIndexKey(Object primaryKeyData,
                                       Object valueData)
                                throws IOException
Extracts the index key data object from primary key and value data objects.

Parameters:
primaryKeyData - is the deserialized source primary key data, or null if no primary key data is used to construct the index key.
valueData - is the deserialized source value data, or null if no value data is used to construct the index key.
Returns:
the destination index key data object, or null to indicate that the key is not present.
IOException

clearIndexKey

public abstract Object clearIndexKey(Object valueData)
                              throws IOException
Clears the index key in a value data object.

Parameters:
valueData - is the source and destination value data object.
Returns:
the destination value data object, or null to indicate that the key is not present and no change is necessary. The value returned may be the same object passed as the valueData parameter or a newly created object.
IOException

Berkeley DB
version 4.2.52

Copyright (c) 1996-2003 Sleepycat Software, Inc. - All rights reserved.