Spring Web Flow

org.springframework.binding.convert.converters
Class FormattedStringToNumber

java.lang.Object
  extended by org.springframework.binding.convert.converters.StringToObject
      extended by org.springframework.binding.convert.converters.FormattedStringToNumber
All Implemented Interfaces:
Converter, TwoWayConverter

public class FormattedStringToNumber
extends StringToObject

A converter for common number types such as integers and big decimals. Allows the configuration of an explicit number pattern and locale. Works with a general purpose DecimalFormat instance returned by calling NumberFormat.getInstance(Locale) by default. This instance supports parsing any number type generally and will not perform special type-specific logic such as rounding or truncation. Subclasses may override. Will coerse parsed Numbers to the desired numberClass as necessary. If type-coersion results in an overflow condition; for example, what can occur with a Long being coersed to a Short, an exception will be thrown.

Author:
Keith Donald
See Also:
NumberFormat, DecimalFormat

Constructor Summary
FormattedStringToNumber()
           
FormattedStringToNumber(java.lang.Class<? extends java.lang.Number> numberClass)
           
 
Method Summary
protected  java.lang.Number convertToNumberClass(java.lang.Number number, java.lang.Class<? extends java.lang.Number> numberClass)
          Coerces the Number object returned by NumberFormat to the desired numberClass.
 boolean getLenient()
          If this Converter is "lenient" in parsing number strings.
 void setLenient(boolean lenient)
          Sets if this Converter should parse leniently.
 void setNumberFormatFactory(NumberFormatFactory numberFormatFactory)
          Sets the factory that returns the NumberFormat instance that will format numbers handled by this converter.
protected  java.lang.Object toObject(java.lang.String string, java.lang.Class<?> targetClass)
           
protected  java.lang.String toString(java.lang.Object object)
           
 
Methods inherited from class org.springframework.binding.convert.converters.StringToObject
convertSourceToTargetClass, convertTargetToSourceClass, getSourceClass, getTargetClass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FormattedStringToNumber

public FormattedStringToNumber()

FormattedStringToNumber

public FormattedStringToNumber(java.lang.Class<? extends java.lang.Number> numberClass)
Method Detail

setNumberFormatFactory

public void setNumberFormatFactory(NumberFormatFactory numberFormatFactory)
Sets the factory that returns the NumberFormat instance that will format numbers handled by this converter.

Parameters:
numberFormatFactory - the number format factory

getLenient

public boolean getLenient()
If this Converter is "lenient" in parsing number strings. A lenient converter does not require that all characters in the String be parsed successfully. Default is false.

Returns:
the lenient flag

setLenient

public void setLenient(boolean lenient)
Sets if this Converter should parse leniently.

Parameters:
lenient - the lenient flag

toObject

protected java.lang.Object toObject(java.lang.String string,
                                    java.lang.Class<?> targetClass)
                             throws java.lang.Exception
Specified by:
toObject in class StringToObject
Throws:
java.lang.Exception

toString

protected java.lang.String toString(java.lang.Object object)
                             throws java.lang.Exception
Specified by:
toString in class StringToObject
Throws:
java.lang.Exception

convertToNumberClass

protected java.lang.Number convertToNumberClass(java.lang.Number number,
                                                java.lang.Class<? extends java.lang.Number> numberClass)
                                         throws java.lang.IllegalArgumentException
Coerces the Number object returned by NumberFormat to the desired numberClass. Subclasses may override.

Parameters:
number - the parsed number
Returns:
the coersed number
Throws:
java.lang.IllegalArgumentException - when an overflow condition occurs during coersion

Spring Web Flow