2008/12/11 cmoulliard <[EMAIL PROTECTED]>:
>
> Hi,
>
> I would like to know How we can extend the existing method
> marshall/unmarshall of the class CsvDataFormat (supercsv component) in such
> a way that we can provide the CsvPreferences (STANDARD, EXCEL, ...) and the
> bean to be used to map the data ?
>
> idea :
>
> from("file://myCSVfile")
> .marshal().csv("CsvPrefs","UserBeanToBeUsedForMappingData")
> .to("");
>
> Why such request ? Because the SuperCSV classes allow to map directly the
> content of a CSV file (with or withour headers) to a POJO and we can define
> i nthe preference the kind of CSV provided (excel, ...) (see doc for more
> info : http://supercsv.sourceforge.net/codeExamples_general.html) ?
>
> ex :
>
> public class UserBean {
>    String username, password, street, town;
>    int zip;
>
>    public String getPassword() { return password; }
>    public String getStreet() { return street; }
>    public String getTown() { return town; }
>    public String getUsername() { return username; }
>    public int getZip() { return zip; }
>    public void setPassword(String password) { this.password = password; }
>    public void setStreet(String street) { this.street = street; }
>    public void setTown(String town) { this.town = town; }
>    public void setUsername(String username) { this.username = username; }
>    public void setZip(int zip) { this.zip = zip; }
> }
>
> class ReadingObjects {
>  public static void main(String[] args) throws Exception{
>    ICsvBeanReader inFile = new CsvBeanReader(new FileReader("foo.csv"),
> CsvPreference.EXCEL_PREFERENCE);
>    try {
>      final String[] header = inFile.getCSVHeader(true);
>      UserBean user;
>      while( (user = inFile.read(UserBean.class, header, processors)) !=
> null) {
>        System.out.println(user.getZip());
>      }
>    } finally {
>      inFile.close();
>    }
>  }
> }

One of the big reasons for the DataFormat abstraction in Camel instead
of the type conversion stuff was so that you could create a specific
DataFormat instance - configure it in Java/Spring/Guice and use it
explicitly in a route.

e.g. see JAXB which is a great example - you typically wanna configure
each one with a JAXB context (set of packages/classes etc)
http://activemq.apache.org/camel/jaxb.html

so sure, we should make it easy to configure all of the Data Format
implementations - either through a DI framework like Spring/Guice or
via Java/JNDI

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Reply via email to