package org.appfuse.webapp;
import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.beanutils.PropertyUtils;
/**
* Comparator to allow comparing a List of beans and sorting decending on
* a Date property.
*
* @author mraible
*/
public class BeanDateComparator extends BeanComparator {
private static final long serialVersionUID = -5496825158557972554L;
public BeanDateComparator(String property) {
super(property);
}
@SuppressWarnings("unchecked")
public int compare( Object o1, Object o2 ) {
if ( getProperty() == null ) {
// compare the actual objects
return getComparator().compare(o1, o2);
}
try {
Object value1 = PropertyUtils.getProperty( o1, getProperty() );
Object value2 = PropertyUtils.getProperty( o2, getProperty() );
if (value1 == null) {
return -1;
} else if (value2 == null) {
return 1;
}
int result = getComparator().compare( value1, value2 );
if (result == 1) return -1;
else return 1;
} catch (Exception e) {
throw new ClassCastException( e.toString() );
}
}
}