1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2000,2008 Oracle. All rights reserved. 5 * 6 * $Id: TupleTupleBinding.java,v 12.7 2008/01/08 20:58:36 bostic Exp $ 7 */ 8 9package com.sleepycat.bind.tuple; 10 11import com.sleepycat.bind.EntityBinding; 12import com.sleepycat.db.DatabaseEntry; 13 14/** 15 * An abstract <code>EntityBinding</code> that treats an entity's key entry and 16 * data entry as tuples. 17 * 18 * <p>This class takes care of converting the entries to/from {@link 19 * TupleInput} and {@link TupleOutput} objects. Its three abstract methods 20 * must be implemented by a concrete subclass to convert between tuples and 21 * entity objects.</p> 22 * <ul> 23 * <li> {@link #entryToObject(TupleInput,TupleInput)} </li> 24 * <li> {@link #objectToKey(Object,TupleOutput)} </li> 25 * <li> {@link #objectToData(Object,TupleOutput)} </li> 26 * </ul> 27 * 28 * @author Mark Hayes 29 */ 30public abstract class TupleTupleBinding extends TupleBase 31 implements EntityBinding { 32 33 /** 34 * Creates a tuple-tuple entity binding. 35 */ 36 public TupleTupleBinding() { 37 } 38 39 // javadoc is inherited 40 public Object entryToObject(DatabaseEntry key, DatabaseEntry data) { 41 42 return entryToObject(TupleBinding.entryToInput(key), 43 TupleBinding.entryToInput(data)); 44 } 45 46 // javadoc is inherited 47 public void objectToKey(Object object, DatabaseEntry key) { 48 49 TupleOutput output = getTupleOutput(object); 50 objectToKey(object, output); 51 outputToEntry(output, key); 52 } 53 54 // javadoc is inherited 55 public void objectToData(Object object, DatabaseEntry data) { 56 57 TupleOutput output = getTupleOutput(object); 58 objectToData(object, output); 59 outputToEntry(output, data); 60 } 61 62 // abstract methods 63 64 /** 65 * Constructs an entity object from {@link TupleInput} key and data 66 * entries. 67 * 68 * @param keyInput is the {@link TupleInput} key entry object. 69 * 70 * @param dataInput is the {@link TupleInput} data entry object. 71 * 72 * @return the entity object constructed from the key and data. 73 */ 74 public abstract Object entryToObject(TupleInput keyInput, 75 TupleInput dataInput); 76 77 /** 78 * Extracts a key tuple from an entity object. 79 * 80 * @param object is the entity object. 81 * 82 * @param output is the {@link TupleOutput} to which the key should be 83 * written. 84 */ 85 public abstract void objectToKey(Object object, TupleOutput output); 86 87 /** 88 * Extracts a key tuple from an entity object. 89 * 90 * @param object is the entity object. 91 * 92 * @param output is the {@link TupleOutput} to which the data should be 93 * written. 94 */ 95 public abstract void objectToData(Object object, TupleOutput output); 96} 97