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 > > > > > >