Class BigDecimalLongTranslatorFactory
- All Implemented Interfaces:
TranslatorFactory<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 invalid input: '<'[email protected]>
-
Field Summary
Modifier and TypeFieldDescriptionstatic final 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 com.google.cloud.datastore.Value<Long>
toDatastore
(BigDecimal value) protected BigDecimal
Methods inherited from class com.googlecode.objectify.impl.translate.SimpleTranslatorFactory
createValueTranslator
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:
-
-
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
-
toPojo
- Specified by:
toPojo
in classSimpleTranslatorFactory<BigDecimal,
Long>
-
toDatastore
- Specified by:
toDatastore
in classSimpleTranslatorFactory<BigDecimal,
Long>
-