package ro.nextreports.server.web.dashboard.table;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Comparator;
import java.util.Date;
public class TableObjectComparator implements Comparator<Object> {
/**
* Constructor
*/
public TableObjectComparator() {
}
public int compare(Object o1, Object o2) {
if ((o1 == null) && (o2 == null)) {
return 0;
}
if (o1 == null) {
return -1;
}
if (o2 == null) {
return 1;
}
if (!o1.getClass().equals(o2.getClass())) {
return o1.getClass().toString().compareTo(o2.getClass().toString());
}
String className = o1.getClass().getName();
if (className.equals("java.lang.String")) {
return ((String) o1).compareTo((String) o2);
} else if (className.equals("java.lang.Byte") || className.equals("byte")) {
return ((Byte) o1).compareTo((Byte) o2);
} else if (className.equals("java.lang.Short") || className.equals("short")) {
return ((Short) o1).compareTo((Short) o2);
} else if (className.equals("java.lang.Integer") || className.equals("int")) {
return ((Integer) o1).compareTo((Integer) o2);
} else if (className.equals("java.lang.Float") || className.equals("float")) {
return ((Float) o1).compareTo((Float) o2);
} else if (className.equals("java.lang.Double") || className.equals("double")) {
return ((Double) o1).compareTo((Double) o2);
} else if (className.equals("java.math.BigDecimal")) {
return ((BigDecimal) o1).compareTo((BigDecimal) o2);
} else if (className.equals("java.lang.BigInteger")) {
return ((BigInteger) o1).compareTo((BigInteger) o2);
} else if (className.equals("java.lang.Character") || className.equals("char")) {
return ((Character) o1).compareTo((Character) o2);
} else if (className.equals("java.lang.Boolean") || className.equals("boolean")) {
return ((Boolean) o1).compareTo((Boolean) o2);
} else if (className.equals("java.util.Date")) {
return ((Date) o1).compareTo((Date) o2);
} else if (className.equals("java.sql.Date")) {
return ((java.sql.Date) o1).compareTo((java.sql.Date) o2);
} else if (className.equals("java.sql.Timestamp")) {
return ((java.sql.Timestamp) o1).compareTo((java.sql.Timestamp) o2);
} else if (className.equals("java.sql.Time")) {
return ((java.sql.Time) o1).compareTo((java.sql.Time) o2);
}
return o1.toString().compareTo(o2.toString());
}
}