diff options
| -rw-r--r-- | main/src/cgeo/geocaching/sorting/DateComparator.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/sorting/DateComparator.java b/main/src/cgeo/geocaching/sorting/DateComparator.java index 7129905..3136d47 100644 --- a/main/src/cgeo/geocaching/sorting/DateComparator.java +++ b/main/src/cgeo/geocaching/sorting/DateComparator.java @@ -1,7 +1,9 @@ package cgeo.geocaching.sorting; import cgeo.geocaching.cgCache; +import cgeo.geocaching.cgeoapplication; +import java.util.ArrayList; import java.util.Date; /** @@ -16,10 +18,19 @@ public class DateComparator extends AbstractCacheComparator { @Override protected int compareCaches(cgCache cache1, cgCache cache2) { - Date date1 = cache1.getHiddenDate(); - Date date2 = cache2.getHiddenDate(); + final Date date1 = cache1.getHiddenDate(); + final Date date2 = cache2.getHiddenDate(); if (date1 != null && date2 != null) { - return date1.compareTo(date2); + final int dateDifference = date1.compareTo(date2); + // for equal dates, sort by distance + if (dateDifference == 0) { + final ArrayList<cgCache> list = new ArrayList<cgCache>(); + list.add(cache1); + list.add(cache2); + final DistanceComparator distanceComparator = new DistanceComparator(cgeoapplication.getInstance().currentGeo().getCoords(), list); + return distanceComparator.compare(cache1, cache2); + } + return dateDifference; } if (date1 != null) { return -1; |
