aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/sorting
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2015-01-27 20:12:05 +0100
committerBananeweizen <bananeweizen@gmx.de>2015-01-27 20:12:05 +0100
commitc9ec99080115f7d981e11f8573ae2cd874cd7b8b (patch)
tree38756f2e7a51f139f4bef96e04ae54ce6f8c0a77 /main/src/cgeo/geocaching/sorting
parent9b02b846845885334991555b0d7ad4c811b1e264 (diff)
downloadcgeo-c9ec99080115f7d981e11f8573ae2cd874cd7b8b.zip
cgeo-c9ec99080115f7d981e11f8573ae2cd874cd7b8b.tar.gz
cgeo-c9ec99080115f7d981e11f8573ae2cd874cd7b8b.tar.bz2
new: sort event caches by date AND time
Diffstat (limited to 'main/src/cgeo/geocaching/sorting')
-rw-r--r--main/src/cgeo/geocaching/sorting/DateComparator.java16
-rw-r--r--main/src/cgeo/geocaching/sorting/EventDateComparator.java17
2 files changed, 27 insertions, 6 deletions
diff --git a/main/src/cgeo/geocaching/sorting/DateComparator.java b/main/src/cgeo/geocaching/sorting/DateComparator.java
index af50213..347eb44 100644
--- a/main/src/cgeo/geocaching/sorting/DateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/DateComparator.java
@@ -17,13 +17,8 @@ class DateComparator extends AbstractCacheComparator {
final Date date2 = cache2.getHiddenDate();
if (date1 != null && date2 != null) {
final int dateDifference = date1.compareTo(date2);
- // for equal dates, sort by distance
if (dateDifference == 0) {
- final ArrayList<Geocache> list = new ArrayList<>();
- list.add(cache1);
- list.add(cache2);
- final DistanceComparator distanceComparator = new DistanceComparator(Sensors.getInstance().currentGeo().getCoords(), list);
- return distanceComparator.compare(cache1, cache2);
+ return sortSameDate(cache1, cache2);
}
return dateDifference;
}
@@ -35,4 +30,13 @@ class DateComparator extends AbstractCacheComparator {
}
return 0;
}
+
+ @SuppressWarnings("static-method")
+ protected int sortSameDate(final Geocache cache1, final Geocache cache2) {
+ final ArrayList<Geocache> list = new ArrayList<>();
+ list.add(cache1);
+ list.add(cache2);
+ final DistanceComparator distanceComparator = new DistanceComparator(Sensors.getInstance().currentGeo().getCoords(), list);
+ return distanceComparator.compare(cache1, cache2);
+ }
}
diff --git a/main/src/cgeo/geocaching/sorting/EventDateComparator.java b/main/src/cgeo/geocaching/sorting/EventDateComparator.java
index 197946a..425ddbb 100644
--- a/main/src/cgeo/geocaching/sorting/EventDateComparator.java
+++ b/main/src/cgeo/geocaching/sorting/EventDateComparator.java
@@ -1,5 +1,7 @@
package cgeo.geocaching.sorting;
+import cgeo.geocaching.Geocache;
+
/**
* Compares caches by date. Used only for event caches.
*/
@@ -7,4 +9,19 @@ public class EventDateComparator extends DateComparator {
final static public EventDateComparator singleton = new EventDateComparator();
+ @Override
+ protected int sortSameDate(final Geocache left, final Geocache right) {
+ return compare(left.guessEventTimeMinutes(), right.guessEventTimeMinutes());
+ }
+
+ /**
+ * copy of {@link Integer#compare(int, int)}, as that is not available on lower API levels
+ *
+ * @param left
+ * @param right
+ * @return
+ */
+ private static int compare(final int left, final int right) {
+ return left < right ? -1 : (left == right ? 0 : 1);
+ }
}