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 <dan...@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 <ja...@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 <dan...@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
> > >
> >
>

Reply via email to