aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/sorting
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-05-31 22:41:16 +0200
committerBananeweizen <bananeweizen@gmx.de>2012-05-31 22:41:16 +0200
commit7b4716931ec6ed050588d4197ccbf2bbaa0473b1 (patch)
treea277b367162aa4d74c3adb3bafd5746d4fdc9832 /main/src/cgeo/geocaching/sorting
parent62636e394a954309899604be1222a5e1a984390b (diff)
downloadcgeo-7b4716931ec6ed050588d4197ccbf2bbaa0473b1.zip
cgeo-7b4716931ec6ed050588d4197ccbf2bbaa0473b1.tar.gz
cgeo-7b4716931ec6ed050588d4197ccbf2bbaa0473b1.tar.bz2
new: sorting by date sorts by distance for equal dates
* much better for simultaneous events on the same date
Diffstat (limited to 'main/src/cgeo/geocaching/sorting')
-rw-r--r--main/src/cgeo/geocaching/sorting/DateComparator.java17
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;