diff options
Diffstat (limited to 'main/src')
9 files changed, 29 insertions, 79 deletions
diff --git a/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java b/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java index 9c3f15b..2015375 100644 --- a/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java +++ b/main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java @@ -11,7 +11,7 @@ import cgeo.geocaching.utils.Log; public abstract class AbstractCacheComparator implements CacheComparator { @Override - public final int compare(cgCache cache1, cgCache cache2) { + public final int compare(final cgCache cache1, final cgCache cache2) { try { // first check that we have all necessary data for the comparison if (!canCompare(cache1, cache2)) { @@ -25,7 +25,7 @@ public abstract class AbstractCacheComparator implements CacheComparator { } /** - * check necessary preconditions (like missing fields) before running the comparison itself + * Check necessary preconditions (like missing fields) before running the comparison itself * * @param cache1 * @param cache2 @@ -34,7 +34,10 @@ public abstract class AbstractCacheComparator implements CacheComparator { protected abstract boolean canCompare(final cgCache cache1, final cgCache cache2); /** - * compares two caches. Logging and exception handling is implemented outside this method already. + * Compares two caches. Logging and exception handling is implemented outside this method already. + * <p/> + * A cache is smaller than another cache if it is desirable to show it first when presented to the user. + * For example, a highly rated cache must be considered smaller than a poorly rated one. * * @param cache1 * @param cache2 diff --git a/main/src/cgeo/geocaching/sorting/DifficultyComparator.java b/main/src/cgeo/geocaching/sorting/DifficultyComparator.java index 0d65660..123bab9 100644 --- a/main/src/cgeo/geocaching/sorting/DifficultyComparator.java +++ b/main/src/cgeo/geocaching/sorting/DifficultyComparator.java @@ -15,11 +15,6 @@ public class DifficultyComparator extends AbstractCacheComparator { @Override protected int compareCaches(final cgCache cache1, final cgCache cache2) { - if (cache1.getDifficulty() > cache2.getDifficulty()) { - return 1; - } else if (cache2.getDifficulty() > cache1.getDifficulty()) { - return -1; - } - return 0; + return Float.compare(cache1.getDifficulty(), cache2.getDifficulty()); } }
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/sorting/GeocodeComparator.java b/main/src/cgeo/geocaching/sorting/GeocodeComparator.java index 1377cce..fb93c0e 100644 --- a/main/src/cgeo/geocaching/sorting/GeocodeComparator.java +++ b/main/src/cgeo/geocaching/sorting/GeocodeComparator.java @@ -17,12 +17,8 @@ public class GeocodeComparator extends AbstractCacheComparator { } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - if (cache1.getGeocode().length() > cache2.getGeocode().length()) { - return 1; - } else if (cache2.getGeocode().length() > cache1.getGeocode().length()) { - return -1; - } - return cache1.getGeocode().compareToIgnoreCase(cache2.getGeocode()); + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + final int lengthDiff = cache1.getGeocode().length() - cache2.getGeocode().length(); + return lengthDiff != 0 ? lengthDiff : cache1.getGeocode().compareToIgnoreCase(cache2.getGeocode()); } } diff --git a/main/src/cgeo/geocaching/sorting/InventoryComparator.java b/main/src/cgeo/geocaching/sorting/InventoryComparator.java index b1842d7..d4e9f5e 100644 --- a/main/src/cgeo/geocaching/sorting/InventoryComparator.java +++ b/main/src/cgeo/geocaching/sorting/InventoryComparator.java @@ -11,19 +11,12 @@ import cgeo.geocaching.cgCache; public class InventoryComparator extends AbstractCacheComparator { @Override - protected boolean canCompare(cgCache cache1, cgCache cache2) { + protected boolean canCompare(final cgCache cache1, final cgCache cache2) { return true; } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - int itemCount1 = cache1.getInventoryItems(); - int itemCount2 = cache2.getInventoryItems(); - if (itemCount1 < itemCount2) { - return 1; - } else if (itemCount2 < itemCount1) { - return -1; - } - return 0; + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + return cache2.getInventoryItems() - cache1.getInventoryItems(); } } diff --git a/main/src/cgeo/geocaching/sorting/PopularityComparator.java b/main/src/cgeo/geocaching/sorting/PopularityComparator.java index 9fe254a..62ad9a9 100644 --- a/main/src/cgeo/geocaching/sorting/PopularityComparator.java +++ b/main/src/cgeo/geocaching/sorting/PopularityComparator.java @@ -9,17 +9,12 @@ import cgeo.geocaching.cgCache; public class PopularityComparator extends AbstractCacheComparator { @Override - protected boolean canCompare(cgCache cache1, cgCache cache2) { + protected boolean canCompare(final cgCache cache1, final cgCache cache2) { return true; } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - if (cache1.getFavoritePoints() < cache2.getFavoritePoints()) { - return 1; - } else if (cache2.getFavoritePoints() < cache1.getFavoritePoints()) { - return -1; - } - return 0; + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + return cache2.getFavoritePoints() - cache1.getFavoritePoints(); } } diff --git a/main/src/cgeo/geocaching/sorting/RatingComparator.java b/main/src/cgeo/geocaching/sorting/RatingComparator.java index 935ccd8..be071c5 100644 --- a/main/src/cgeo/geocaching/sorting/RatingComparator.java +++ b/main/src/cgeo/geocaching/sorting/RatingComparator.java @@ -9,28 +9,15 @@ import cgeo.geocaching.cgCache; public class RatingComparator extends AbstractCacheComparator { @Override - protected boolean canCompare(cgCache cache1, cgCache cache2) { + protected boolean canCompare(final cgCache cache1, final cgCache cache2) { return true; } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - float rating1 = cache1.getRating(); - float rating2 = cache2.getRating(); - - // voting can be disabled for caches, then assume an average rating instead - if (rating1 == 0.0) { - rating1 = 2.5f; - } - if (rating2 == 0.0) { - rating2 = 2.5f; - } - - if (rating1 < rating2) { - return 1; - } else if (rating2 < rating1) { - return -1; - } - return 0; + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + final float rating1 = cache1.getRating(); + final float rating2 = cache2.getRating(); + // Voting can be disabled for caches, then assume an average rating instead + return Float.compare(rating2 != 0.0 ? rating2 : 2.5f, rating1 != 0.0 ? rating1 : 2.5f); } }
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/sorting/TerrainComparator.java b/main/src/cgeo/geocaching/sorting/TerrainComparator.java index c0590cb..9058a3c 100644 --- a/main/src/cgeo/geocaching/sorting/TerrainComparator.java +++ b/main/src/cgeo/geocaching/sorting/TerrainComparator.java @@ -9,17 +9,12 @@ import cgeo.geocaching.cgCache; public class TerrainComparator extends AbstractCacheComparator { @Override - protected boolean canCompare(cgCache cache1, cgCache cache2) { + protected boolean canCompare(final cgCache cache1, final cgCache cache2) { return cache1.getTerrain() != 0.0 && cache2.getTerrain() != 0.0; } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - if (cache1.getTerrain() > cache2.getTerrain()) { - return 1; - } else if (cache2.getTerrain() > cache1.getTerrain()) { - return -1; - } - return 0; + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + return Float.compare(cache1.getTerrain(), cache2.getTerrain()); } } diff --git a/main/src/cgeo/geocaching/sorting/VisitComparator.java b/main/src/cgeo/geocaching/sorting/VisitComparator.java index a580f2a..548ec7a 100644 --- a/main/src/cgeo/geocaching/sorting/VisitComparator.java +++ b/main/src/cgeo/geocaching/sorting/VisitComparator.java @@ -9,17 +9,12 @@ import cgeo.geocaching.cgCache; public class VisitComparator extends AbstractCacheComparator { @Override - protected boolean canCompare(cgCache cache1, cgCache cache2) { + protected boolean canCompare(final cgCache cache1, final cgCache cache2) { return cache1.getVisitedDate() > 0 && cache2.getVisitedDate() > 0; } @Override - protected int compareCaches(cgCache cache1, cgCache cache2) { - if (cache1.getVisitedDate() > cache2.getVisitedDate()) { - return -1; - } else if (cache1.getVisitedDate() < cache2.getVisitedDate()) { - return 1; - } - return 0; + protected int compareCaches(final cgCache cache1, final cgCache cache2) { + return Long.valueOf(cache2.getVisitedDate()).compareTo(cache1.getVisitedDate()); } } diff --git a/main/src/cgeo/geocaching/sorting/VoteComparator.java b/main/src/cgeo/geocaching/sorting/VoteComparator.java index 82ebdd3..8d9f907 100644 --- a/main/src/cgeo/geocaching/sorting/VoteComparator.java +++ b/main/src/cgeo/geocaching/sorting/VoteComparator.java @@ -18,15 +18,6 @@ public class VoteComparator extends AbstractCacheComparator { @Override protected int compareCaches(cgCache cache1, cgCache cache2) { // if there is no vote available, put that cache at the end of the list - float vote1 = cache1.getMyVote(); - float vote2 = cache2.getMyVote(); - - // compare - if (vote1 < vote2) { - return 1; - } else if (vote2 < vote1) { - return -1; - } - return 0; + return Float.compare(cache2.getMyVote(), cache1.getMyVote()); } } |
