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