Re: Camel-csv 2.2.0: reading a single line csv file
I have committed a modification in camel bindy to be able to work with ,. that means that we use as separator the double quotes -- ',' See test class https://svn.apache.org/repos/asf/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyDoubleQuotesCsvUnmarshallTest.java to have an example KR, Charles Claus Ibsen-2 wrote: On Tue, May 4, 2010 at 5:19 PM, Claus Ibsen claus.ib...@gmail.com wrote: Hi On Tue, May 4, 2010 at 8:57 AM, Attilio Donà attilio.d...@gmail.com wrote: Hi all, I've to read a csv file and I want use camel to do this. Camel bindy seems to me that doesn't know the csv convention that a field separator can be a character field using double quotes: contains, comma, another field Yeah that would be good to be able to do with camel-bindy. Do you mind creating a JIRA ticket? I have created the JIRA ticket https://issues.apache.org/activemq/browse/CAMEL-2691 So the adopted solution is camel-csv. Using camel-csv to parse the csv file as in the camel manual works only if the csv file has more than one line of data: // Some comments here public void doHandleCsvData(List csvData) { // do magic here as in the manual if the file as more than one row of data } If the csv file has 1 row the parameter passed to the method bean doHandleCsvData is a List. As a quick workaround, instead of using parametrized generics, it is possible to do something like this: public void modelsCsvFile(Exchange exchange) { List csvData = (List) exchange.getIn().getBody(); if (csvData.get(0).getClass().equals(String.class)) { log.debug(single row file); Vendor vendor = vendorDAO.bind((String)csvData.get(0)); Model model = new Model(vendor, (String)csvData.get(1)); modelDAO.bind(model); return; } for (List row : (List)csvData) { log.debug(read [{}] [{}], row.get(0), row.get(1)); Vendor vendor = vendorDAO.bind((String)row.get(0)); Model model = new Model(vendor, (String)row.get(1)); modelDAO.bind(model); } Attilio -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p28443740.html Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus - Charles Moulliard SOA Architect My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/ -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p2858.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Camel-csv 2.2.0: reading a single line csv file
Hi Charles Great have you also tested when the field is empty? eg its just . On Tue, Jun 15, 2010 at 11:06 AM, cmoulliard cmoulli...@gmail.com wrote: I have committed a modification in camel bindy to be able to work with ,. that means that we use as separator the double quotes -- ',' See test class https://svn.apache.org/repos/asf/camel/trunk/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyDoubleQuotesCsvUnmarshallTest.java to have an example KR, Charles Claus Ibsen-2 wrote: On Tue, May 4, 2010 at 5:19 PM, Claus Ibsen claus.ib...@gmail.com wrote: Hi On Tue, May 4, 2010 at 8:57 AM, Attilio Donà attilio.d...@gmail.com wrote: Hi all, I've to read a csv file and I want use camel to do this. Camel bindy seems to me that doesn't know the csv convention that a field separator can be a character field using double quotes: contains, comma, another field Yeah that would be good to be able to do with camel-bindy. Do you mind creating a JIRA ticket? I have created the JIRA ticket https://issues.apache.org/activemq/browse/CAMEL-2691 So the adopted solution is camel-csv. Using camel-csv to parse the csv file as in the camel manual works only if the csv file has more than one line of data: // Some comments here public void doHandleCsvData(List csvData) { // do magic here as in the manual if the file as more than one row of data } If the csv file has 1 row the parameter passed to the method bean doHandleCsvData is a List. As a quick workaround, instead of using parametrized generics, it is possible to do something like this: public void modelsCsvFile(Exchange exchange) { List csvData = (List) exchange.getIn().getBody(); if (csvData.get(0).getClass().equals(String.class)) { log.debug(single row file); Vendor vendor = vendorDAO.bind((String)csvData.get(0)); Model model = new Model(vendor, (String)csvData.get(1)); modelDAO.bind(model); return; } for (List row : (List)csvData) { log.debug(read [{}] [{}], row.get(0), row.get(1)); Vendor vendor = vendorDAO.bind((String)row.get(0)); Model model = new Model(vendor, (String)row.get(1)); modelDAO.bind(model); } Attilio -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p28443740.html Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus - Charles Moulliard SOA Architect My Blog : http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/ -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p2858.html Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
Camel-csv 2.2.0: reading a single line csv file
Hi all, I've to read a csv file and I want use camel to do this. Camel bindy seems to me that doesn't know the csv convention that a field separator can be a character field using double quotes: contains, comma, another field So the adopted solution is camel-csv. Using camel-csv to parse the csv file as in the camel manual works only if the csv file has more than one line of data: // Some comments here public void doHandleCsvData(List csvData) { // do magic here as in the manual if the file as more than one row of data } If the csv file has 1 row the parameter passed to the method bean doHandleCsvData is a List. As a quick workaround, instead of using parametrized generics, it is possible to do something like this: public void modelsCsvFile(Exchange exchange) { List csvData = (List) exchange.getIn().getBody(); if (csvData.get(0).getClass().equals(String.class)) { log.debug(single row file); Vendor vendor = vendorDAO.bind((String)csvData.get(0)); Model model = new Model(vendor, (String)csvData.get(1)); modelDAO.bind(model); return; } for (List row : (List)csvData) { log.debug(read [{}] [{}], row.get(0), row.get(1)); Vendor vendor = vendorDAO.bind((String)row.get(0)); Model model = new Model(vendor, (String)row.get(1)); modelDAO.bind(model); } Attilio -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p28443740.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Camel-csv 2.2.0: reading a single line csv file
Excuse me, I reply only for correcting the first message format. Attilio Attilio Donà wrote: Hi all, I've to read a csv file and I want use camel to do this. Camel bindy seems to me that doesn't know the csv convention that a field separator can be a character field using double quotes: contains, comma, another field So the adopted solution is camel-csv. Using camel-csv to parse the csv file as in the camel manual works only if the csv file has more than one line of data: // Some comments here public void doHandleCsvData(ListListString csvData) { // do magic here as in the manual if the file as more than one row of data } If the csv file has 1 row the parameter passed to the method bean doHandleCsvData is a ListString. As a quick workaround, instead of using parametrized generics, it is possible to do something like this: public void modelsCsvFile(Exchange exchange) { List csvData = (List) exchange.getIn().getBody(); if (csvData.get(0).getClass().equals(String.class)) { log.debug(single row file); Vendor vendor = vendorDAO.bind((String)csvData.get(0)); Model model = new Model(vendor, (String)csvData.get(1)); modelDAO.bind(model); return; } for (List row : (ListList)csvData) { log.debug(read [{}] [{}], row.get(0), row.get(1)); Vendor vendor = vendorDAO.bind((String)row.get(0)); Model model = new Model(vendor, (String)row.get(1)); modelDAO.bind(model); } Attilio -- View this message in context: http://old.nabble.com/Camel-csv-2.2.0%3A-reading-a-single-line-csv-file-tp28443740p28443808.html Sent from the Camel - Users mailing list archive at Nabble.com.