diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2015-01-27 20:12:05 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2015-01-27 20:12:05 +0100 |
| commit | c9ec99080115f7d981e11f8573ae2cd874cd7b8b (patch) | |
| tree | 38756f2e7a51f139f4bef96e04ae54ce6f8c0a77 /main/src/cgeo/geocaching/sorting | |
| parent | 9b02b846845885334991555b0d7ad4c811b1e264 (diff) | |
| download | cgeo-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.java | 16 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/sorting/EventDateComparator.java | 17 |
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); + } } |
