aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2014-02-22 23:58:25 +0100
committerrsudev <rasch@munin-soft.de>2014-02-22 23:58:25 +0100
commita90ee7e6a090b929fe0d9f7d9af66fb2ad6fdb7b (patch)
tree735c7219508503e75769cfaf5bbe8c73e90ed267 /main/src/cgeo/geocaching/connector
parentc841050d5797082b5531e0ef9dc8e2dd5cba7386 (diff)
downloadcgeo-a90ee7e6a090b929fe0d9f7d9af66fb2ad6fdb7b.zip
cgeo-a90ee7e6a090b929fe0d9f7d9af66fb2ad6fdb7b.tar.gz
cgeo-a90ee7e6a090b929fe0d9f7d9af66fb2ad6fdb7b.tar.bz2
Fixes #3517, Search by finder should ignore "Hide found" when searching for own username
Added proper handling for searching after me to the oc connector.
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiConnector.java12
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java18
3 files changed, 27 insertions, 9 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
index 46e4c96..284234e 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
@@ -90,4 +90,16 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
public int getTokenSecretPrefKeyId() {
return 0;
}
+
+ /**
+ * Checks if a search based on a user name targets the current user
+ *
+ * @param username
+ * Name of the user the query is searching after
+ * @return True - search target and current is same, False - current user not known or not the same as username
+ */
+ @SuppressWarnings("static-method")
+ public boolean isSearchForMyCaches(String username) {
+ return false;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
index 0b7493c..049c633 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
@@ -173,4 +173,10 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
final Geopoint currentPos = CgeoApplication.getInstance().currentGeo().getCoords();
return new SearchResult(OkapiClient.getCachesNamed(currentPos, name, this));
}
+
+ @Override
+ public boolean isSearchForMyCaches(String username) {
+ return StringUtils.equalsIgnoreCase(username, getUserName());
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index fbcda18..712bb26 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -148,7 +148,7 @@ final class OkapiClient {
valueMap.put("limit", "20");
valueMap.put("radius", "200");
- return requestCaches(connector, params, valueMap);
+ return requestCaches(connector, params, valueMap, false);
}
public static List<Geocache> getCachesByOwner(final String username, final OCApiConnector connector) {
@@ -169,7 +169,7 @@ final class OkapiClient {
}
valueMap.put(userRequestParam, uuid);
- return requestCaches(connector, params, valueMap);
+ return requestCaches(connector, params, valueMap, connector.isSearchForMyCaches(username));
}
public static List<Geocache> getCachesNamed(final Geopoint center, final String namePart, final OCApiConnector connector) {
@@ -190,16 +190,16 @@ final class OkapiClient {
// full wildcard search, maybe we need to change this after some testing and evaluation
valueMap.put("name", "*" + namePart + "*");
- return requestCaches(connector, params, valueMap);
+ return requestCaches(connector, params, valueMap, false);
}
- private static List<Geocache> requestCaches(final OCApiConnector connector, final Parameters params, final Map<String, String> valueMap) {
+ private static List<Geocache> requestCaches(final OCApiConnector connector, final Parameters params, final Map<String, String> valueMap, final boolean my) {
// if a global type filter is set, and OKAPI does not know that type, then return an empty list instead of all caches
if (Settings.getCacheType() != CacheType.ALL && StringUtils.isBlank(getFilterFromType())) {
return Collections.emptyList();
}
- addFilterParams(valueMap, connector);
+ addFilterParams(valueMap, connector, my);
params.add("search_params", new JSONObject(valueMap).toString());
addRetrieveParams(params, connector);
@@ -229,7 +229,7 @@ final class OkapiClient {
final Map<String, String> valueMap = new LinkedHashMap<String, String>();
valueMap.put("bbox", bboxString);
- return requestCaches(connector, params, valueMap);
+ return requestCaches(connector, params, valueMap, false);
}
public static boolean setWatchState(final Geocache cache, final boolean watched, final OCApiConnector connector) {
@@ -720,11 +720,11 @@ final class OkapiClient {
return "en";
}
- private static void addFilterParams(final Map<String, String> valueMap, final OCApiConnector connector) {
+ private static void addFilterParams(final Map<String, String> valueMap, final OCApiConnector connector, final boolean my) {
if (!Settings.isExcludeDisabledCaches()) {
valueMap.put("status", "Available|Temporarily unavailable");
}
- if (Settings.isExcludeMyCaches() && connector.getSupportedAuthLevel() == OAuthLevel.Level3) {
+ if (!my && Settings.isExcludeMyCaches() && connector.getSupportedAuthLevel() == OAuthLevel.Level3) {
valueMap.put("exclude_my_own", "true");
valueMap.put("found_status", "notfound_only");
}
@@ -823,7 +823,7 @@ final class OkapiClient {
/**
* Retrieves error information from an unsuccessful Okapi-response
- *
+ *
* @param response
* response containing an error object
* @return OkapiError object with detailed information