Wednesday, August 02, 2006

BeanComparator

import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.commons.collections.comparators.ReverseComparator;


public class BeanComparator implements Comparator {

private String attribute;
private String sortBy;
private String javaType;

private Comparator comp = new ComparableComparator();

public BeanComparator(String attrib, String sortBy, String javaType) {
this.attribute = attrib;
this.sortBy = sortBy;
this.javaType = javaType;

if(this.sortBy!= null && !this.sortBy.equals("") && this.sortBy.equals("descending") )
comp = new ReverseComparator();
else if (this.sortBy!= null && !this.sortBy.equals("") && this.sortBy.equals("ascending") )
comp = new ComparableComparator();

}

public int compare(Object o1, Object o2) {
if(o1 == null) {
return 1;
} else
if(o2 == null) {
return -1;
}

try {
Object ret1 = PropertyUtils.getProperty(o1, this.attribute);
Object ret2 = PropertyUtils.getProperty(o2, this.attribute);
return this.comp.compare(ret1, ret2);

} catch(Exception e) {
return 0;
}
}

}

No comments: