package com.sleepycat.bind;
import com.sleepycat.compat.DbCompat;
import com.sleepycat.je.DatabaseEntry;
import de.ovgu.cide.jakutil.*;
/**
* An <code>EntryBinding</code> that treats a record number key entry as a
* <code>Long</code> key object.
* <p>
* Record numbers are returned as <code>Long</code> objects, although on input
* any <code>Number</code> object may be used.
* </p>
* @author Mark Hayes
*/
public class RecordNumberBinding implements EntryBinding {
/**
* Creates a byte array binding.
*/
public RecordNumberBinding(){
}
public Object entryToObject( DatabaseEntry entry){
return new Long(entryToRecordNumber(entry));
}
public void objectToEntry( Object object, DatabaseEntry entry){
recordNumberToEntry(((Number)object).longValue(),entry);
}
/**
* Utility method for use by bindings to translate a entry buffer to an
* record number integer.
* @param entrythe entry buffer.
* @return the record number.
*/
public static long entryToRecordNumber( DatabaseEntry entry){
return DbCompat.getRecordNumber(entry) & 0xFFFFFFFFL;
}
/**
* Utility method for use by bindings to translate a record number integer
* to a entry buffer.
* @param recordNumberthe record number.
* @param entrythe entry buffer to hold the record number.
*/
public static void recordNumberToEntry( long recordNumber, DatabaseEntry entry){
entry.setData(new byte[4],0,4);
DbCompat.setRecordNumber(entry,(int)recordNumber);
}
}