commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wic...@exinet.co.za (Wickus Martin)
Subject I have a project I'd like to contribute to Jakarta Commons.
Date Thu, 02 Oct 2003 12:02:26 GMT

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("getCustomer.getLastName@order=asc|getCustomer.getFirstName@order=desc
");

To order null values last and ignore case we could create:

new
GComp("getCustomer.getLastName.toLowerCase@order=asc,nulls=last|getCustomer.
getFirstName.toLowerCase@order=desc,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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message