Class BigDecimalLongTranslatorFactory
- All Implemented Interfaces:
TranslatorFactory<BigDecimal,Long>
public class BigDecimalLongTranslatorFactory extends ValueTranslatorFactory<BigDecimal,Long>
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().getTranslators().add(new BigDecimalLongTranslatorFactory());
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.
All custom translators must be registered *before* entity classes are registered.
- Author:
- Jeff Schnitzer
-
Field Summary
Modifier and TypeFieldDescriptionstatic long
Default factor is 1000, which gives you three digits of precision past the decimal point -
Constructor Summary
ConstructorDescriptionConstruct this converter with the default factor (1000), which can store three points of precision past the decimal point.BigDecimalLongTranslatorFactory(long factor)
Construct this with an arbitrary factor. -
Method Summary
Modifier and TypeMethodDescriptionprotected ValueTranslator<BigDecimal,Long>
createValueTranslator(TypeKey<BigDecimal> tk, CreateContext ctx, Path path)
Create a translator, knowing that we have the appropriate type.Methods inherited from class com.googlecode.objectify.impl.translate.ValueTranslatorFactory
create
-
Field Details
-
DEFAULT_FACTOR
public static final long DEFAULT_FACTORDefault factor is 1000, which gives you three digits of precision past the decimal point- See Also:
- Constant Field Values
-
-
Constructor Details
-
BigDecimalLongTranslatorFactory
public BigDecimalLongTranslatorFactory()Construct this converter with the default factor (1000), which can store three points of precision past the decimal point. -
BigDecimalLongTranslatorFactory
public BigDecimalLongTranslatorFactory(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 Details
-
createValueTranslator
protected ValueTranslator<BigDecimal,Long> createValueTranslator(TypeKey<BigDecimal> tk, CreateContext ctx, Path path)Description copied from class:ValueTranslatorFactory
Create a translator, knowing that we have the appropriate type. You don't need to check for type matching.- Specified by:
createValueTranslator
in classValueTranslatorFactory<BigDecimal,Long>
- Parameters:
tk
- type is guaranteed to erase to something assignable to Class
-