camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <>
Subject [jira] Commented: (CAMEL-398) Map the content of a CSV file to a POJO using @annotation and .convertBodyTo()
Date Mon, 26 Jan 2009 13:24:59 GMT


Claus Ibsen commented on CAMEL-398:

v0.96 review
- Maybe a bit overkill with byte,char,short data formats as they are kinda newer used
- CharacterFormat#format: Can you not just do: return object.toString(); to format it as a
- PatternFormat needs type as well:
  public interface PatternFormat<T> extends Format<T>
- Data pattern should use the Date as type
  public class DatePatternFormat implements PatternFormat<Date>
- The same for all xxxFormat they should add the type they are, eg Double
   public class DoubleFormat implements Format<Double>
- The PatternFormat: remember to test for pattern is not null
   ObjectHelper.notNull(pattern, "pattern") in the parse/format methods
- NumberPatternFormat could be abstract
- BigDecimal how do you set its scale and other parameters?
- BindyFactory: The model object Map<String, Object>. Please document what the key is?
(= the string). And the value is the POJO
- BindyCsvFactory
   a) I still think you should not sort the keys in unbind. I think it should use the same
order as the data is in the model map.
       You can use a LinkedHashMap for the model map then the data have the same order as
its added
   b) In Unbind I dont see a newline anywhere. Should you not add a newline after each record?

> Map the content of a CSV file to a POJO using @annotation and .convertBodyTo()
> ------------------------------------------------------------------------------
>                 Key: CAMEL-398
>                 URL:
>             Project: Apache Camel
>          Issue Type: New Feature
>          Components: camel-core
>    Affects Versions: 1.4.0
>            Reporter: Charles Moulliard
>            Assignee: Claus Ibsen
>             Fix For: 2.0.0
>         Attachments:,,
> Hi,
> It should be nice if in a next relase of Camel, it will be possible to map the content
of a CSV file to a POJO using @annotation.
> For the moment, I use an ArrayList + iterator (see code hereafter) to achieve the extraction
of the content but I'm sure that we can simplify this code using @Annotation
> and the following action (.convertBodyTo(Order<List>) by example.
> Current situation
> Camel route
> from("file:///c:/temp/test?noop=true")
> .unmarshal().csv()
> .to("bean:converter?methodName=TransformMessage"); --> should be replaced by something
like .convertBodyTo(Order<List>)
> Converter class
>         public void TransformMessage(Exchange in) {
>                 process(in.getIn().getBody(List.class));
>         }
>         @SuppressWarnings("unchecked")
>         private void process(List messages) {
>                 // Iterate through the list of messages
>                 for (Iterator<ArrayList> it = messages.iterator(); it.hasNext();)
>                         // Split the content of the message into field
>                         message =;
>                         field = (String[]) message.toArray();
>                         order = new Order();
>                         order.setId(Integer.valueOf(field[0]).intValue());
>                         order.setBank(field[1]);
>                         order.setAmountFrom(Double.parseDouble(field[2]));
>                         order.setAmountTo(Double.parseDouble(field[3]));
>                         order.setOrderInstruction(field[4].trim());
>                         this.orderService.createOrder(order);
>                 }
>         }
> Regards,
> Charles

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message