1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2002,2008 Oracle. All rights reserved. 5 * 6 * $Id: DataValueAdapter.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 data, although the data in this case 16 * is the primary key in a KeysIndex. 17 * 18 * @author Mark Hayes 19 */ 20class DataValueAdapter<V> implements ValueAdapter<V> { 21 22 private EntryBinding dataBinding; 23 24 DataValueAdapter(Class<V> keyClass, EntryBinding dataBinding) { 25 this.dataBinding = dataBinding; 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 new DatabaseEntry(); 38 } 39 40 public void clearEntries(DatabaseEntry key, 41 DatabaseEntry pkey, 42 DatabaseEntry data) { 43 key.setData(null); 44 data.setData(null); 45 } 46 47 public V entryToValue(DatabaseEntry key, 48 DatabaseEntry pkey, 49 DatabaseEntry data) { 50 return (V) dataBinding.entryToObject(data); 51 } 52 53 public void valueToData(V value, DatabaseEntry data) { 54 throw new UnsupportedOperationException 55 ("Cannot change the data in a key-only index"); 56 } 57} 58