package org.yajul.comparators; import org.yajul.util.StringUtil; import java.util.Comparator; /** * Helper methods for comparators. * <br> * User: josh * Date: Dec 24, 2009 * Time: 8:44:13 AM */ public class ComparatorUtil { public static final Comparator<Comparable> COMPARABLE_COMPARATOR = new Comparator<Comparable>() { public int compare(Comparable o1, Comparable o2) { //noinspection unchecked return o1.compareTo(o2); } }; public static <T> Comparator<T> comparableComparator() { //noinspection unchecked return (Comparator<T>) COMPARABLE_COMPARATOR; } public static final Comparator<Comparable> NULL_LOW_COMPARATOR = new NullComparator<Comparable>(COMPARABLE_COMPARATOR); public static <T> Comparator<T> nullLowComparableComparator() { //noinspection unchecked return (Comparator<T>) NULL_LOW_COMPARATOR; } public static final Comparator<String> STRING_COMPARATOR = comparableComparator(); public static final Comparator<String> NULL_LOW_STRING_COMPARATOR = nullLowComparableComparator(); public static final Comparator<String> NULL_EQUALS_EMPTY_STRING_COMPARATOR = new Comparator<String>() { public int compare(String a, String b) { return STRING_COMPARATOR.compare( StringUtil.nullAsEmpty(a), StringUtil.nullAsEmpty(b)); } }; public static int compareIntegers(int i1, int i2) { return (i1 < i2 ? -1 : (i1 == i2 ? 0 : 1)); } public static boolean nullSafeEquals(Object a, Object b) { return (a == null && b == null) || (a != null && b != null && a.equals(b)); } public static int nullSafeCompare(Double a, Double b) { if (a == null && b == null) return 0; else if (a == null) return -1; else if (b == null) return 1; return Double.compare(a, b); } }