KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sleepycat > bind > tuple > SortedDoubleBinding


1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 2000,2006 Oracle. All rights reserved.
5  *
6  * $Id: SortedDoubleBinding.java,v 1.4 2006/10/30 21:14:08 bostic Exp $
7  */

8
9 package com.sleepycat.bind.tuple;
10
11 import com.sleepycat.je.DatabaseEntry;
12
13 /**
14  * A concrete <code>TupleBinding</code> for a <code>Double</code> primitive
15  * wrapper or a <code>double</code> primitive.
16  *
17  * <p>This class produces byte array values that by default (without a custom
18  * comparator) sort correctly, including sorting of negative values.
19  * Therefore, this class should normally be used instead of {@link
20  * DoubleBinding} which does not by default support sorting of negative values.
21  * Please note that:</p>
22  * <ul>
23  * <li>The byte array (stored) formats used by {@link DoubleBinding} and
24  * {@link SortedDoubleBinding} are different and incompatible. They are not
25  * interchangable once data has been stored.</li>
26  * <li>An instance of {@link DoubleBinding}, not {@link SortedDoubleBinding},
27  * is returned by {@link TupleBinding#getPrimitiveBinding} method. Therefore,
28  * to use {@link SortedDoubleBinding}, {@link TupleBinding#getPrimitiveBinding}
29  * should not be called.</li>
30  * </ul>
31  *
32  * <p>There are two ways to use this class:</p>
33  * <ol>
34  * <li>When using the {@link com.sleepycat.je} package directly, the static
35  * methods in this class can be used to convert between primitive values and
36  * {@link DatabaseEntry} objects.</li>
37  * <li>When using the {@link com.sleepycat.collections} package, an instance of
38  * this class can be used with any stored collection.</li>
39  * </ol>
40  */

41 public class SortedDoubleBinding extends TupleBinding {
42
43     /* javadoc is inherited */
44     public Object JavaDoc entryToObject(TupleInput input) {
45
46         return new Double JavaDoc(input.readSortedDouble());
47     }
48
49     /* javadoc is inherited */
50     public void objectToEntry(Object JavaDoc object, TupleOutput output) {
51
52         output.writeSortedDouble(((Number JavaDoc) object).doubleValue());
53     }
54
55     /* javadoc is inherited */
56     protected TupleOutput getTupleOutput(Object JavaDoc object) {
57
58         return DoubleBinding.sizedOutput();
59     }
60
61     /**
62      * Converts an entry buffer into a simple <code>double</code> value.
63      *
64      * @param entry is the source entry buffer.
65      *
66      * @return the resulting value.
67      */

68     public static double entryToDouble(DatabaseEntry entry) {
69
70         return entryToInput(entry).readSortedDouble();
71     }
72
73     /**
74      * Converts a simple <code>double</code> value into an entry buffer.
75      *
76      * @param val is the source value.
77      *
78      * @param entry is the destination entry buffer.
79      */

80     public static void doubleToEntry(double val, DatabaseEntry entry) {
81
82         outputToEntry(DoubleBinding.sizedOutput().writeSortedDouble(val),
83                       entry);
84     }
85 }
86
Popular Tags