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 (see BigDecimal).

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 Details

  • Constructor Details

    • ParseBigDecimal

      public ParseBigDecimal()
      Constructs a new ParseBigDecimal processor, which converts a String to a BigDecimal.
    • ParseBigDecimal

      public ParseBigDecimal(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:
      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:
      NullPointerException - if next is null
    • ParseBigDecimal

      public ParseBigDecimal(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 separator
      next - the next processor in the chain
      Throws:
      NullPointerException - if symbols or next is null
  • Method Details

    • checkPreconditions

      private static void checkPreconditions(DecimalFormatSymbols symbols)
      Checks the preconditions for creating a new ParseBigDecimal processor.
      Parameters:
      symbols - the decimal format symbols, containing the decimal separator
      Throws:
      NullPointerException - if symbols is null
    • execute

      public Object execute(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 interface CellProcessor
      Parameters:
      value - the value to be processed
      context - 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 String fixSymbols(String s, 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 fix
      symbols - the decimal format symbols
      Returns:
      the fixed String