commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: [csv] record.get APIs for primitive types
Date Fri, 02 Aug 2013 21:17:40 GMT
On Thu, Aug 1, 2013 at 8:23 PM, Paul Benedict <pbenedict@apache.org> wrote:

> I can see that we should provide a decorator/delegate (CSVRecordWrapper?)
> that has these additional methods and defers them to Beanutils. We should
> use our other Commons project to accomplish the pluggable and configurable
> conversion. Beanutils can be an optional Maven dependency. This doesn't
> belong in Commons Langs, because that's where the functionality was before
> migrating to its own BeanUtils project (circa 2001ish).
>

Ok, the record wrapper is an interesting way to go.

Can you show such a class that just works on converting booleans as a
starting point?

Gary


> On Aug 1, 2013 7:06 PM, "James Carman" <james@carmanconsulting.com> wrote:
>
> > Perhaps it belongs in Commons Lang?
> >
> > Anything like this that you try to put together is going to blow up
> > really quickly, by the way (registering new converter types, etc.).  I
> > don't see how having a few little helper methods in CSV is that big of
> > an issue, personally.
> >
> > On Thu, Aug 1, 2013 at 7:59 PM, Paul Benedict
> > <paulus.benedictus@gmail.com> wrote:
> > > You might want to think of a conversion addon package using Common
> > > BeanUtils. That project is skilled at conversions from String and has
> > > pluggable capability to customize conversion types.
> > > On Aug 1, 2013 6:51 PM, "Paul Benedict" <pbenedict@apache.org> wrote:
> > >
> > >> None of these methods document exceptions if the conversion fails (eg,
> > not
> > >> an integer). Also, how strict is the conversion? Can "x" represent
> > boolean
> > >> false or is that an exception?
> > >> On Aug 1, 2013 9:00 AM, "Gary Gregory" <garydgregory@gmail.com>
> wrote:
> > >>
> > >>> I would like to note this CSVRecord addition I am planning on:
> > >>>
> > >>>     public Boolean getBoolean(String name) {
> > >>>     public boolean getBooleanPrimitive(String name)
> > >>>
> > >>> The method listings are at the end of this message.
> > >>>
> > >>> What I want to note here is that these are conversion methods and
> that
> > the
> > >>> record still stores the values internally as Strings. I do not want
> to
> > >>> Javadoc the conversion in order to give us flexibility over
> > representation
> > >>> if we decide to change it in the future (caching or whatnot).
> > >>>
> > >>> I wanted to post here in CTR mode before I or others add APIs like
> > >>> getLong() and getLongPrimitive(). Since this is a library, I do
> > believe we
> > >>> should end up providing such APIs at the record level for primitives.
> > >>>
> > >>>     /**
> > >>>      * Returns a value by name.
> > >>>      *
> > >>>      * @param name
> > >>>      *            the name of the column to be retrieved.
> > >>>      * @return the column value, or {@code null} if the column name
> is
> > not
> > >>> found
> > >>>      * @throws IllegalStateException
> > >>>      *             if no header mapping was provided
> > >>>      * @throws IllegalArgumentException
> > >>>      *             if the record is inconsistent
> > >>>      * @see #isConsistent()
> > >>>      */
> > >>>     public Boolean getBoolean(String name) {
> > >>>         String s = this.get(name);
> > >>>         return s != null ? Boolean.valueOf(s) : null;
> > >>>     }
> > >>>
> > >>>     /**
> > >>>      * Returns a value by name.
> > >>>      *
> > >>>      * @param name
> > >>>      *            the name of the column to be retrieved.
> > >>>      * @return the column value, or {@code false} if the column name
> is
> > >>> not
> > >>> found
> > >>>      * @throws IllegalStateException
> > >>>      *             if no header mapping was provided
> > >>>      * @throws IllegalArgumentException
> > >>>      *             if the record is inconsistent
> > >>>      * @see #isConsistent()
> > >>>      */
> > >>>     public boolean getBooleanPrimitive(String name) {
> > >>>         return Boolean.parseBoolean(this.get(name));
> > >>>     }
> > >>>
> > >>> Gary
> > >>>
> > >>> --
> > >>> E-Mail: garydgregory@gmail.com | ggregory@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-unsubscribe@commons.apache.org
> > For additional commands, e-mail: dev-help@commons.apache.org
> >
> >
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message