com.sleepycat.bind.tuple.SortedBigDecimalBinding Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of je Show documentation
Show all versions of je Show documentation
Berkley Database Java Edition - build and runtime support.
/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2000, 2010 Oracle and/or its affiliates. All rights reserved.
*
*/
package com.sleepycat.bind.tuple;
import java.math.BigDecimal;
import com.sleepycat.je.DatabaseEntry;
/**
* A concrete TupleBinding
for a sorted BigDecimal
* value.
*
* There are two ways to use this class:
*
* - When using the {@link com.sleepycat.je} package directly, the static
* methods in this class can be used to convert between primitive values and
* {@link DatabaseEntry} objects.
* - When using the {@link com.sleepycat.collections} package, an instance of
* this class can be used with any stored collection.
*
*
* @see BigDecimal Formats
*/
public class SortedBigDecimalBinding extends TupleBinding {
// javadoc is inherited
public BigDecimal entryToObject(TupleInput input) {
return input.readSortedBigDecimal();
}
// javadoc is inherited
public void objectToEntry(BigDecimal object, TupleOutput output) {
output.writeSortedBigDecimal(object);
}
// javadoc is inherited
protected TupleOutput getTupleOutput(BigDecimal object) {
return sizedOutput(object);
}
/**
* Converts an entry buffer into a BigDecimal
value.
*
* @param entry is the source entry buffer.
*
* @return the resulting value.
*/
public static BigDecimal entryToBigDecimal(DatabaseEntry entry) {
return entryToInput(entry).readSortedBigDecimal();
}
/**
* Converts a BigDecimal
value into an entry buffer.
*
* @param val is the source value.
*
* @param entry is the destination entry buffer.
*/
public static void bigDecimalToEntry(BigDecimal val, DatabaseEntry entry) {
outputToEntry(sizedOutput(val).writeSortedBigDecimal(val), entry);
}
/**
* Returns a tuple output object of the maximum size needed, to avoid
* wasting space when a single primitive is output.
*/
private static TupleOutput sizedOutput(BigDecimal val) {
int len = TupleOutput.getSortedBigDecimalMaxByteLength(val);
return new TupleOutput(new byte[len]);
}
}