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/