camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Charles Moulliard (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CAMEL-7742) Support grouping separtor for Camel Bindy (BigDecimal)
Date Mon, 25 Aug 2014 06:16:58 GMT
Charles Moulliard created CAMEL-7742:
----------------------------------------

             Summary: Support grouping separtor for Camel Bindy (BigDecimal)
                 Key: CAMEL-7742
                 URL: https://issues.apache.org/jira/browse/CAMEL-7742
             Project: Camel
          Issue Type: Improvement
          Components: camel-bindy
    Affects Versions: 2.13.2
            Reporter: Charles Moulliard


Issue 

{code}
I currently have a problem concerning Camel Bindy. I have a csv file that
should be parsed with Camel Bindy using a given model class. This csv file
contains a number that should be parsed as a BigDecimal. The problem is that
this number contains a comma as a grouping separator and a point as the
decimal separator.
If I start the camel route the unmarshal process will throw a
NumberFormatException mentioning the invalid format of that number. So I
tried to add a pattern to the DataField annotation, but the error stays.

After digging throw the documentation (http://camel.apache.org/bindy.html)
and the source code of FormatFactory
(http://grepcode.com/file_/repo1.maven.org/maven2/org.apache.camel/camel-bindy/2.13.1/org/apache/camel/dataformat/bindy/FormatFactory.java/?v=source)
I'm a little bit confused, because the documentation mentions the ability to
specify a grouping separator, but the source code shows that the pattern is
ignored for BigDecimal data types.

Does anyone know how to specify that grouping separator? Or is this not
implemented yet?
{code}

Solution

{code}
    public void parsePattern(String formattedString,
                      Locale locale,
                      String pattern,
                      char groupingSeparator,
                      char decimalSeparator) throws ParseException {

        DecimalFormatSymbols symbols = new DecimalFormatSymbols(locale);
        symbols.setGroupingSeparator(groupingSeparator);
        symbols.setDecimalSeparator(decimalSeparator);
        DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
        decimalFormat.setParseBigDecimal(true);

        // parse the string
        BigDecimal bigDecimal = (BigDecimal) decimalFormat.parse(formattedString);
        bigDecimal.setScale(precision);
        System.out.println(bigDecimal);
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message