A while back I wrote a generic comparator for Java objects and called it GComp. We’ve been using it internally at the company where I work, but I was wondering if it might not be of value to the commons project.
Typically Java programmers create a custom Comparator implementation for every comparison scenario they encounter. GComp on the other hand can compare objects according to complex criteria based on a simple expression that explains how the objects should be compared. Great time saver and prevents problem of many small comparator classes bloating the code base. Usage scenario: Lets say we have a class called Customer with methods to access the first name and last name. Lets also say we have a class called Order that holds a reference to an instance of Customer. To compare orders according to the customer surname (ascending) we could create the following comparator: new GComp("getLastName"); To compare a collection of orders according to the customer last name (ascending) and then first name (descending) for those customers with the same last name we could create the following comparator: new GComp("[EMAIL PROTECTED]|[EMAIL PROTECTED] "); To order null values last and ignore case we could create: new GComp("[EMAIL PROTECTED],nulls=last|getCustomer. [EMAIL PROTECTED],nulls=last"); The above code only orders on string objects, but all objects implementing the comparable interface is supported as is primitive types. Currently GComp uses commons-logging to output debugging information if commons logging is found on the classpath. I'm happy to donate the code for further study. Let me know. Keep well, Wickus Martin --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]