package de.skuzzle.polly.sdk.util;
import java.util.Comparator;
public class DirectedComparator<T> implements Comparator<T> {
public enum SortOrder {
UNDEFINED,
ASCENDING,
DESCENDING;
public SortOrder reverse() {
switch (this) {
case ASCENDING: return DESCENDING;
default:
case DESCENDING: return ASCENDING;
}
}
}
private final SortOrder order;
private final Comparator<T> wrapped;
public DirectedComparator(SortOrder order, Comparator<T> wrapped) {
this.order = order;
this.wrapped = wrapped;
}
@Override
public int compare(T o1, T o2) {
switch (this.order) {
default:
case UNDEFINED: return 0;
case ASCENDING: return this.wrapped.compare(o1, o2);
case DESCENDING: return this.wrapped.compare(o2, o1);
}
}
}