diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-06 05:45:53 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-06 06:05:23 +0200 |
| commit | d62197ccda7b6a79bbdd0950b297236b750abe67 (patch) | |
| tree | 0af82d6d2c8fed591be5b1d7fe181059a5d420b8 | |
| parent | ede2a9cd6d6b1943aa6a94fd984de0ef3692b6bc (diff) | |
| download | cgeo-d62197ccda7b6a79bbdd0950b297236b750abe67.zip cgeo-d62197ccda7b6a79bbdd0950b297236b750abe67.tar.gz cgeo-d62197ccda7b6a79bbdd0950b297236b750abe67.tar.bz2 | |
Use UUID instead of Long as a unique id
The previously used id was not necessarily unique. The UUID class
in java.util has been designed for this purpose.
24 files changed, 113 insertions, 82 deletions
diff --git a/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java b/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java index 6b05426..273be5c 100644 --- a/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -26,7 +28,7 @@ class GoogleMapsApp extends AbstractNavigationApp implements NavigationApp { public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache == null && waypoint == null && latitude == null && longitude == null) { return false; } diff --git a/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java b/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java index b8afb54..4a7a49e 100644 --- a/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -28,7 +30,7 @@ class GoogleNavigationApp extends AbstractNavigationApp implements @Override public boolean invoke(final cgGeo geo, final Activity activity, final Resources res, final cgCache cache, - final Long searchId, final cgWaypoint waypoint, final Double latitude, final Double longitude) { + final UUID searchId, final cgWaypoint waypoint, final Double latitude, final Double longitude) { if (activity == null) { return false; } diff --git a/src/cgeo/geocaching/apps/cache/navi/InternalMap.java b/src/cgeo/geocaching/apps/cache/navi/InternalMap.java index 4c3d815..513172c 100644 --- a/src/cgeo/geocaching/apps/cache/navi/InternalMap.java +++ b/src/cgeo/geocaching/apps/cache/navi/InternalMap.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.Intent; import android.content.res.Resources; @@ -19,7 +21,7 @@ class InternalMap extends AbstractInternalMap implements @Override public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { cgSettings settings = getSettings(activity); Intent mapIntent = new Intent(activity, settings.getMapFactory().getMapClass()); if (cache != null) { @@ -28,7 +30,7 @@ class InternalMap extends AbstractInternalMap implements } if (searchId != null) { mapIntent.putExtra("detail", true); - mapIntent.putExtra("searchid", searchId); + mapIntent.putExtra("searchid", searchId.toString()); } if (waypoint != null) { mapIntent.putExtra("latitude", waypoint.latitude); diff --git a/src/cgeo/geocaching/apps/cache/navi/LocusApp.java b/src/cgeo/geocaching/apps/cache/navi/LocusApp.java index 80c7052..fdba2fc 100644 --- a/src/cgeo/geocaching/apps/cache/navi/LocusApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/LocusApp.java @@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import org.apache.commons.lang3.StringUtils; @@ -29,7 +30,7 @@ class LocusApp extends AbstractLocusApp implements NavigationApp { @Override public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache == null && waypoint == null && latitude == null && longitude == null) { return false; diff --git a/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java b/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java index 2f52111..db0c1e3 100644 --- a/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.res.Resources; import cgeo.geocaching.cgCache; @@ -11,6 +13,6 @@ interface NavigationApp extends App { public boolean invoke(final cgGeo geo, final Activity activity, final Resources res, final cgCache cache, - final Long searchId, final cgWaypoint waypoint, + final UUID searchId, final cgWaypoint waypoint, final Double latitude, final Double longitude); } diff --git a/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index 1ee5c87..b8872e3 100644 --- a/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -1,6 +1,7 @@ package cgeo.geocaching.apps.cache.navi; import java.util.List; +import java.util.UUID; import org.apache.commons.lang3.ArrayUtils; @@ -46,7 +47,7 @@ public final class NavigationAppFactory extends AbstractAppFactory { public static boolean onMenuItemSelected(final MenuItem item, final cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, List<Double> destination) { + final UUID searchId, cgWaypoint waypoint, List<Double> destination) { NavigationApp app = (NavigationApp) getAppFromMenuItem(item, apps); if (app != null) { Double latitude = null; diff --git a/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java b/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java index 80802ac..8e75aaa 100644 --- a/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java @@ -2,6 +2,7 @@ package cgeo.geocaching.apps.cache.navi; import java.util.ArrayList; import java.util.Locale; +import java.util.UUID; import android.app.Activity; import android.content.Intent; @@ -22,7 +23,7 @@ class RMapsApp extends AbstractNavigationApp implements NavigationApp { @Override public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache == null && waypoint == null && latitude == null && longitude == null) { return false; diff --git a/src/cgeo/geocaching/apps/cache/navi/RadarApp.java b/src/cgeo/geocaching/apps/cache/navi/RadarApp.java index a4aec8c..7dc7676 100644 --- a/src/cgeo/geocaching/apps/cache/navi/RadarApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/RadarApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.Intent; import android.content.res.Resources; @@ -27,7 +29,7 @@ class RadarApp extends AbstractNavigationApp implements NavigationApp { @Override public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache != null) { if (cache.latitude != null && cache.longitude != null) { navigateTo(activity, cache.latitude, cache.longitude); diff --git a/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java b/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java index b6ae8c1..db6b27b 100644 --- a/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -26,7 +28,7 @@ class StaticMapApp extends AbstractNavigationApp implements @Override public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache == null || cache.reason == 0) { ActivityMixin.showToast(activity, res.getString(R.string.err_detail_no_map_static)); diff --git a/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java b/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java index 24d6606..250bc65 100644 --- a/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java +++ b/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps.cache.navi; +import java.util.UUID; + import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; @@ -25,7 +27,7 @@ class StreetviewApp extends AbstractNavigationApp implements NavigationApp { public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, - Long searchId, cgWaypoint waypoint, Double latitude, Double longitude) { + final UUID searchId, cgWaypoint waypoint, Double latitude, Double longitude) { if (cache == null && waypoint == null && latitude == null && longitude == null) { return false; } diff --git a/src/cgeo/geocaching/apps/cachelist/CacheListApp.java b/src/cgeo/geocaching/apps/cachelist/CacheListApp.java index b58358c..74fba64 100644 --- a/src/cgeo/geocaching/apps/cachelist/CacheListApp.java +++ b/src/cgeo/geocaching/apps/cachelist/CacheListApp.java @@ -1,6 +1,7 @@ package cgeo.geocaching.apps.cachelist; import java.util.List; +import java.util.UUID; import android.app.Activity; import android.content.res.Resources; @@ -12,6 +13,6 @@ interface CacheListApp extends App { boolean invoke(final cgGeo geo, final List<cgCache> caches, final Activity activity, final Resources res, - final Long searchId); + final UUID searchId); } diff --git a/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java b/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java index e26e049..cb69e17 100644 --- a/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java +++ b/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java @@ -2,6 +2,7 @@ package cgeo.geocaching.apps.cachelist; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import org.apache.commons.lang3.ArrayUtils; @@ -62,7 +63,7 @@ public final class CacheListAppFactory extends AbstractAppFactory { public static boolean onMenuItemSelected(final MenuItem item, final cgGeo geo, final List<cgCache> caches, final Activity activity, final Resources res, - final Long searchId) { + final UUID searchId) { CacheListApp app = (CacheListApp) getAppFromMenuItem( item, apps); if (app != null) { diff --git a/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java b/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java index 8576aab..2fd418e 100644 --- a/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java +++ b/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java @@ -1,6 +1,7 @@ package cgeo.geocaching.apps.cachelist; import java.util.List; +import java.util.UUID; import android.app.Activity; import android.content.Context; @@ -23,11 +24,11 @@ class InternalCacheListMap extends AbstractApp implements CacheListApp { } @Override - public boolean invoke(cgGeo geo, List<cgCache> caches, Activity activity, Resources res, Long searchId) { + public boolean invoke(cgGeo geo, List<cgCache> caches, Activity activity, Resources res, final UUID searchId) { Intent mapIntent = new Intent(activity, getSettings(activity).getMapFactory() .getMapClass()); mapIntent.putExtra("detail", false); // this is the main difference to the activity for a single point - mapIntent.putExtra("searchid", searchId); + mapIntent.putExtra("searchid", searchId.toString()); activity.startActivity(mapIntent); return true; diff --git a/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java b/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java index ca65b55..d72c398 100644 --- a/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java +++ b/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java @@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import org.apache.commons.lang3.StringUtils; @@ -25,7 +26,7 @@ class LocusCacheListApp extends AbstractLocusApp implements CacheListApp { } @Override - public boolean invoke(cgGeo geo, List<cgCache> cacheList, Activity activity, Resources res, final Long searchId) { + public boolean invoke(cgGeo geo, List<cgCache> cacheList, Activity activity, Resources res, final UUID searchId) { if (cacheList == null || cacheList.isEmpty()) { return false; } diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java index b7bc18e..1287f79 100644 --- a/src/cgeo/geocaching/cgBase.java +++ b/src/cgeo/geocaching/cgBase.java @@ -32,6 +32,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; @@ -2737,7 +2738,7 @@ public class cgBase { } } - public Long searchByNextPage(cgSearchThread thread, Long searchId, int reason, boolean showCaptcha) { + public UUID searchByNextPage(cgSearchThread thread, final UUID searchId, int reason, boolean showCaptcha) { final String[] viewstates = app.getViewstates(searchId); cgCacheWrap caches = new cgCacheWrap(); String url = app.getUrl(searchId); @@ -2822,7 +2823,7 @@ public class cgBase { return searchId; } - public Long searchByGeocode(Map<String, String> parameters, int reason, boolean forceReload) { + public UUID searchByGeocode(Map<String, String> parameters, int reason, boolean forceReload) { final cgSearch search = new cgSearch(); String geocode = parameters.get("geocode"); String guid = parameters.get("guid"); @@ -2918,7 +2919,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByOffline(Map<String, Object> parameters) { + public UUID searchByOffline(Map<String, Object> parameters) { if (app == null) { Log.e(cgSettings.tag, "cgeoBase.searchByOffline: No application found"); return null; @@ -2948,7 +2949,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByHistory(Map<String, Object> parameters) { + public UUID searchByHistory(Map<String, Object> parameters) { if (app == null) { Log.e(cgSettings.tag, "cgeoBase.searchByHistory: No application found"); return null; @@ -2966,7 +2967,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByCoords(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { + public UUID searchByCoords(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { final cgSearch search = new cgSearch(); final String latitude = parameters.get("latitude"); final String longitude = parameters.get("longitude"); @@ -3024,7 +3025,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByKeyword(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { + public UUID searchByKeyword(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { final cgSearch search = new cgSearch(); final String keyword = parameters.get("keyword"); cgCacheWrap caches = new cgCacheWrap(); @@ -3075,7 +3076,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByUsername(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { + public UUID searchByUsername(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { final cgSearch search = new cgSearch(); final String userName = parameters.get("username"); cgCacheWrap caches = new cgCacheWrap(); @@ -3132,7 +3133,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByOwner(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { + public UUID searchByOwner(cgSearchThread thread, Map<String, String> parameters, int reason, boolean showCaptcha) { final cgSearch search = new cgSearch(); final String userName = parameters.get("username"); cgCacheWrap caches = new cgCacheWrap(); @@ -3183,7 +3184,7 @@ public class cgBase { return search.getCurrentId(); } - public Long searchByViewport(Map<String, String> parameters, int reason) { + public UUID searchByViewport(Map<String, String> parameters, int reason) { final cgSearch search = new cgSearch(); final String latMin = parameters.get("latitude-min"); final String latMax = parameters.get("latitude-max"); @@ -4577,13 +4578,13 @@ public class cgBase { if (cache.reason > 0 || StringUtils.isBlank(cache.description)) { final Map<String, String> params = new HashMap<String, String>(); params.put("geocode", cache.geocode); - final Long searchId = searchByGeocode(params, listId, false); + final UUID searchId = searchByGeocode(params, listId, false); cache = app.getCache(searchId); } } else if (StringUtils.isNotBlank(geocode)) { final Map<String, String> params = new HashMap<String, String>(); params.put("geocode", geocode); - final Long searchId = searchByGeocode(params, listId, false); + final UUID searchId = searchByGeocode(params, listId, false); cache = app.getCache(searchId); } diff --git a/src/cgeo/geocaching/cgSearch.java b/src/cgeo/geocaching/cgSearch.java index 7b75760..76599b2 100644 --- a/src/cgeo/geocaching/cgSearch.java +++ b/src/cgeo/geocaching/cgSearch.java @@ -2,9 +2,10 @@ package cgeo.geocaching; import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class cgSearch { - private long id; + private UUID id; private List<String> geocodes = new ArrayList<String>(); public String error = null; @@ -13,10 +14,10 @@ public class cgSearch { public int totalCnt = 0; public cgSearch() { - id = System.currentTimeMillis(); // possible collisions here - not guaranteed to be unique + id = UUID.randomUUID(); } - public long getCurrentId() { + public UUID getCurrentId() { return id; } diff --git a/src/cgeo/geocaching/cgeoapplication.java b/src/cgeo/geocaching/cgeoapplication.java index 1eb5aa5..f580fa9 100644 --- a/src/cgeo/geocaching/cgeoapplication.java +++ b/src/cgeo/geocaching/cgeoapplication.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; @@ -25,7 +26,7 @@ public class cgeoapplication extends Application { private boolean geoInUse = false; private cgDirection dir = null; private boolean dirInUse = false; - final private Map<Long, cgSearch> searches = new HashMap<Long, cgSearch>(); // information about searches + final private Map<UUID, cgSearch> searches = new HashMap<UUID, cgSearch>(); // information about searches final private Map<String, cgCache> cachesCache = new HashMap<String, cgCache>(); // caching caches into memory public boolean firstRun = true; // c:geo is just launched public boolean warnedLanguage = false; // user was warned about different language settings on geocaching.com @@ -225,7 +226,7 @@ public class cgeoapplication extends Application { return storage.getCacheidForGeocode(geocode); } - public String getError(Long searchId) { + public String getError(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -233,7 +234,7 @@ public class cgeoapplication extends Application { return searches.get(searchId).error; } - public boolean setError(Long searchId, String error) { + public boolean setError(final UUID searchId, String error) { if (searchId == null || searches.containsKey(searchId) == false) { return false; } @@ -243,7 +244,7 @@ public class cgeoapplication extends Application { return true; } - public String getUrl(Long searchId) { + public String getUrl(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -251,7 +252,7 @@ public class cgeoapplication extends Application { return searches.get(searchId).url; } - public boolean setUrl(Long searchId, String url) { + public boolean setUrl(final UUID searchId, String url) { if (searchId == null || searches.containsKey(searchId) == false) { return false; } @@ -261,7 +262,7 @@ public class cgeoapplication extends Application { return true; } - public String[] getViewstates(Long searchId) { + public String[] getViewstates(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -269,7 +270,7 @@ public class cgeoapplication extends Application { return searches.get(searchId).viewstates; } - public boolean setViewstates(Long searchId, String[] viewstates) { + public boolean setViewstates(final UUID searchId, String[] viewstates) { if (ArrayUtils.isEmpty(viewstates)) { return false; } @@ -282,7 +283,7 @@ public class cgeoapplication extends Application { return true; } - public Integer getTotal(Long searchId) { + public Integer getTotal(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -290,7 +291,7 @@ public class cgeoapplication extends Application { return searches.get(searchId).totalCnt; } - public Integer getCount(Long searchId) { + public Integer getCount(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return 0; } @@ -298,7 +299,7 @@ public class cgeoapplication extends Application { return searches.get(searchId).getCount(); } - public Integer getNotOfflineCount(Long searchId) { + public Integer getNotOfflineCount(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return 0; } @@ -401,7 +402,7 @@ public class cgeoapplication extends Application { return getBounds(geocodeList); } - public List<Object> getBounds(Long searchId) { + public List<Object> getBounds(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -428,7 +429,7 @@ public class cgeoapplication extends Application { return storage.getBounds(geocodes.toArray()); } - public cgCache getCache(Long searchId) { + public cgCache getCache(final UUID searchId) { if (searchId == null || searches.containsKey(searchId) == false) { return null; } @@ -439,19 +440,19 @@ public class cgeoapplication extends Application { return getCacheByGeocode(geocodeList.get(0), true, true, true, true, true, true); } - public List<cgCache> getCaches(Long searchId) { + public List<cgCache> getCaches(final UUID searchId) { return getCaches(searchId, null, null, null, null, false, true, false, false, false, true); } - public List<cgCache> getCaches(Long searchId, boolean loadA, boolean loadW, boolean loadS, boolean loadL, boolean loadI, boolean loadO) { + public List<cgCache> getCaches(final UUID searchId, boolean loadA, boolean loadW, boolean loadS, boolean loadL, boolean loadI, boolean loadO) { return getCaches(searchId, null, null, null, null, loadA, loadW, loadS, loadL, loadI, loadO); } - public List<cgCache> getCaches(Long searchId, Long centerLat, Long centerLon, Long spanLat, Long spanLon) { + public List<cgCache> getCaches(final UUID searchId, Long centerLat, Long centerLon, Long spanLat, Long spanLon) { return getCaches(searchId, centerLat, centerLon, spanLat, spanLon, false, true, false, false, false, true); } - public List<cgCache> getCaches(Long searchId, Long centerLat, Long centerLon, Long spanLat, Long spanLon, boolean loadA, boolean loadW, boolean loadS, boolean loadL, boolean loadI, boolean loadO) { + public List<cgCache> getCaches(final UUID searchId, Long centerLat, Long centerLon, Long spanLat, Long spanLon, boolean loadA, boolean loadW, boolean loadS, boolean loadL, boolean loadI, boolean loadO) { if (searchId == null || searches.containsKey(searchId) == false) { List<cgCache> cachesOut = new ArrayList<cgCache>(); @@ -523,7 +524,7 @@ public class cgeoapplication extends Application { return search; } - public Long getCachedInViewport(Long centerLat, Long centerLon, Long spanLat, Long spanLon, String cachetype) { + public UUID getCachedInViewport(Long centerLat, Long centerLon, Long spanLat, Long spanLon, String cachetype) { if (storage == null) { storage = new cgData(this); } @@ -540,7 +541,7 @@ public class cgeoapplication extends Application { return search.getCurrentId(); } - public Long getStoredInViewport(Long centerLat, Long centerLon, Long spanLat, Long spanLon, String cachetype) { + public UUID getStoredInViewport(Long centerLat, Long centerLon, Long spanLat, Long spanLon, String cachetype) { if (storage == null) { storage = new cgData(this); } @@ -557,7 +558,7 @@ public class cgeoapplication extends Application { return search.getCurrentId(); } - public Long getOfflineAll(String cachetype) { + public UUID getOfflineAll(String cachetype) { if (storage == null) { storage = new cgData(this); } @@ -659,7 +660,7 @@ public class cgeoapplication extends Application { return storage.saveInventory("---", list); } - public void addGeocode(Long searchId, String geocode) { + public void addGeocode(final UUID searchId, String geocode) { if (this.searches.containsKey(searchId) == false || StringUtils.isBlank(geocode)) { return; } @@ -667,7 +668,7 @@ public class cgeoapplication extends Application { this.searches.get(searchId).addGeocode(geocode); } - public Long addSearch(Long searchId, List<cgCache> cacheList, Boolean newItem, int reason) { + public UUID addSearch(final UUID searchId, List<cgCache> cacheList, Boolean newItem, int reason) { if (this.searches.containsKey(searchId) == false) { return null; } @@ -677,12 +678,12 @@ public class cgeoapplication extends Application { return addSearch(search, cacheList, newItem, reason); } - public Long addSearch(final cgSearch search, final List<cgCache> cacheList, final boolean newItem, final int reason) { + public UUID addSearch(final cgSearch search, final List<cgCache> cacheList, final boolean newItem, final int reason) { if (CollectionUtils.isEmpty(cacheList)) { return null; } - final long searchId = search.getCurrentId(); + final UUID searchId = search.getCurrentId(); searches.put(searchId, search); if (storage == null) { @@ -714,7 +715,7 @@ public class cgeoapplication extends Application { return false; } - final long searchId = search.getCurrentId(); + final UUID searchId = search.getCurrentId(); if (searches.containsKey(searchId) == false) { searches.put(searchId, search); diff --git a/src/cgeo/geocaching/cgeocaches.java b/src/cgeo/geocaching/cgeocaches.java index 0a04b55..d8380bf 100644 --- a/src/cgeo/geocaching/cgeocaches.java +++ b/src/cgeo/geocaching/cgeocaches.java @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.UUID; import org.apache.commons.lang3.StringUtils; @@ -144,7 +145,7 @@ public class cgeocaches extends AbstractListActivity { private String keyword = null; private String address = null; private String username = null; - private Long searchId = null; + private UUID searchId = null; private List<cgCache> cacheList = new ArrayList<cgCache>(); private cgCacheListAdapter adapter = null; private LayoutInflater inflater = null; @@ -174,7 +175,7 @@ public class cgeocaches extends AbstractListActivity { @Override public void handleMessage(Message msg) { try { - if (searchId != null && searchId > 0) { + if (searchId != null) { setTitle(title + " [" + app.getCount(searchId) + "]"); cacheList.clear(); @@ -272,7 +273,7 @@ public class cgeocaches extends AbstractListActivity { @Override public void handleMessage(Message msg) { try { - if (searchId != null && searchId > 0) { + if (searchId != null) { setTitle(title + " [" + app.getCount(searchId) + "]"); cacheList.clear(); @@ -1274,7 +1275,7 @@ public class cgeocaches extends AbstractListActivity { // create a searchId for a single cache (as if in details view) Map<String, String> params = new HashMap<String, String>(); params.put("geocode", cache.geocode); - Long singleSearchId = base.searchByGeocode(params, 0, false); + final UUID singleSearchId = base.searchByGeocode(params, 0, false); if (NavigationAppFactory.onMenuItemSelected(item, geo, this, res, cache, singleSearchId, null, null)) { @@ -2526,7 +2527,7 @@ public class cgeocaches extends AbstractListActivity { } public void goMap(View view) { - if (searchId == null || searchId == 0 || CollectionUtils.isEmpty(cacheList)) { + if (searchId == null || CollectionUtils.isEmpty(cacheList)) { showToast(res.getString(R.string.warn_no_cache_coord)); return; @@ -2534,7 +2535,7 @@ public class cgeocaches extends AbstractListActivity { Intent mapIntent = new Intent(this, settings.getMapFactory().getMapClass()); mapIntent.putExtra("detail", false); - mapIntent.putExtra("searchid", searchId); + mapIntent.putExtra("searchid", searchId.toString()); startActivity(mapIntent); } diff --git a/src/cgeo/geocaching/cgeodetail.java b/src/cgeo/geocaching/cgeodetail.java index e1d3ff2..182778d 100644 --- a/src/cgeo/geocaching/cgeodetail.java +++ b/src/cgeo/geocaching/cgeodetail.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.UUID; import org.apache.commons.lang3.StringUtils; @@ -70,7 +71,7 @@ public class cgeodetail extends AbstractActivity { super("c:geo-cache-details"); } - public Long searchId = null; + public UUID searchId = null; public cgCache cache = null; public String geocode = null; public String name = null; @@ -163,7 +164,7 @@ public class cgeodetail extends AbstractActivity { private Handler loadCacheHandler = new Handler() { @Override public void handleMessage(Message msg) { - if (searchId == null || searchId <= 0) { + if (searchId == null) { showToast(res.getString(R.string.err_dwld_details_failed)); finish(); @@ -573,7 +574,7 @@ public class cgeodetail extends AbstractActivity { geo = app.startGeo(this, geoUpdate, base, settings, 0, 0); } - if (searchId != null && searchId > 0) { + if (searchId != null) { cache = app.getCache(searchId); if (cache != null && cache.geocode != null) { geocode = cache.geocode; diff --git a/src/cgeo/geocaching/cgeogpxes.java b/src/cgeo/geocaching/cgeogpxes.java index 76c4c9e..92d0d48 100644 --- a/src/cgeo/geocaching/cgeogpxes.java +++ b/src/cgeo/geocaching/cgeogpxes.java @@ -2,6 +2,7 @@ package cgeo.geocaching; import java.io.File; import java.util.List; +import java.util.UUID; import android.app.Activity; import android.app.ProgressDialog; @@ -108,7 +109,7 @@ public class cgeogpxes extends FileList<cgGPXListAdapter> { @Override public void run() { - final long searchId; + final UUID searchId; String name = file.getName().toLowerCase(); if (name.endsWith("gpx")) { searchId = GPXParser.parseGPX(app, file, listId, changeParseDialogHandler); diff --git a/src/cgeo/geocaching/files/GPXParser.java b/src/cgeo/geocaching/files/GPXParser.java index 707bd1a..0719621 100644 --- a/src/cgeo/geocaching/files/GPXParser.java +++ b/src/cgeo/geocaching/files/GPXParser.java @@ -9,6 +9,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -197,7 +198,7 @@ public abstract class GPXParser extends FileParser { return formatSimple.parse(input); } - public long parse(final InputStream stream, Handler handlerIn) { + public UUID parse(final InputStream stream, Handler handlerIn) { handler = handlerIn; final RootElement root = new RootElement(namespace, "gpx"); @@ -657,16 +658,16 @@ public abstract class GPXParser extends FileParser { } catch (SAXException e) { Log.e(cgSettings.tag, "Cannot parse .gpx file as GPX " + version + ": could not parse XML - " + e.toString()); } - return parsed ? search.getCurrentId() : 0L; + return parsed ? search.getCurrentId() : null; } - private long parse(final File file, final Handler handlerIn) { + private UUID parse(final File file, final Handler handlerIn) { if (file == null) { - return 0L; + return null; } FileInputStream fis = null; - long result = 0L; + UUID result = null; try { fis = new FileInputStream(file); result = parse(fis, handlerIn); @@ -719,14 +720,14 @@ public abstract class GPXParser extends FileParser { } } - public static Long parseGPX(cgeoapplication app, File file, int listId, Handler handler) { + public static UUID parseGPX(cgeoapplication app, File file, int listId, Handler handler) { final cgSearch search = new cgSearch(); - long searchId = 0L; + UUID searchId = null; try { GPXParser parser = new GPX10Parser(app, listId, search); searchId = parser.parse(file, handler); - if (searchId == 0L) { + if (searchId == null) { parser = new GPX11Parser(app, listId, search); searchId = parser.parse(file, handler); } diff --git a/src/cgeo/geocaching/files/LocParser.java b/src/cgeo/geocaching/files/LocParser.java index f1c83bd..9f7f525 100644 --- a/src/cgeo/geocaching/files/LocParser.java +++ b/src/cgeo/geocaching/files/LocParser.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -144,10 +145,10 @@ public final class LocParser extends FileParser { return coords;
}
- public static long parseLoc(cgeoapplication app, File file, int listId,
+ public static UUID parseLoc(cgeoapplication app, File file, int listId,
Handler handler) {
cgSearch search = new cgSearch();
- long searchId = 0L;
+ UUID searchId = null;
try {
Map<String, cgCoord> coords = parseCoordinates(readFile(file).toString());
diff --git a/src/cgeo/geocaching/mapcommon/cgeomap.java b/src/cgeo/geocaching/mapcommon/cgeomap.java index d0a8b2e..c9fb60b 100644 --- a/src/cgeo/geocaching/mapcommon/cgeomap.java +++ b/src/cgeo/geocaching/mapcommon/cgeomap.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.UUID; import android.app.Activity; import android.app.ProgressDialog; @@ -31,13 +32,13 @@ import cgeo.geocaching.cgCoord; import cgeo.geocaching.cgDirection; import cgeo.geocaching.cgGeo; import cgeo.geocaching.cgSettings; +import cgeo.geocaching.cgSettings.mapSourceEnum; import cgeo.geocaching.cgUpdateDir; import cgeo.geocaching.cgUpdateLoc; import cgeo.geocaching.cgUser; import cgeo.geocaching.cgWaypoint; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.cgSettings.mapSourceEnum; import cgeo.geocaching.mapinterfaces.ActivityImpl; import cgeo.geocaching.mapinterfaces.CacheOverlayItemImpl; import cgeo.geocaching.mapinterfaces.GeoPointImpl; @@ -76,14 +77,14 @@ public class cgeomap extends MapBase implements OnDragListener { private cgUpdateDir dirUpdate = new UpdateDir(); // from intent private boolean fromDetailIntent = false; - private Long searchIdIntent = null; + private String searchIdIntent = null; private String geocodeIntent = null; private Double latitudeIntent = null; private Double longitudeIntent = null; private String waypointTypeIntent = null; private int[] mapStateIntent = null; // status data - private Long searchId = null; + private UUID searchId = null; private String token = null; private boolean noMapTokenShowed = false; // map status data @@ -305,14 +306,14 @@ public class cgeomap extends MapBase implements OnDragListener { Bundle extras = activity.getIntent().getExtras(); if (extras != null) { fromDetailIntent = extras.getBoolean("detail"); - searchIdIntent = extras.getLong("searchid"); + searchIdIntent = extras.getString("searchid"); geocodeIntent = extras.getString("geocode"); latitudeIntent = extras.getDouble("latitude"); longitudeIntent = extras.getDouble("longitude"); waypointTypeIntent = extras.getString("wpttype"); mapStateIntent = extras.getIntArray("mapstate"); - if (searchIdIntent == 0L) { + if ("".equals(searchIdIntent)) { searchIdIntent = null; } if (latitudeIntent == 0.0) { @@ -1064,7 +1065,7 @@ public class cgeomap extends MapBase implements OnDragListener { // stage 1 - pull and render from the DB only if (fromDetailIntent) { - searchId = searchIdIntent; + searchId = UUID.fromString(searchIdIntent); } else { if (!live || settings.maplive == 0) { searchId = app.getStoredInViewport(centerLat, centerLon, spanLat, spanLon, settings.cacheType); @@ -1637,7 +1638,7 @@ public class cgeomap extends MapBase implements OnDragListener { } // move map to view results of searchIdIntent - private void centerMap(String geocodeCenter, Long searchIdCenter, Double latitudeCenter, Double longitudeCenter, int[] mapState) { + private void centerMap(String geocodeCenter, String searchIdCenter, Double latitudeCenter, Double longitudeCenter, int[] mapState) { if (!centered && mapState != null) { try { diff --git a/tests/src/cgeo/geocaching/test/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/test/cgeoApplicationTest.java index 7eabb13..89ea446 100644 --- a/tests/src/cgeo/geocaching/test/cgeoApplicationTest.java +++ b/tests/src/cgeo/geocaching/test/cgeoApplicationTest.java @@ -3,6 +3,7 @@ package cgeo.geocaching.test; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.UUID;
import junit.framework.Assert;
import android.content.Context;
@@ -66,7 +67,7 @@ public class cgeoApplicationTest extends ApplicationTestCase<cgeoapplication> { HashMap<String, String> params = new HashMap<String, String>();
params.put("geocode", "GC1RMM2");
- Long id = base.searchByGeocode(params, 0, true);
+ final UUID id = base.searchByGeocode(params, 0, true);
Assert.assertNotNull(id);
}
|
