com.googlecode.objectify.impl.conv
Class BigDecimalLongConverter

java.lang.Object
  extended by com.googlecode.objectify.impl.conv.BigDecimalLongConverter
All Implemented Interfaces:
Converter

public class BigDecimalLongConverter
extends java.lang.Object
implements Converter

This a simple strategy for storing BigDecimal in the datastore. BigDecimalLongConverter multiplies by a fixed factor and stores the result as a Long. This is appropriate for monetary and other (relatively) small values with fixed decimal precision.

This is one possible strategy and not appropriate for all uses of BigDecimal - especially very large values which cannot fit in a Long. For this reason, the converter is not installed by default. You can Install this converter at the same time you perform registration:

ObjectifyService.factory().getConversions().add(new BigDecimalLongConverter());

The default factor of 1,000 is good for currency, which usually has 0-3 digits of precision past the decimal point. But you can pick any other factor appropriate to your application.


Field Summary
static long DEFAULT_FACTOR
          Default factor is 1000, which gives you three digits of precision past the decimal point
 
Constructor Summary
BigDecimalLongConverter()
          Construct this converter with the default factor (1000), which can store three points of precision past the decimal point.
BigDecimalLongConverter(long factor)
          Construct this with an arbitrary factor.
 
Method Summary
 java.lang.Object forDatastore(java.lang.Object value, ConverterSaveContext ctx)
          Convert the value into an object suitable for storage in the datastore.
 java.lang.Object forPojo(java.lang.Object value, java.lang.Class<?> fieldType, ConverterLoadContext ctx, java.lang.Object onPojo)
          Convert the value into an object suitable for setting on a field with the specified type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_FACTOR

public static final long DEFAULT_FACTOR
Default factor is 1000, which gives you three digits of precision past the decimal point

See Also:
Constant Field Values
Constructor Detail

BigDecimalLongConverter

public BigDecimalLongConverter()
Construct this converter with the default factor (1000), which can store three points of precision past the decimal point.


BigDecimalLongConverter

public BigDecimalLongConverter(long factor)
Construct this with an arbitrary factor. Powers of ten are highly recommended if you want to be able to interpret the numbers in the datastore viewer.

Parameters:
factor - number multiplied by before storage and divided by on retrieval.
Method Detail

forDatastore

public java.lang.Object forDatastore(java.lang.Object value,
                                     ConverterSaveContext ctx)
Description copied from interface: Converter
Convert the value into an object suitable for storage in the datastore. The first thing converters should do is test whether they are appropriate for the input data; if not, return null.

Specified by:
forDatastore in interface Converter
Parameters:
value - will never be null
Returns:
null to indicate that this converter does nothing with the value

forPojo

public java.lang.Object forPojo(java.lang.Object value,
                                java.lang.Class<?> fieldType,
                                ConverterLoadContext ctx,
                                java.lang.Object onPojo)
Description copied from interface: Converter
Convert the value into an object suitable for setting on a field with the specified type. The first thing converters should do is test whether they are appropriate for the input data; if not, return null.

Specified by:
forPojo in interface Converter
Parameters:
value - will never be null
fieldType - is the type that the value should be converted to
onPojo - is the actual pojo object that this value will eventually be set upon
Returns:
null to indicate that this converter does nothing with the value


Copyright © 2011 Jeff Schnitzer and a gang of pirates. All Rights Reserved. Build version: 3.1