Re: Camel-csv 2.2.0: reading a single line csv file

2010-06-15 Thread cmoulliard

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

2010-06-15 Thread Claus Ibsen
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

2010-05-04 Thread Attilio Donà

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

2010-05-04 Thread Attilio Donà

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.