Class BigDecimalLongTranslatorFactory

All Implemented Interfaces:
TranslatorFactory<BigDecimal,Long>

public class BigDecimalLongTranslatorFactory extends SimpleTranslatorFactory<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 Details

    • 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:
  • 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