/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2000,2008 Oracle. All rights reserved. * * $Id: RecordNumberBinding.java,v 12.6 2008/01/08 20:58:35 bostic Exp $ */ package com.sleepycat.bind; import com.sleepycat.compat.DbCompat; import com.sleepycat.db.DatabaseEntry; /** * An EntryBinding that treats a record number key entry as a * Long key object. * *

Record numbers are returned as Long objects, although on * input any Number object may be used.

* * @author Mark Hayes */ public class RecordNumberBinding implements EntryBinding { /** * Creates a byte array binding. */ public RecordNumberBinding() { } // javadoc is inherited public Object entryToObject(DatabaseEntry entry) { return new Long(entryToRecordNumber(entry)); } // javadoc is inherited 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 entry the 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 recordNumber the record number. * * @param entry the 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); } }