diff options
| author | rsudev <rasch@munin-soft.de> | 2014-02-22 23:58:25 +0100 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2014-02-22 23:58:25 +0100 |
| commit | a90ee7e6a090b929fe0d9f7d9af66fb2ad6fdb7b (patch) | |
| tree | 735c7219508503e75769cfaf5bbe8c73e90ed267 /main/src/cgeo/geocaching/connector | |
| parent | c841050d5797082b5531e0ef9dc8e2dd5cba7386 (diff) | |
| download | cgeo-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')
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 |
