[
https://issues.apache.org/activemq/browse/CAMEL-398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=48952#action_48952
]
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 String?
- 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: https://issues.apache.org/activemq/browse/CAMEL-398
> 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: camel-bindy-v0.95.zip, camel-bindy-v0.96.zip,
> camel-bindy.zip
>
>
> 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 = it.next();
> 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.