Berkeley DB version 4.2.52

## com.sleepycat.bdb.bind.serial
Class TupleSerialKeyExtractor

    java.lang.Object
      |
      +--com.sleepycat.bdb.bind.serial.TupleSerialKeyExtractor

All Implemented Interfaces:
  KeyExtractor

Direct Known Subclasses:
  TupleSerialMarshalledKeyExtractor

public abstract class TupleSerialKeyExtractor
extends Object
implements KeyExtractor

A abstract key extractor that uses a tuple key and a serial value. This class takes care of serializing and deserializing the value data, and converting the key data to/from `TupleInput` and `TupleOutput` objects. Its two abstract methods must be implemented by a concrete subclass to extract and clear the index key using these objects.

- `extractIndexKey(TupleInput,Object,TupleOutput)`
- `clearIndexKey(Object)`

Constructor Summary
`TupleSerialKeyExtractor(TupleFormat primaryKeyFormat, SerialFormat valueFormat, TupleFormat indexKeyFormat)` Creates a tuple-serial key extractor.

Method Summary
`void` `clearIndexKey(DataBuffer valueData)` Clears the index key in a value buffer.
`abstract void` `clearIndexKey(Object valueInputOutput)` Clears the index key in the deserialized value data.
`void` `extractIndexKey(DataBuffer primaryKeyData, DataBuffer valueData, DataBuffer indexKeyData)` Extracts the index key data from primary key and value buffers.
`abstract void` `extractIndexKey(TupleInput primaryKeyInput, Object valueInput, TupleOutput indexKeyOutput)` Extracts the index key data from primary key tuple data and deserialized value data.
`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

### TupleSerialKeyExtractor

    public TupleSerialKeyExtractor(TupleFormat primaryKeyFormat,
                                   SerialFormat valueFormat,
                                   TupleFormat indexKeyFormat)

  Creates a tuple-serial key extractor.

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 void extractIndexKey(TupleInput primaryKeyInput,
                                         Object valueInput,
                                         TupleOutput indexKeyOutput)
                                  throws IOException

  Extracts the index key data from primary key tuple data and deserialized value data.

  Parameters:
    `primaryKeyInput` - is the `TupleInput` for the primary key data, or null if no primary key data is used to construct the index key.
    `valueInput` - is the deserialized value data, or null if no value data is used to construct the index key.
    `indexKeyOutput` - is the destination index key tuple. For index keys which are optionally present, no tuple data should be output to indicate that the key is not present or null.
    `IOException`

### clearIndexKey

    public abstract void clearIndexKey(Object valueInputOutput)
                                throws IOException

  Clears the index key in the deserialized value data.

  Parameters:
    `valueInputOutput` - is the source and destination deserialized value data. On entry this contains the index key to be cleared. It should be changed by this method such that `extractIndexKey(com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer, com.sleepycat.bdb.bind.DataBuffer)` will extract a null key (not output any tuple data). Other data in the value object should remain unchanged.
    `IOException`

Berkeley DB version 4.2.52

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