On 17 January 2014 08:38, Benedikt Ritter <brit...@apache.org> wrote: > 2014/1/17 sebb <seb...@gmail.com> > >> On 17 January 2014 00:57, Gary Gregory <garydgreg...@gmail.com> wrote: >> > On Thu, Jan 16, 2014 at 7:24 PM, sebb <seb...@gmail.com> wrote: >> > >> >> On 16 January 2014 20:58, Gary Gregory <garydgreg...@gmail.com> wrote: >> >> > On Thu, Jan 16, 2014 at 7:49 AM, Emmanuel Bourg <ebo...@apache.org> >> >> wrote: >> >> > >> >> >> Le 15/01/2014 14:04, Gary Gregory a écrit : >> >> >> >> >> >> > Uh, I want to go the other way around. See my use case. >> >> >> >> >> >> Why isn't this suitable to your use case? You could write: >> >> >> >> >> >> factory.create(record.toMap()); >> >> >> >> >> >> and then remove the create(CSVRecord) method with the duplicated >> >> >> implementation. >> >> >> >> >> >> What am I missing? >> >> >> >> >> > >> >> > That would work. What is still not clean or OO is that toMap() means >> >> > nothing when no headers are defined. >> >> > >> >> > I've split the record into a mapped record subclass here: >> >> > >> >> > https://issues.apache.org/jira/browse/CSV-104 >> >> > >> >> > Thoughts? >> >> > >> >> > We can still have toMap() implemented on top of the code now, but it >> >> would >> >> > have to return null if there are no headers. >> >> >> >> Why not return an empty Map? >> >> >> > >> > An empty map is, well, empty but the record is not empty, so that's kinda >> > confusing, >> >> Depends on the method Javadoc whether it is confusing or not. >> >> If toMap() is defined to return the empty Map if there are no column >> names, then that is clear to me. >> >> AFAICT an empty map cannot be generated otherwise. >> >> Or is there a situation where an empty map means something usefully >> distinct from no header names? >> >> > whereas null is clearly something that does exist. If toMap() is >> > only in the subclass, then there is no problem. >> > >> > The alternative is to create a real map with columns name "Column1", >> > "Column2", and so on. But then that would be confusing because >> > record.get("Column1) would give you null whereas >> > record.toMap().get("Column1") would give you a value. Then we get to talk >> > about having "Column1", "Column2"... as the default column names if none >> > are provided... kinda too clever. >> >> Yuk. >> >> > All of this to say that over time it is likely as we need to provide more >> > APIs, and it seems easier to say null than an empty structure. First >> > toMap(), then toProperties() and so on. >> >> I don't think that follows. >> >> > The KISS solution is toMap() -> null for unmapped records IMO. >> >> IMO the empty map is better. >> > > To me this sounds more like IllegalStateException... >
I would be OK with that as well. IMO null is almost never correct as a collection or array return. >> >> > Gary >> > >> > >> >> >> >> > Gary >> >> > >> >> > >> >> >> >> >> >> Emmanuel Bourg >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> >> >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> >> >> >> >> >> >> > >> >> > >> >> > -- >> >> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> >> > Java Persistence with Hibernate, Second Edition< >> >> http://www.manning.com/bauer3/> >> >> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> >> > Spring Batch in Action <http://www.manning.com/templier/> >> >> > Blog: http://garygregory.wordpress.com >> >> > Home: http://garygregory.com/ >> >> > Tweet! http://twitter.com/GaryGregory >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> >> >> >> > >> > >> > -- >> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >> > Java Persistence with Hibernate, Second Edition< >> http://www.manning.com/bauer3/> >> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> > Spring Batch in Action <http://www.manning.com/templier/> >> > Blog: http://garygregory.wordpress.com >> > Home: http://garygregory.com/ >> > Tweet! http://twitter.com/GaryGregory >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org >> For additional commands, e-mail: dev-h...@commons.apache.org >> >> > > > -- > http://people.apache.org/~britter/ > http://www.systemoutprintln.de/ > http://twitter.com/BenediktRitter > http://github.com/britter --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org