Class NumberConverter

java.lang.Object
org.apache.commons.beanutils.converters.AbstractConverter
org.apache.commons.beanutils.converters.NumberConverter
All Implemented Interfaces:
Converter
Direct Known Subclasses:
BigDecimalConverter, BigIntegerConverter, ByteConverter, DoubleConverter, FloatConverter, IntegerConverter, LongConverter, ShortConverter

public abstract class NumberConverter extends AbstractConverter
Converter implementaion that handles conversion to and from java.lang.Number objects.

This implementation handles conversion for the following java.lang.Number types.

  • java.lang.Byte
  • java.lang.Short
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Float
  • java.lang.Double
  • java.math.BigDecimal
  • java.math.BigInteger

String Conversions (to and from)

This class provides a number of ways in which number conversions to/from Strings can be achieved:
  • Using the default format for the default Locale, configure using:
    • setUseLocaleFormat(true)
  • Using the default format for a specified Locale, configure using:
    • setLocale(Locale)
  • Using a specified pattern for the default Locale, configure using:
    • setPattern(String)
  • Using a specified pattern for a specified Locale, configure using:
    • setPattern(String)
    • setLocale(Locale)
  • If none of the above are configured the toNumber(String) method is used to convert from String to Number and the Number's toString() method used to convert from Number to String.

N.B.Patterns can only be specified using the standard pattern characters and NOT in localized form (see java.text.DecimalFormat). For example to cater for number styles used in Germany such as 0.000,00 the pattern is specified in the normal form 0,000.00 and the locale set to Locale.GERMANY.

Since:
1.8.0
Version:
$Id$
  • Field Details

    • ZERO

      private static final Integer ZERO
    • ONE

      private static final Integer ONE
    • pattern

      private String pattern
    • allowDecimals

      private final boolean allowDecimals
    • useLocaleFormat

      private boolean useLocaleFormat
    • locale

      private Locale locale
  • Constructor Details

    • NumberConverter

      public NumberConverter(boolean allowDecimals)
      Construct a java.lang.Number Converter that throws a ConversionException if a error occurs.
      Parameters:
      allowDecimals - Indicates whether decimals are allowed
    • NumberConverter

      public NumberConverter(boolean allowDecimals, Object defaultValue)
      Construct a java.lang.Number Converter that returns a default value if an error occurs.
      Parameters:
      allowDecimals - Indicates whether decimals are allowed
      defaultValue - The default value to be returned
  • Method Details

    • isAllowDecimals

      public boolean isAllowDecimals()
      Return whether decimals are allowed in the number.
      Returns:
      Whether decimals are allowed in the number
    • setUseLocaleFormat

      public void setUseLocaleFormat(boolean useLocaleFormat)
      Set whether a format should be used to convert the Number.
      Parameters:
      useLocaleFormat - true if a number format should be used.
    • getPattern

      public String getPattern()
      Return the number format pattern used to convert Numbers to/from a java.lang.String (or null if none specified).

      See java.text.DecimalFormat for details of how to specify the pattern.

      Returns:
      The format pattern.
    • setPattern

      public void setPattern(String pattern)
      Set a number format pattern to use to convert Numbers to/from a java.lang.String.

      See java.text.DecimalFormat for details of how to specify the pattern.

      Parameters:
      pattern - The format pattern.
    • getLocale

      public Locale getLocale()
      Return the Locale for the Converter (or null if none specified).
      Returns:
      The locale to use for conversion
    • setLocale

      public void setLocale(Locale locale)
      Set the Locale for the Converter.
      Parameters:
      locale - The locale to use for conversion
    • convertToString

      protected String convertToString(Object value) throws Throwable
      Convert an input Number object into a String.
      Overrides:
      convertToString in class AbstractConverter
      Parameters:
      value - The input value to be converted
      Returns:
      the converted String value.
      Throws:
      Throwable - if an error occurs converting to a String
    • convertToType

      protected <T> T convertToType(Class<T> targetType, Object value) throws Throwable
      Convert the input object into a Number object of the specified type.
      Specified by:
      convertToType in class AbstractConverter
      Type Parameters:
      T - Target type of the conversion.
      Parameters:
      targetType - Data type to which this value should be converted.
      value - The input value to be converted.
      Returns:
      The converted value.
      Throws:
      Throwable - if an error occurs converting to the specified type
    • toNumber

      private <T> T toNumber(Class<?> sourceType, Class<T> targetType, Number value)
      Convert any Number object to the specified type for this Converter.

      This method handles conversion to the following types:

      • java.lang.Byte
      • java.lang.Short
      • java.lang.Integer
      • java.lang.Long
      • java.lang.Float
      • java.lang.Double
      • java.math.BigDecimal
      • java.math.BigInteger
      Parameters:
      sourceType - The type being converted from
      targetType - The Number type to convert to
      value - The Number to convert.
      Returns:
      The converted value.
    • toNumber

      private Number toNumber(Class<?> sourceType, Class<?> targetType, String value)
      Default String to Number conversion.

      This method handles conversion from a String to the following types:

      • java.lang.Byte
      • java.lang.Short
      • java.lang.Integer
      • java.lang.Long
      • java.lang.Float
      • java.lang.Double
      • java.math.BigDecimal
      • java.math.BigInteger
      Parameters:
      sourceType - The type being converted from
      targetType - The Number type to convert to
      value - The String value to convert.
      Returns:
      The converted Number value.
    • toString

      public String toString()
      Provide a String representation of this number converter.
      Overrides:
      toString in class AbstractConverter
      Returns:
      A String representation of this number converter
    • getFormat

      private NumberFormat getFormat()
      Return a NumberFormat to use for Conversion.
      Returns:
      The NumberFormat.
    • parse

      private Number parse(Class<?> sourceType, Class<?> targetType, String value, NumberFormat format)
      Convert a String into a Number object.
      Parameters:
      sourceType - the source type of the conversion
      targetType - The type to convert the value to
      value - The String date value.
      format - The NumberFormat to parse the String value.
      Returns:
      The converted Number object.
      Throws:
      ConversionException - if the String cannot be converted.