public class IntegerComparator implements Comparator {
    public boolean isLessThan(Object a, Object b) throws ComparatorException {
        if (!isComparable(a) || !isComparable(b)) {
            throw new ComparatorException("Keys are incomparable");
        }
        return (((Integer) a).intValue() < ((Integer) b).intValue());
    }
    public boolean isLessThanOrEqualTo(Object a, Object b) throws ComparatorException {
        return (isLessThan(a, b) || isEqualTo(a, b));
    }
    public boolean isEqualTo(Object a, Object b) throws ComparatorException {
        if (!isComparable(a) || !isComparable(b)) {
            throw new ComparatorException("Keys are incomparable");
        }
        return ((Integer) a).equals((Integer) b);
    }
    public boolean isGreaterThan(Object a, Object b) throws ComparatorException {
        return isLessThan(b, a);
    }
    public boolean isGreaterThanOrEqualTo(Object a, Object b) throws ComparatorException {
        return (isGreaterThan(a, b) || isEqualTo(a, b));
    }
    public boolean isComparable(Object a) {
        return (a instanceof Integer);
    }
}
