2009/1/6 cmoulliard <cmoulli...@gmail.com>:
>
> "In your case, I'd add the hooks to scan packages/classes for
> annotations to your custom DataFormat? Rather like with JAXB or
> XStream you can configure a list of classes/packages, you'd be doing
> something similar right?"
>
> This is exactly what I have done. The name of the package is provided as
> parameter to the DataFormat class. Next, using reflection/introspection the
> classes of the model are retrieved. I have implemented something simple but
> we can bind one or several classes to a CSV record.
>
> ex :
>
> public class Client {
>
>        @DataField(name = "ClientNumber", pos = 1, formatType = 
> "java.lang.String")
>        public String clientNr;
>
>        @DataField(name = "firstName", pos = 2, formatType = 
> "java.lang.String")
>        public String FirstName;
>
>        @DataField(name = "lastName", pos = 3, formatType = "java.lang.String")
>        public String LastName;
>
> @Record(separator =",", name = "Order")
> public class Order {
>
>        @DataField(name = "Number", pos = 0, formatType = "java.lang.Integer")
>        public int orderNr;
>
>        @LinkField( from = "com.xpectis.csv.model.Order", to =
> "com.xpectis.csv.model.Client", linkType = LinkType.OneToOne)
>        public Client client;
>
>        @DataField(name = "ISIN", pos = 4, formatType = "java.lang.String")
>        public String ISIN_Code;
>
>        @DataField(name = "Name", pos = 5, formatType = "java.lang.String")
>        public String Instrument_Name;
>
>        @DataField(name = "Quantity", pos = 6, formatType = "java.lang.String")
>        public String Quantity;
>
>        @DataField(name = "Cur", pos = 7, formatType = "java.lang.String")
>        public String Currency;
>
> Remark : It is also possible to link class together (but only One to One
> relation is supported) using the annotation @LinkField and makes sense
> because I don't want to support nested CSV.

Great stuff!

BTW could the pos & formatType be inferred from the reflection/introspection?

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

Open Source Integration
http://fusesource.com/

Reply via email to