KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > persist > KeyValueAdapter


1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2002,2006 Oracle. All rights reserved.
5  *
6  * $Id: KeyValueAdapter.java,v 1.5 2006/10/30 21:14:30 bostic Exp $
7  */

8
9 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 JavaDoc<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,
41                              DatabaseEntry pkey,
42                              DatabaseEntry data) {
43         key.setData(null);
44     }
45
46     public V entryToValue(DatabaseEntry key,
47                           DatabaseEntry pkey,
48                           DatabaseEntry data) {
49         return (V) keyBinding.entryToObject(key);
50     }
51
52     public void valueToData(V value, DatabaseEntry data) {
53         throw new UnsupportedOperationException JavaDoc
54             ("Cannot change the data in a key-only index");
55     }
56 }
57
Popular Tags