aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/oc/OkapiClient.java')
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OkapiClient.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
index 24e30e7..c33891b 100644
--- a/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/oc/OkapiClient.java
@@ -65,6 +65,7 @@ final class OkapiClient {
private static final SynchronizedDateFormat ISO8601DATEFORMAT = new SynchronizedDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.getDefault());
private static final String CACHE_ATTRNAMES = "attrnames";
+ private static final String CACHE_ATTR_ACODES = "attr_acodes";
private static final String WPT_LOCATION = "location";
private static final String WPT_DESCRIPTION = "description";
private static final String WPT_TYPE = "type";
@@ -113,7 +114,7 @@ final class OkapiClient {
private static final String SERVICE_CACHE_CORE_FIELDS = "code|name|location|type|status|difficulty|terrain|size|date_hidden";
private static final String SERVICE_CACHE_CORE_L3_FIELDS = "is_found";
private static final String SERVICE_CACHE_ADDITIONAL_FIELDS = "owner|founds|notfounds|rating|rating_votes|recommendations|description|hint|images|latest_logs|alt_wpts|attrnames|req_passwd";
- private static final String SERVICE_CACHE_ADDITIONAL_CURRENT_FIELDS = "gc_code|attribution_note";
+ private static final String SERVICE_CACHE_ADDITIONAL_CURRENT_FIELDS = "gc_code|attribution_note|attr_acodes";
private static final String SERVICE_CACHE_ADDITIONAL_L3_FIELDS = "is_watched|my_notes";
private static final String METHOD_SEARCH_ALL = "services/caches/search/all";
@@ -348,7 +349,7 @@ final class OkapiClient {
}
}
- cache.setAttributes(parseAttributes(response.getJSONArray(CACHE_ATTRNAMES)));
+ cache.setAttributes(parseAttributes(response.getJSONArray(CACHE_ATTRNAMES), response.optJSONArray(CACHE_ATTR_ACODES)));
cache.setLogs(parseLogs(response.getJSONArray(CACHE_LATEST_LOGS)));
//TODO: Store license per cache
//cache.setLicense(response.getString("attribution_note"));
@@ -509,17 +510,20 @@ final class OkapiClient {
return null;
}
- private static List<String> parseAttributes(final JSONArray nameList) {
+ private static List<String> parseAttributes(final JSONArray nameList, final JSONArray acodeList) {
final List<String> result = new ArrayList<String>();
for (int i = 0; i < nameList.length(); i++) {
try {
final String name = nameList.getString(i);
- final CacheAttribute attr = CacheAttribute.getByOcId(AttributeParser.getOcDeId(name));
+ final int acode = acodeList != null ? Integer.parseInt(acodeList.getString(i).substring(1)) : CacheAttribute.NO_ID;
+ final CacheAttribute attr = CacheAttribute.getByOcACode(acode);
if (attr != null) {
result.add(attr.rawName);
+ } else {
+ result.add(name);
}
} catch (final JSONException e) {
Log.e("OkapiClient.parseAttributes", e);