commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Vimont <dan...@commonvox.org>
Subject Re: [COLLECTIONS] [DISCUSS] Possible candidate for inclusion in Commons-Collections: OrderedSet (provides composite-key based ordering of a set of values)
Date Sun, 10 Apr 2016 07:04:13 GMT
I very much appreciate your feedback on this so far!

Clearly, one major challenge before me is to provide much better
documentation, and by "better" I mean documentation which explains up front
(within the first couple of sentences) what differentiates the OrderedSet
implementation from other Collection implementations which order or sort
items.

One obvious analogy that comes to mind (which might be helpful to include
in some appropriate place within Javadocs and/or README text) is that of a
"card catalog". This seems to me a close-to-perfect analogy with one major
caveat: many people under 30 may not know what a card catalog is!

On Sat, Apr 9, 2016 at 6:45 AM, Daniel Vimont <daniel@commonvox.org> wrote:

> Such is the beauty of open-source development -- please do fork away -- I
> would be anxious to see what you come up with! And I will look into OGNL
> (had not heard of it before).
>
> BTW, here is the original desktop application in which I developed the
> progenitor of OrderedSet: https://youtu.be/A1NJD8t9RIU
>
> Thanks!
>
>
> On Fri, Apr 8, 2016 at 11:19 PM, James Carman <james@carmanconsulting.com>
> wrote:
>
>> Don't get me wrong.  This is a cool idea and I think we can build upon it.
>> But, I think we can "stand on the shoulders of giants" a bit here and use
>> some tools that are already available to us.  The use of reflection in
>> your
>> code is a little off-putting.  One option to consider would be something
>> like OGNL.
>>
>> On Fri, Apr 8, 2016 at 9:53 AM Daniel Vimont <daniel@commonvox.org>
>> wrote:
>>
>> > Thanks for the suggestion. I will look into emulating OrderedSet
>> > functionality using the two classes you recommend.
>> >
>> > Since all of the materials that I provided may be a bit on the "tl;dr"
>> > side, I will focus on a single example:
>> >
>> > Book class, with the following attribute get-methods:
>> >   getAuthors -- returns collection of Author objects (a Book may have
>> > multiple authors)
>> >   getGenres -- returns collection of Genre objects (a Book may be
>> > classified in multiple genres)
>> >   getTitle -- returns a Title object (a Book has only one title)
>> >
>> > Order these two Books by a Genre|Author|Title composite-key
>> >   Book 1:
>> >     Title: Dictionary of the English Language
>> >     Genres: Nonfiction; Reference
>> >     Authors: Merriam, George; Webster, Noah
>> >   Book 2:
>> >     Title: A Walk in the Woods
>> >     Genres: Nonfiction; Travel; Quest
>> >     Author: Bryson, Bill
>> >
>> > Following construction and population of an OrderedSet, invocation of
>> the
>> > #entrySet method will return the following entries:
>> >
>> > *Key-components (composite-key)               Value*
>> > *==========================================   ========*
>> > *Genre       Author           Title           Book*
>> > *------      --------         ------          --------*
>> > *Nonfiction  Bryson, Bill     A Walk...       Book 2*
>> > *Nonfiction  Merriam, George  Dictionary...   Book 1*
>> > *Nonfiction  Webster, Noah    Dictionary...   Book 1*
>> > *Quest       Bryson, Bill     A Walk...       Book 2*
>> > *Reference   Merriam, George  Dictionary...   Book 1*
>> > *Reference   Webster, Noah    Dictionary...   Book 1*
>> > *Travel      Bryson, Bill     A Walk...       Book 2*
>> >
>> >
>> > On Fri, Apr 8, 2016 at 8:19 PM, James Carman <
>> james@carmanconsulting.com>
>> > wrote:
>> >
>> > > Couldn't you achieve the same thing using any SortedSet and
>> > > CompareToBuilder?
>> > > On Fri, Apr 8, 2016 at 2:17 AM Daniel Vimont <daniel@commonvox.org>
>> > wrote:
>> > >
>> > > > Hello all,
>> > > >
>> > > > I've just published a new extension to the standard Java Collections
>> > > > Framework to both GitHub and the Maven Central Repository, and am
>> > > > considering offering it up for possible inclusion in the Apache
>> Commons
>> > > > Collections package.
>> > > >
>> > > > The name of the class is "OrderedSet", which is an abbreviated
>> version
>> > of
>> > > > its original working name, "CompositeKeyOrderedSet". As its previous
>> > > > working name suggests, an OrderedSet provides for composite-key
>> based
>> > > > ordering of a set of values (analogous to composite-key ordering in
>> a
>> > > > relational database). To get a better sense of what that actually
>> > means,
>> > > > the README text on the project's GitHub page provides a quick
>> overview
>> > > (or
>> > > > dive down into the source code on the GitHub page, if you prefer):
>> > > > https://github.com/dvimont/OrderedSet
>> > > >
>> > > > For more thorough end-user documentation, the project's Javadocs
>> can be
>> > > > consulted:
>> > > > http://bit.ly/ordered-set
>> > > >
>> > > > I realize that "Apache Commons is a Commit-Then-Review community",
>> but
>> > > > before I go through the steps of preparing a patch for submission
I
>> > > wanted
>> > > > to get some feedback, if possible, regarding whether this class
>> would
>> > be
>> > > > appropriate for inclusion in the Apache Commons Collections package,
>> > and
>> > > to
>> > > > be sure that its core functionality does not duplicate either (a)
>> some
>> > > > already-existing component of the package or (b) some alternate,
>> > > well-known
>> > > > (to all but me!) means of achieving automated composite-key-style
>> > > ordering
>> > > > (in Java 1.6+).
>> > > >
>> > > > Thanks very much,
>> > > >
>> > > > Dan Vimont
>> > > >
>> > >
>> >
>>
>
>

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