aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgBase.java
diff options
context:
space:
mode:
authorGerald Barker <geraldbarker@gmail.com>2011-09-03 21:55:21 +0100
committerGerald Barker <geraldbarker@gmail.com>2011-09-03 21:55:21 +0100
commit10b3f8f05d318aac6d83d4af77f6479ff01bfe1f (patch)
treed3a0b9505963505e42b1fe89885839e56cfdf720 /src/cgeo/geocaching/cgBase.java
parent5878215750b36147e31d4e44d39f5cee5a686a24 (diff)
downloadcgeo-10b3f8f05d318aac6d83d4af77f6479ff01bfe1f.zip
cgeo-10b3f8f05d318aac6d83d4af77f6479ff01bfe1f.tar.gz
cgeo-10b3f8f05d318aac6d83d4af77f6479ff01bfe1f.tar.bz2
Refactor to address issue #361
Diffstat (limited to 'src/cgeo/geocaching/cgBase.java')
-rw-r--r--src/cgeo/geocaching/cgBase.java307
1 files changed, 115 insertions, 192 deletions
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java
index f2eeae8..9417f5a 100644
--- a/src/cgeo/geocaching/cgBase.java
+++ b/src/cgeo/geocaching/cgBase.java
@@ -27,6 +27,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
@@ -125,18 +126,18 @@ public class cgBase {
private final static Pattern PATTERN_TRACKABLE_Distance = Pattern.compile("<h4[^>]*\\W*Tracking History \\(([0-9\\.,]+(km|mi))[^\\)]*\\)", Pattern.CASE_INSENSITIVE);
private final static Pattern PATTERN_TRACKABLE_Log = Pattern.compile("<tr class=\"Data.+?src=\"/images/icons/([^\\.]+)\\.gif[^>]+>&nbsp;([^<]+)</td>.+?guid.+?>([^<]+)</a>.+?(?:guid=([^\"]+)\">([^<]+)</a>.+?)?<td colspan=\"4\">(.+?)(?:<ul.+?ul>)?\\s*</td>\\s*</tr>", Pattern.CASE_INSENSITIVE);
- public static HashMap<String, String> cacheTypes = new HashMap<String, String>();
- public static HashMap<String, String> cacheTypesInv = new HashMap<String, String>();
- public static HashMap<String, String> cacheIDs = new HashMap<String, String>();
- public static HashMap<String, String> cacheIDsChoices = new HashMap<String, String>();
- public static HashMap<String, String> waypointTypes = new HashMap<String, String>();
- public static HashMap<String, Integer> logTypes = new HashMap<String, Integer>();
- public static HashMap<String, Integer> logTypes0 = new HashMap<String, Integer>();
- public static HashMap<Integer, String> logTypes1 = new HashMap<Integer, String>();
- public static HashMap<Integer, String> logTypes2 = new HashMap<Integer, String>();
- public static HashMap<Integer, String> logTypesTrackable = new HashMap<Integer, String>();
- public static HashMap<Integer, String> logTypesTrackableAction = new HashMap<Integer, String>();
- public static HashMap<Integer, String> errorRetrieve = new HashMap<Integer, String>();
+ public static Map<String, String> cacheTypes = new HashMap<String, String>();
+ public static Map<String, String> cacheTypesInv = new HashMap<String, String>();
+ public static Map<String, String> cacheIDs = new HashMap<String, String>();
+ public static Map<String, String> cacheIDsChoices = new HashMap<String, String>();
+ public static Map<String, String> waypointTypes = new HashMap<String, String>();
+ public static Map<String, Integer> logTypes = new HashMap<String, Integer>();
+ public static Map<String, Integer> logTypes0 = new HashMap<String, Integer>();
+ public static Map<Integer, String> logTypes1 = new HashMap<Integer, String>();
+ public static Map<Integer, String> logTypes2 = new HashMap<Integer, String>();
+ public static Map<Integer, String> logTypesTrackable = new HashMap<Integer, String>();
+ public static Map<Integer, String> logTypesTrackableAction = new HashMap<Integer, String>();
+ public static Map<Integer, String> errorRetrieve = new HashMap<Integer, String>();
public static final Map<String, SimpleDateFormat> gcCustomDateFormats;
static {
final String[] formats = new String[] {
@@ -149,7 +150,7 @@ public class cgBase {
"dd/MM/yyyy"
};
- HashMap<String, SimpleDateFormat> map = new HashMap<String, SimpleDateFormat>();
+ Map<String, SimpleDateFormat> map = new HashMap<String, SimpleDateFormat>();
for (String format : formats)
{
@@ -162,7 +163,7 @@ public class cgBase {
public final static SimpleDateFormat dateTbIn2 = new SimpleDateFormat("EEEEE, MMMMM dd, yyyy", Locale.ENGLISH); // Saturday, March 28, 2009
public final static SimpleDateFormat dateSqlIn = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 2010-07-25 14:44:01
private Resources res = null;
- private HashMap<String, String> cookies = new HashMap<String, String>();
+ private Map<String, String> cookies = new HashMap<String, String>();
private static final String passMatch = "[/\\?&]*[Pp]ass(word)?=[^&^#^$]+";
private static final Pattern patternLoggedIn = Pattern.compile("<span class=\"Success\">You are logged in as[^<]*<strong[^>]*>([^<]+)</strong>[^<]*</span>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static final Pattern patternLogged2In = Pattern.compile("<strong>\\W*Hello,[^<]*<a[^>]+>([^<]+)</a>[^<]*</strong>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
@@ -179,8 +180,8 @@ public class cgBase {
public String version = null;
private String idBrowser = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4";
Context context = null;
- final private static HashMap<String, Integer> gcIcons = new HashMap<String, Integer>();
- final private static HashMap<String, Integer> wpIcons = new HashMap<String, Integer>();
+ final private static Map<String, Integer> gcIcons = new HashMap<String, Integer>();
+ final private static Map<String, Integer> wpIcons = new HashMap<String, Integer>();
public static final int LOG_FOUND_IT = 2;
public static final int LOG_DIDNT_FIND_IT = 3;
@@ -463,7 +464,7 @@ public class cgBase {
/**
* put viewstates into request parameters
*/
- private static void setViewstates(String[] viewstates, HashMap<String, String> params) {
+ private static void setViewstates(String[] viewstates, Map<String, String> params) {
if (ArrayUtils.isEmpty(viewstates))
return;
params.put("__VIEWSTATE", viewstates[0]);
@@ -478,7 +479,7 @@ public class cgBase {
* transfers the viewstates variables from a page (response) to parameters
* (next request)
*/
- public static void transferViewstates(String page, HashMap<String, String> params) {
+ public static void transferViewstates(String page, Map<String, String> params) {
setViewstates(getViewstates(page), params);
}
@@ -499,7 +500,7 @@ public class cgBase {
String[] viewstates = null;
- final HashMap<String, String> loginStart = settings.getLogin();
+ final Map<String, String> loginStart = settings.getLogin();
if (loginStart == null) {
return -3; // no login information stored
@@ -527,8 +528,8 @@ public class cgBase {
return -2; // no loginpage
}
- final HashMap<String, String> login = settings.getLogin();
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> login = settings.getLogin();
+ final Map<String, String> params = new HashMap<String, String>();
if (login == null || StringUtils.isEmpty(login.get("username")) || StringUtils.isEmpty(login.get("password"))) {
Log.e(cgSettings.tag, "cgeoBase.login: No login information stored");
@@ -606,7 +607,7 @@ public class cgBase {
public String switchToEnglish(String[] viewstates) {
final String host = "www.geocaching.com";
final String path = "/default.aspx";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
params.put("__EVENTTARGET", "ctl00$uxLocaleList$uxLocaleList$ctl00$uxLocaleItem"); // switch to english
@@ -622,8 +623,8 @@ public class cgBase {
}
final cgCacheWrap caches = new cgCacheWrap();
- final ArrayList<String> cids = new ArrayList<String>();
- final ArrayList<String> guids = new ArrayList<String>();
+ final List<String> cids = new ArrayList<String>();
+ final List<String> guids = new ArrayList<String>();
String recaptchaChallenge = null;
String recaptchaText = null;
@@ -977,7 +978,7 @@ public class cgBase {
Log.i(cgSettings.tag, "Trying to get ratings for " + cids.size() + " caches");
try {
- final HashMap<String, cgRating> ratings = getRating(guids, null);
+ final Map<String, cgRating> ratings = getRating(guids, null);
if (CollectionUtils.isNotEmpty(ratings)) {
// save found cache coordinates
@@ -1329,7 +1330,7 @@ public class cgBase {
if (matcherLatLon.find() && matcherLatLon.groupCount() > 0) {
cache.latlon = getMatch(matcherLatLon.group(2)); // first is <b>
- HashMap<String, Object> tmp = cgBase.parseLatlon(cache.latlon);
+ Map<String, Object> tmp = cgBase.parseLatlon(cache.latlon);
if (tmp.size() > 0) {
cache.latitude = (Double) tmp.get("latitude");
cache.longitude = (Double) tmp.get("longitude");
@@ -1721,7 +1722,7 @@ public class cgBase {
if (matcherWpLatLon.find() && matcherWpLatLon.groupCount() > 1) {
waypoint.latlon = Html.fromHtml(matcherWpLatLon.group(2)).toString();
- final HashMap<String, Object> tmp = cgBase.parseLatlon(waypoint.latlon);
+ final Map<String, Object> tmp = cgBase.parseLatlon(waypoint.latlon);
if (tmp.size() > 0) {
waypoint.latitude = (Double) tmp.get("latitude");
waypoint.longitude = (Double) tmp.get("longitude");
@@ -1882,8 +1883,8 @@ public class cgBase {
}
public cgRating getRating(String guid, String geocode) {
- ArrayList<String> guids = null;
- ArrayList<String> geocodes = null;
+ List<String> guids = null;
+ List<String> geocodes = null;
if (StringUtils.isNotBlank(guid)) {
guids = new ArrayList<String>();
@@ -1895,7 +1896,7 @@ public class cgBase {
return null;
}
- final HashMap<String, cgRating> ratings = getRating(guids, geocodes);
+ final Map<String, cgRating> ratings = getRating(guids, geocodes);
if(ratings != null){
for (Entry<String, cgRating> entry : ratings.entrySet()) {
return entry.getValue();
@@ -1905,17 +1906,17 @@ public class cgBase {
return null;
}
- public HashMap<String, cgRating> getRating(ArrayList<String> guids, ArrayList<String> geocodes) {
+ public Map<String, cgRating> getRating(List<String> guids, List<String> geocodes) {
if (guids == null && geocodes == null) {
return null;
}
- final HashMap<String, cgRating> ratings = new HashMap<String, cgRating>();
+ final Map<String, cgRating> ratings = new HashMap<String, cgRating>();
try {
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (settings.isLogin()) {
- final HashMap<String, String> login = settings.getGCvoteLogin();
+ final Map<String, String> login = settings.getGCvoteLogin();
if (login != null) {
params.put("userName", login.get("username"));
params.put("password", login.get("password"));
@@ -2261,12 +2262,12 @@ public class cgBase {
return trackable;
}
- public static ArrayList<Integer> parseTypes(String page) {
+ public static List<Integer> parseTypes(String page) {
if (StringUtils.isEmpty(page)) {
return null;
}
- final ArrayList<Integer> types = new ArrayList<Integer>();
+ final List<Integer> types = new ArrayList<Integer>();
final Pattern typeBoxPattern = Pattern.compile("<select name=\"ctl00\\$ContentBody\\$LogBookPanel1\\$ddLogType\" id=\"ctl00_ContentBody_LogBookPanel1_ddLogType\"[^>]*>"
+ "(([^<]*<option[^>]*>[^<]+</option>)+)[^<]*</select>", Pattern.CASE_INSENSITIVE);
@@ -2295,12 +2296,12 @@ public class cgBase {
return types;
}
- public static ArrayList<cgTrackableLog> parseTrackableLog(String page) {
+ public static List<cgTrackableLog> parseTrackableLog(String page) {
if (StringUtils.isEmpty(page)) {
return null;
}
- final ArrayList<cgTrackableLog> trackables = new ArrayList<cgTrackableLog>();
+ final List<cgTrackableLog> trackables = new ArrayList<cgTrackableLog>();
int startPos = -1;
int endPos = -1;
@@ -2487,7 +2488,7 @@ public class cgBase {
return result;
}
- public static HashMap<String, Double> getRadialDistance(Double latitude, Double longitude, Double bearing, Double distance) {
+ public static Map<String, Double> getRadialDistance(Double latitude, Double longitude, Double bearing, Double distance) {
final Double rlat1 = latitude * deg2rad;
final Double rlon1 = longitude * deg2rad;
final Double rbearing = bearing * deg2rad;
@@ -2496,7 +2497,7 @@ public class cgBase {
final Double rlat = Math.asin(Math.sin(rlat1) * Math.cos(rdistance) + Math.cos(rlat1) * Math.sin(rdistance) * Math.cos(rbearing));
final Double rlon = rlon1 + Math.atan2(Math.sin(rbearing) * Math.sin(rdistance) * Math.cos(rlat1), Math.cos(rdistance) - Math.sin(rlat1) * Math.sin(rlat));
- HashMap<String, Double> result = new HashMap<String, Double>();
+ Map<String, Double> result = new HashMap<String, Double>();
result.put("latitude", rlat * rad2deg);
result.put("longitude", rlon * rad2deg);
@@ -2564,8 +2565,8 @@ public class cgBase {
}
}
- public static HashMap<String, Object> parseLatlon(String latlon) {
- final HashMap<String, Object> result = new HashMap<String, Object>();
+ public static Map<String, Object> parseLatlon(String latlon) {
+ final Map<String, Object> result = new HashMap<String, Object>();
final Pattern patternLatlon = Pattern.compile("([NS])[^\\d]*(\\d+)[^°]*° (\\d+)\\.(\\d+) ([WE])[^\\d]*(\\d+)[^°]*° (\\d+)\\.(\\d+)", Pattern.CASE_INSENSITIVE);
final Matcher matcherLatlon = patternLatlon.matcher(latlon);
@@ -2625,8 +2626,8 @@ public class cgBase {
return formatLatitude(latitude, degrees) + " | " + formatLongitude(longitude, degrees);
}
- public static HashMap<String, Object> parseCoordinate(String coord, String latlon) {
- final HashMap<String, Object> coords = new HashMap<String, Object>();
+ public static Map<String, Object> parseCoordinate(String coord, String latlon) {
+ final Map<String, Object> coords = new HashMap<String, Object>();
final Pattern patternA = Pattern.compile("^([NSWE])[^\\d]*(\\d+)°? +(\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE);
final Pattern patternB = Pattern.compile("^([NSWE])[^\\d]*(\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE);
@@ -2776,7 +2777,7 @@ public class cgBase {
path = url;
}
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
params.put("__EVENTTARGET", "ctl00$ContentBody$pgrBottom$ctl08");
params.put("__EVENTARGUMENT", "");
@@ -2810,7 +2811,7 @@ public class cgBase {
app.setError(searchId, caches.error);
app.setViewstates(searchId, caches.viewstates);
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
+ final List<cgCache> cacheList = new ArrayList<cgCache>();
for (cgCache cache : caches.cacheList) {
app.addGeocode(searchId, cache.geocode);
cacheList.add(cache);
@@ -2821,7 +2822,7 @@ public class cgBase {
return searchId;
}
- public Long searchByGeocode(HashMap<String, String> parameters, int reason, boolean forceReload) {
+ public Long searchByGeocode(Map<String, String> parameters, int reason, boolean forceReload) {
final cgSearch search = new cgSearch();
String geocode = parameters.get("geocode");
String guid = parameters.get("guid");
@@ -2836,7 +2837,7 @@ public class cgBase {
geocode = app.getGeocode(guid);
}
- ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
+ List<cgCache> cacheList = new ArrayList<cgCache>();
cacheList.add(app.getCacheByGeocode(geocode, true, true, true, true, true, true));
search.addGeocode(geocode);
@@ -2851,7 +2852,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/cache_details.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (StringUtils.isNotBlank(geocode)) {
params.put("wp", geocode);
} else if (StringUtils.isNotBlank(guid)) {
@@ -2871,7 +2872,7 @@ public class cgBase {
geocode = app.getGeocode(guid);
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
+ final List<cgCache> cacheList = new ArrayList<cgCache>();
cacheList.add(app.getCacheByGeocode(geocode));
search.addGeocode(geocode);
search.error = null;
@@ -2908,22 +2909,7 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- for (cgCache cache : caches.cacheList) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, 0, 0, null);
app.addSearch(search, cacheList, true, reason);
@@ -2933,7 +2919,7 @@ public class cgBase {
return search.getCurrentId();
}
- public Long searchByOffline(HashMap<String, Object> parameters) {
+ public Long searchByOffline(Map<String, Object> parameters) {
if (app == null) {
Log.e(cgSettings.tag, "cgeoBase.searchByOffline: No application found");
return null;
@@ -2963,7 +2949,7 @@ public class cgBase {
return search.getCurrentId();
}
- public Long searchByHistory(HashMap<String, Object> parameters) {
+ public Long searchByHistory(Map<String, Object> parameters) {
if (app == null) {
Log.e(cgSettings.tag, "cgeoBase.searchByHistory: No application found");
return null;
@@ -2981,7 +2967,7 @@ public class cgBase {
return search.getCurrentId();
}
- public Long searchByCoords(cgSearchThread thread, HashMap<String, String> parameters, int reason, boolean showCaptcha) {
+ public Long 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");
@@ -3005,7 +2991,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/nearest.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (cacheType != null && cacheIDs.containsKey(cacheType)) {
params.put("tx", cacheIDs.get(cacheType));
} else {
@@ -3032,31 +3018,14 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- for (cgCache cache : caches.cacheList) {
- if (settings.excludeDisabled == 0 || (settings.excludeDisabled == 1 && cache.disabled == false)) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, settings.excludeDisabled, 0, null);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
}
- public Long searchByKeyword(cgSearchThread thread, HashMap<String, String> parameters, int reason, boolean showCaptcha) {
+ public Long 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();
@@ -3074,7 +3043,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/nearest.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (cacheType != null && cacheIDs.containsKey(cacheType)) {
params.put("tx", cacheIDs.get(cacheType));
} else {
@@ -3100,31 +3069,14 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- for (cgCache cache : caches.cacheList) {
- if (settings.excludeDisabled == 0 || (settings.excludeDisabled == 1 && cache.disabled == false)) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, settings.excludeDisabled, 0, null);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
}
- public Long searchByUsername(cgSearchThread thread, HashMap<String, String> parameters, int reason, boolean showCaptcha) {
+ public Long 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();
@@ -3142,7 +3094,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/nearest.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (cacheType != null && cacheIDs.containsKey(cacheType)) {
params.put("tx", cacheIDs.get(cacheType));
} else {
@@ -3174,31 +3126,14 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- for (cgCache cache : caches.cacheList) {
- if (settings.excludeDisabled == 0 || (settings.excludeDisabled == 1 && cache.disabled == false)) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, settings.excludeDisabled, 0, null);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
}
- public Long searchByOwner(cgSearchThread thread, HashMap<String, String> parameters, int reason, boolean showCaptcha) {
+ public Long 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();
@@ -3216,7 +3151,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/nearest.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (cacheType != null && cacheIDs.containsKey(cacheType)) {
params.put("tx", cacheIDs.get(cacheType));
} else {
@@ -3242,31 +3177,14 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- for (cgCache cache : caches.cacheList) {
- if (settings.excludeDisabled == 0 || (settings.excludeDisabled == 1 && cache.disabled == false)) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, settings.excludeDisabled, 0, null);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
}
- public Long searchByViewport(HashMap<String, String> parameters, int reason) {
+ public Long 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");
@@ -3311,37 +3229,15 @@ public class cgBase {
return null;
}
- final ArrayList<cgCache> cacheList = new ArrayList<cgCache>();
- if (caches != null) {
- if (StringUtils.isNotBlank(caches.error)) {
- search.error = caches.error;
- }
- if (StringUtils.isNotBlank(caches.url)) {
- search.url = caches.url;
- }
- search.viewstates = caches.viewstates;
- search.totalCnt = caches.totalCnt;
-
- if (CollectionUtils.isNotEmpty(caches.cacheList)) {
- for (cgCache cache : caches.cacheList) {
- if ((settings.excludeDisabled == 0 || (settings.excludeDisabled == 1 && cache.disabled == false))
- && (settings.excludeMine == 0 || (settings.excludeMine == 1 && cache.own == false))
- && (settings.excludeMine == 0 || (settings.excludeMine == 1 && cache.found == false))
- && (settings.cacheType == null || (settings.cacheType.equals(cache.type)))) {
- search.addGeocode(cache.geocode);
- cacheList.add(cache);
- }
- }
- }
- }
+ List<cgCache> cacheList = processSearchResults(search, caches, settings.excludeDisabled, settings.excludeMine, settings.cacheType);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
}
- public ArrayList<cgUser> getGeocachersInViewport(String username, Double latMin, Double latMax, Double lonMin, Double lonMax) {
- final ArrayList<cgUser> users = new ArrayList<cgUser>();
+ public List<cgUser> getGeocachersInViewport(String username, Double latMin, Double latMax, Double lonMin, Double lonMax) {
+ final List<cgUser> users = new ArrayList<cgUser>();
if (username == null) {
return users;
@@ -3353,7 +3249,7 @@ public class cgBase {
final String host = "api.go4cache.com";
final String path = "/get.php";
final String method = "POST";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
params.put("u", username);
params.put("ltm", String.format((Locale) null, "%.6f", latMin));
@@ -3404,7 +3300,34 @@ public class cgBase {
return users;
}
- public cgTrackable searchTrackable(HashMap<String, String> parameters) {
+ public List<cgCache> processSearchResults(cgSearch search, cgCacheWrap caches, int excludeDisabled, int excludeMine, String cacheType) {
+ List<cgCache> cacheList = new ArrayList<cgCache>();
+ if (caches != null) {
+ if (StringUtils.isNotBlank(caches.error)) {
+ search.error = caches.error;
+ }
+ if (StringUtils.isNotBlank(caches.url)) {
+ search.url = caches.url;
+ }
+ search.viewstates = caches.viewstates;
+ search.totalCnt = caches.totalCnt;
+
+ if (CollectionUtils.isNotEmpty(caches.cacheList)) {
+ for (cgCache cache : caches.cacheList) {
+ if ((excludeDisabled == 0 || (excludeDisabled == 1 && cache.disabled == false))
+ && (excludeMine == 0 || (excludeMine == 1 && cache.own == false))
+ && (excludeMine == 0 || (excludeMine == 1 && cache.found == false))
+ && (cacheType == null || (cacheType.equals(cache.type)))) {
+ search.addGeocode(cache.geocode);
+ cacheList.add(cache);
+ }
+ }
+ }
+ }
+ return cacheList;
+ }
+
+ public cgTrackable searchTrackable(Map<String, String> parameters) {
final String geocode = parameters.get("geocode");
final String guid = parameters.get("guid");
final String id = parameters.get("id");
@@ -3418,7 +3341,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/track/details.aspx";
final String method = "GET";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
if (StringUtils.isNotBlank(geocode)) {
params.put("tracker", geocode);
} else if (StringUtils.isNotBlank(guid)) {
@@ -3444,7 +3367,7 @@ public class cgBase {
}
public int postLog(cgeoapplication app, String geocode, String cacheid, String[] viewstates,
- int logType, int year, int month, int day, String log, ArrayList<cgTrackableLog> trackables) {
+ int logType, int year, int month, int day, String log, List<cgTrackableLog> trackables) {
if (ArrayUtils.isEmpty(viewstates)) {
Log.e(cgSettings.tag, "cgeoBase.postLog: No viewstate given");
return 1000;
@@ -3488,7 +3411,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/seek/log.aspx?ID=" + cacheid;
final String method = "POST";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
params.put("__EVENTTARGET", "");
@@ -3630,7 +3553,7 @@ public class cgBase {
final String host = "www.geocaching.com";
final String path = "/track/log.aspx?wid=" + tbid;
final String method = "POST";
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
setViewstates(viewstates, params);
params.put("__EVENTTARGET", "");
@@ -3725,7 +3648,7 @@ public class cgBase {
}
// removing cache from list needs approval by hitting "Yes" button
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
transferViewstates(page, params);
params.put("__EVENTTARGET", "");
params.put("__EVENTARGUMENT", "");
@@ -3805,7 +3728,7 @@ public class cgBase {
}
try {
- HashMap<String, String> parameters = new HashMap<String, String>();
+ Map<String, String> parameters = new HashMap<String, String>();
parameters.put("status", status);
if (latitude != null && longitude != null) {
@@ -3936,7 +3859,7 @@ public class cgBase {
return encoded;
}
- public String prepareParameters(HashMap<String, String> params, boolean my, boolean addF) {
+ public String prepareParameters(Map<String, String> params, boolean my, boolean addF) {
String paramsDone = null;
if (my != true && settings.excludeMine > 0) {
@@ -3952,7 +3875,7 @@ public class cgBase {
if (params != null) {
Set<Map.Entry<String, String>> entrySet = params.entrySet();
- ArrayList<String> paramsEncoded = new ArrayList<String>();
+ List<String> paramsEncoded = new ArrayList<String>();
for(Map.Entry<String, String> entry : entrySet)
{
@@ -3977,13 +3900,13 @@ public class cgBase {
return paramsDone;
}
- public String[] requestViewstates(boolean secure, String host, String path, String method, HashMap<String, String> params, boolean xContentType, boolean my) {
+ public String[] requestViewstates(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my) {
final cgResponse response = request(secure, host, path, method, params, xContentType, my, false);
return getViewstates(response.getData());
}
- public String requestLogged(boolean secure, String host, String path, String method, HashMap<String, String> params, boolean xContentType, boolean my, boolean addF) {
+ public String requestLogged(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
cgResponse response = request(secure, host, path, method, params, xContentType, my, addF);
String data = response.getData();
@@ -4000,14 +3923,14 @@ public class cgBase {
return data;
}
- public cgResponse request(boolean secure, String host, String path, String method, HashMap<String, String> params, boolean xContentType, boolean my, boolean addF) {
+ public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) {
// prepare parameters
final String paramsDone = prepareParameters(params, my, addF);
return request(secure, host, path, method, paramsDone, 0, xContentType);
}
- public cgResponse request(boolean secure, String host, String path, String method, HashMap<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) {
+ public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) {
// prepare parameters
final String paramsDone = prepareParameters(params, my, addF);
@@ -4231,7 +4154,7 @@ public class cgBase {
if (cookies != null) {
final Set<Map.Entry<String, String>> entrySet = cookies.entrySet();
- final ArrayList<String> cookiesEncoded = new ArrayList<String>();
+ final List<String> cookiesEncoded = new ArrayList<String>();
for(Map.Entry<String, String> entry : entrySet){
cookiesEncoded.add(entry.getKey() + "=" + entry.getValue());
@@ -4247,7 +4170,7 @@ public class cgBase {
if (CollectionUtils.isNotEmpty(prefsValues)) {
final Set<? extends Map.Entry<String, ?>> entrySet = prefsValues.entrySet();
- final ArrayList<String> cookiesEncoded = new ArrayList<String>();
+ final List<String> cookiesEncoded = new ArrayList<String>();
for(Map.Entry<String, ?> entry : entrySet){
String key = entry.getKey();
@@ -4653,13 +4576,13 @@ public class cgBase {
if (cache != null) {
// only reload the cache, if it was already stored or has not all details (by checking the description)
if (cache.reason > 0 || StringUtils.isBlank(cache.description)) {
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
params.put("geocode", cache.geocode);
final Long searchId = searchByGeocode(params, listId, false);
cache = app.getCache(searchId);
}
} else if (StringUtils.isNotBlank(geocode)) {
- final HashMap<String, String> params = new HashMap<String, String>();
+ final Map<String, String> params = new HashMap<String, String>();
params.put("geocode", geocode);
final Long searchId = searchByGeocode(params, listId, false);
cache = app.getCache(searchId);