01: /*-
02: * See the file LICENSE for redistribution information.
03: *
04: * Copyright (c) 2002,2008 Oracle. All rights reserved.
05: *
06: * $Id: KeyValueAdapter.java,v 1.5.2.3 2008/01/07 15:14:18 cwl Exp $
07: */
08:
09: package com.sleepycat.persist;
10:
11: import com.sleepycat.bind.EntryBinding;
12: import com.sleepycat.je.DatabaseEntry;
13:
14: /**
15: * A ValueAdapter where the "value" is the key (the primary key in a primary
16: * index or the secondary key in a secondary index).
17: *
18: * @author Mark Hayes
19: */
20: class KeyValueAdapter<V> implements ValueAdapter<V> {
21:
22: private EntryBinding keyBinding;
23:
24: KeyValueAdapter(Class<V> keyClass, EntryBinding keyBinding) {
25: this .keyBinding = keyBinding;
26: }
27:
28: public DatabaseEntry initKey() {
29: return new DatabaseEntry();
30: }
31:
32: public DatabaseEntry initPKey() {
33: return null;
34: }
35:
36: public DatabaseEntry initData() {
37: return BasicIndex.NO_RETURN_ENTRY;
38: }
39:
40: public void clearEntries(DatabaseEntry key, DatabaseEntry pkey,
41: DatabaseEntry data) {
42: key.setData(null);
43: }
44:
45: public V entryToValue(DatabaseEntry key, DatabaseEntry pkey,
46: DatabaseEntry data) {
47: return (V) keyBinding.entryToObject(key);
48: }
49:
50: public void valueToData(V value, DatabaseEntry data) {
51: throw new UnsupportedOperationException(
52: "Cannot change the data in a key-only index");
53: }
54: }
|