diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-08 00:00:58 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-08 11:32:14 +0200 |
| commit | 39ec7accd759fd60706523b366977ba371efd168 (patch) | |
| tree | 401ba08d9ec58e49d02ce614e12db5cf7b2b57bd /src/cgeo/geocaching/sorting/DistanceComparator.java | |
| parent | 668472ec735f827a4741a971614596df02618689 (diff) | |
| download | cgeo-39ec7accd759fd60706523b366977ba371efd168.zip cgeo-39ec7accd759fd60706523b366977ba371efd168.tar.gz cgeo-39ec7accd759fd60706523b366977ba371efd168.tar.bz2 | |
Refactoring to use Geopoint for coordinates
This uses the new Geopoint immutable class discussed in #58. No more
independent longitude or latitude fields -- they are now treated
and defined as a consistent pair.
Diffstat (limited to 'src/cgeo/geocaching/sorting/DistanceComparator.java')
| -rw-r--r-- | src/cgeo/geocaching/sorting/DistanceComparator.java | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/cgeo/geocaching/sorting/DistanceComparator.java b/src/cgeo/geocaching/sorting/DistanceComparator.java index fc7b712..6198753 100644 --- a/src/cgeo/geocaching/sorting/DistanceComparator.java +++ b/src/cgeo/geocaching/sorting/DistanceComparator.java @@ -2,26 +2,25 @@ package cgeo.geocaching.sorting; import cgeo.geocaching.cgBase; import cgeo.geocaching.cgCache; +import cgeo.geocaching.geopoint.Geopoint; /** * sorts caches by distance to current position * */ public class DistanceComparator extends AbstractCacheComparator { - private Double latitude = null; - private Double longitude = null; + private Geopoint coords = null; public DistanceComparator() { // nothing } - public DistanceComparator(Double latitudeIn, Double longitudeIn) { - setCoords(latitudeIn, longitudeIn); + public DistanceComparator(final Geopoint coords) { + setCoords(coords); } - public void setCoords(Double latitudeIn, Double longitudeIn) { - latitude = latitudeIn; - longitude = longitudeIn; + public void setCoords(final Geopoint coords) { + this.coords = coords; } @Override @@ -31,8 +30,7 @@ public class DistanceComparator extends AbstractCacheComparator { @Override protected int compareCaches(final cgCache cache1, final cgCache cache2) { - if ((cache1.latitude == null || cache1.longitude == null - || cache2.latitude == null || cache2.longitude == null) + if ((cache1.coords == null || cache2.coords == null) && cache1.distance != null && cache2.distance != null) { if (cache1.distance < cache2.distance) { return -1; @@ -42,17 +40,15 @@ public class DistanceComparator extends AbstractCacheComparator { return 0; } } else { - if (cache1.latitude == null || cache1.longitude == null) { + if (cache1.coords == null) { return 1; } - if (cache2.latitude == null || cache2.longitude == null) { + if (cache2.coords == null) { return -1; } - Double distance1 = cgBase.getDistance(latitude, longitude, - cache1.latitude, cache1.longitude); - Double distance2 = cgBase.getDistance(latitude, longitude, - cache2.latitude, cache2.longitude); + Double distance1 = cgBase.getDistance(coords, cache1.coords); + Double distance2 = cgBase.getDistance(coords, cache2.coords); if (distance1 < distance2) { return -1; |
