aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-04-28 12:50:14 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-04-28 13:30:09 +0200
commit9586b506fd44b035dd057e9fd4ff65f49ee3c7b7 (patch)
treeadaee8f47f1c4bb8d010c5d4b322fa11628c3ad4 /main/src
parentc8b7b76cc248ceb35cf51b7d14cfedc836215a06 (diff)
downloadcgeo-9586b506fd44b035dd057e9fd4ff65f49ee3c7b7.zip
cgeo-9586b506fd44b035dd057e9fd4ff65f49ee3c7b7.tar.gz
cgeo-9586b506fd44b035dd057e9fd4ff65f49ee3c7b7.tar.bz2
Refactoring: use simpler comparaisons
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/sorting/AbstractCacheComparator.java9
-rw-r--r--main/src/cgeo/geocaching/sorting/DifficultyComparator.java7
-rw-r--r--main/src/cgeo/geocaching/sorting/GeocodeComparator.java10
-rw-r--r--main/src/cgeo/geocaching/sorting/InventoryComparator.java13
-rw-r--r--main/src/cgeo/geocaching/sorting/PopularityComparator.java11
-rw-r--r--main/src/cgeo/geocaching/sorting/RatingComparator.java25
-rw-r--r--main/src/cgeo/geocaching/sorting/TerrainComparator.java11
-rw-r--r--main/src/cgeo/geocaching/sorting/VisitComparator.java11
-rw-r--r--main/src/cgeo/geocaching/sorting/VoteComparator.java11
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());
}
}