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
setUseLocaleFormat(true)
setLocale(Locale)
setPattern(String)
setPattern(String)
setLocale(Locale)
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
.
Modifier and Type | Field and Description |
---|---|
private boolean |
allowDecimals |
private java.util.Locale |
locale |
private static java.lang.Integer |
ONE |
private java.lang.String |
pattern |
private boolean |
useLocaleFormat |
private static java.lang.Integer |
ZERO |
Constructor and Description |
---|
NumberConverter(boolean allowDecimals)
Construct a java.lang.Number Converter
that throws a
ConversionException if a error occurs. |
NumberConverter(boolean allowDecimals,
java.lang.Object defaultValue)
Construct a
java.lang.Number Converter that returns
a default value if an error occurs. |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
convertToString(java.lang.Object value)
Convert an input Number object into a String.
|
protected <T> T |
convertToType(java.lang.Class<T> targetType,
java.lang.Object value)
Convert the input object into a Number object of the
specified type.
|
private java.text.NumberFormat |
getFormat()
Return a NumberFormat to use for Conversion.
|
java.util.Locale |
getLocale()
Return the Locale for the Converter
(or
null if none specified). |
java.lang.String |
getPattern()
Return the number format pattern used to convert
Numbers to/from a
java.lang.String
(or null if none specified). |
boolean |
isAllowDecimals()
Return whether decimals are allowed in the number.
|
private java.lang.Number |
parse(java.lang.Class<?> sourceType,
java.lang.Class<?> targetType,
java.lang.String value,
java.text.NumberFormat format)
Convert a String into a
Number object. |
void |
setLocale(java.util.Locale locale)
Set the Locale for the Converter.
|
void |
setPattern(java.lang.String pattern)
Set a number format pattern to use to convert
Numbers to/from a
java.lang.String . |
void |
setUseLocaleFormat(boolean useLocaleFormat)
Set whether a format should be used to convert
the Number.
|
private java.lang.Number |
toNumber(java.lang.Class<?> sourceType,
java.lang.Class<?> targetType,
java.lang.String value)
Default String to Number conversion.
|
private <T> T |
toNumber(java.lang.Class<?> sourceType,
java.lang.Class<T> targetType,
java.lang.Number value)
Convert any Number object to the specified type for this
Converter.
|
java.lang.String |
toString()
Provide a String representation of this number converter.
|
conversionException, convert, convertArray, getDefault, getDefaultType, handleError, handleMissing, isUseDefault, log, setDefaultValue, toString
private static final java.lang.Integer ZERO
private static final java.lang.Integer ONE
private java.lang.String pattern
private final boolean allowDecimals
private boolean useLocaleFormat
private java.util.Locale locale
public NumberConverter(boolean allowDecimals)
ConversionException
if a error occurs.allowDecimals
- Indicates whether decimals are allowedpublic NumberConverter(boolean allowDecimals, java.lang.Object defaultValue)
java.lang.Number
Converter that returns
a default value if an error occurs.allowDecimals
- Indicates whether decimals are alloweddefaultValue
- The default value to be returnedpublic boolean isAllowDecimals()
public void setUseLocaleFormat(boolean useLocaleFormat)
useLocaleFormat
- true
if a number format
should be used.public java.lang.String getPattern()
java.lang.String
(or null
if none specified).
See java.text.DecimalFormat
for details
of how to specify the pattern.
public void setPattern(java.lang.String pattern)
java.lang.String
.
See java.text.DecimalFormat
for details
of how to specify the pattern.
pattern
- The format pattern.public java.util.Locale getLocale()
null
if none specified).public void setLocale(java.util.Locale locale)
locale
- The locale to use for conversionprotected java.lang.String convertToString(java.lang.Object value) throws java.lang.Throwable
convertToString
in class AbstractConverter
value
- The input value to be convertedjava.lang.Throwable
- if an error occurs converting to a Stringprotected <T> T convertToType(java.lang.Class<T> targetType, java.lang.Object value) throws java.lang.Throwable
convertToType
in class AbstractConverter
T
- Target type of the conversion.targetType
- Data type to which this value should be converted.value
- The input value to be converted.java.lang.Throwable
- if an error occurs converting to the specified typeprivate <T> T toNumber(java.lang.Class<?> sourceType, java.lang.Class<T> targetType, java.lang.Number value)
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
sourceType
- The type being converted fromtargetType
- The Number type to convert tovalue
- The Number to convert.private java.lang.Number toNumber(java.lang.Class<?> sourceType, java.lang.Class<?> targetType, java.lang.String value)
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
sourceType
- The type being converted fromtargetType
- The Number type to convert tovalue
- The String value to convert.public java.lang.String toString()
toString
in class AbstractConverter
private java.text.NumberFormat getFormat()
private java.lang.Number parse(java.lang.Class<?> sourceType, java.lang.Class<?> targetType, java.lang.String value, java.text.NumberFormat format)
Number
object.sourceType
- the source type of the conversiontargetType
- The type to convert the value tovalue
- The String date value.format
- The NumberFormat to parse the String value.ConversionException
- if the String cannot be converted.Copyright (c) 2000-2008 - Apache Software Foundation