Package org.supercsv.cellprocessor
Class ParseBigDecimal
- java.lang.Object
-
- org.supercsv.cellprocessor.CellProcessorAdaptor
-
- org.supercsv.cellprocessor.ParseBigDecimal
-
- All Implemented Interfaces:
CellProcessor
,StringCellProcessor
public class ParseBigDecimal extends CellProcessorAdaptor implements StringCellProcessor
Convert a String to a BigDecimal. It uses the String constructor of BigDecimal (new BigDecimal("0.1")) as it yields predictable results (seeBigDecimal
).If the data uses a character other than "." as a decimal separator (Germany uses "," for example), then use the constructor that accepts a DecimalFormatSymbols object, as it will convert the character to a "." before creating the BigDecimal. Likewise if the data contains a grouping separator (Germany uses "." for example) then supplying a DecimalFormatSymbols object will allow grouping separators to be removed before parsing.
- Since:
- 1.30
-
-
Field Summary
Fields Modifier and Type Field Description private static char
DEFAULT_DECIMAL_SEPARATOR
private java.text.DecimalFormatSymbols
symbols
-
Fields inherited from class org.supercsv.cellprocessor.CellProcessorAdaptor
next
-
-
Constructor Summary
Constructors Constructor Description ParseBigDecimal()
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal.ParseBigDecimal(java.text.DecimalFormatSymbols symbols)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal using the supplied DecimalFormatSymbols object to convert any decimal separator to a "." before creating the BigDecimal.ParseBigDecimal(java.text.DecimalFormatSymbols symbols, CellProcessor next)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal using the supplied DecimalFormatSymbols object to convert any decimal separator to a "." before creating the BigDecimal, then calls the next processor in the chain.ParseBigDecimal(CellProcessor next)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal then calls the next processor in the chain.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
checkPreconditions(java.text.DecimalFormatSymbols symbols)
Checks the preconditions for creating a new ParseBigDecimal processor.java.lang.Object
execute(java.lang.Object value, CsvContext context)
This method is invoked by the framework when the processor needs to process data or check constraints.private static java.lang.String
fixSymbols(java.lang.String s, java.text.DecimalFormatSymbols symbols)
Fixes the symbols in the input String (currently only decimal separator and grouping separator) so that the String can be parsed as a BigDecimal.-
Methods inherited from class org.supercsv.cellprocessor.CellProcessorAdaptor
toString, validateInputNotNull
-
-
-
-
Field Detail
-
DEFAULT_DECIMAL_SEPARATOR
private static final char DEFAULT_DECIMAL_SEPARATOR
- See Also:
- Constant Field Values
-
symbols
private final java.text.DecimalFormatSymbols symbols
-
-
Constructor Detail
-
ParseBigDecimal
public ParseBigDecimal()
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal.
-
ParseBigDecimal
public ParseBigDecimal(java.text.DecimalFormatSymbols symbols)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal using the supplied DecimalFormatSymbols object to convert any decimal separator to a "." before creating the BigDecimal.- Parameters:
symbols
- the decimal format symbols, containing the decimal separator- Throws:
java.lang.NullPointerException
- if symbols is null
-
ParseBigDecimal
public ParseBigDecimal(CellProcessor next)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal then calls the next processor in the chain.- Parameters:
next
- the next processor in the chain- Throws:
java.lang.NullPointerException
- if next is null
-
ParseBigDecimal
public ParseBigDecimal(java.text.DecimalFormatSymbols symbols, CellProcessor next)
Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal using the supplied DecimalFormatSymbols object to convert any decimal separator to a "." before creating the BigDecimal, then calls the next processor in the chain.- Parameters:
symbols
- the decimal format symbols, containing the decimal separatornext
- the next processor in the chain- Throws:
java.lang.NullPointerException
- if symbols or next is null
-
-
Method Detail
-
checkPreconditions
private static void checkPreconditions(java.text.DecimalFormatSymbols symbols)
Checks the preconditions for creating a new ParseBigDecimal processor.- Parameters:
symbols
- the decimal format symbols, containing the decimal separator- Throws:
java.lang.NullPointerException
- if symbols is null
-
execute
public java.lang.Object execute(java.lang.Object value, CsvContext context)
This method is invoked by the framework when the processor needs to process data or check constraints.- Specified by:
execute
in interfaceCellProcessor
- Parameters:
value
- the value to be processedcontext
- the CSV context- Returns:
- the result of cell processor execution
- Throws:
SuperCsvCellProcessorException
- if value is null, isn't a String, or can't be parsed as a BigDecimal
-
fixSymbols
private static java.lang.String fixSymbols(java.lang.String s, java.text.DecimalFormatSymbols symbols)
Fixes the symbols in the input String (currently only decimal separator and grouping separator) so that the String can be parsed as a BigDecimal.- Parameters:
s
- the String to fixsymbols
- the decimal format symbols- Returns:
- the fixed String
-
-