package cgeo.geocaching.log; import cgeo.geocaching.utils.TextUtils; import java.util.Comparator; public enum TrackableComparator { TRACKABLE_COMPARATOR_NAME(new Comparator<TrackableLog>() { @Override public int compare(final TrackableLog lhs, final TrackableLog rhs) { return TextUtils.COLLATOR.compare(lhs.name, rhs.name); } }), TRACKABLE_COMPARATOR_TRACKCODE(new Comparator<TrackableLog>() { @Override public int compare(final TrackableLog lhs, final TrackableLog rhs) { return TextUtils.COLLATOR.compare(lhs.trackCode, rhs.trackCode); } }); private final Comparator<TrackableLog> comparator; TrackableComparator(final Comparator<TrackableLog> comparator) { this.comparator = comparator; } public Comparator<TrackableLog> getComparator() { return comparator; } public static TrackableComparator findByName(final String name) { for (final TrackableComparator comp : values()) { if (comp.name().equals(name)) { return comp; } } return TrackableComparator.TRACKABLE_COMPARATOR_NAME; } }