aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java')
-rw-r--r--main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java62
1 files changed, 33 insertions, 29 deletions
diff --git a/main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java b/main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java
index 9c3ab4a..165e277 100644
--- a/main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java
+++ b/main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java
@@ -1,19 +1,20 @@
package cgeo.geocaching.connector.opencaching;
-import cgeo.geocaching.Settings;
+import cgeo.geocaching.LogEntry;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgImage;
-import cgeo.geocaching.cgLog;
+import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
+import cgeo.geocaching.enumerations.LoadFlags.SaveFlag;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
-import cgeo.geocaching.geopoint.GeopointParser;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
@@ -22,12 +23,12 @@ import org.json.JSONObject;
import android.net.Uri;
import android.text.Html;
-import android.util.Log;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import java.util.EnumSet;
import java.util.List;
import java.util.Locale;
@@ -75,13 +76,7 @@ final public class OkapiClient {
return null;
}
- final cgCache cache = parseCache(data);
-
- long time = new Date().getTime();
- cache.setUpdated(time);
- cache.setDetailedUpdate(time);
-
- return cache;
+ return parseCache(data);
}
public static List<cgCache> getCachesAround(final Geopoint center, IConnector connector) {
@@ -117,7 +112,7 @@ final public class OkapiClient {
return caches;
}
} catch (JSONException e) {
- Log.e(Settings.tag, "OkapiClient.parseCaches", e);
+ Log.e("OkapiClient.parseCaches", e);
}
return null;
}
@@ -177,8 +172,14 @@ final public class OkapiClient {
cache.setLogs(parseLogs(response.getJSONArray(CACHE_LATEST_LOGS)));
cache.setHidden(parseDate(response.getString(CACHE_HIDDEN)));
+ cache.setUpdated(System.currentTimeMillis());
+ cache.setDetailedUpdate(cache.getUpdated());
+ cache.setDetailed(true);
+
+ // save full detailed caches
+ cgeoapplication.getInstance().saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
} catch (JSONException e) {
- Log.e(Settings.tag, "OkapiClient.parseCache", e);
+ Log.e("OkapiClient.parseCache", e);
}
return cache;
}
@@ -200,22 +201,22 @@ final public class OkapiClient {
return user.getString(USER_USERNAME);
}
- private static List<cgLog> parseLogs(JSONArray logsJSON) {
- List<cgLog> result = null;
+ private static List<LogEntry> parseLogs(JSONArray logsJSON) {
+ List<LogEntry> result = null;
for (int i = 0; i < logsJSON.length(); i++) {
try {
JSONObject logResponse = logsJSON.getJSONObject(i);
- cgLog log = new cgLog();
- log.date = parseDate(logResponse.getString(LOG_DATE)).getTime();
- log.log = logResponse.getString(LOG_COMMENT).trim();
- log.type = parseLogType(logResponse.getString(LOG_TYPE));
- log.author = parseUser(logResponse.getJSONObject(LOG_USER));
+ LogEntry log = new LogEntry(
+ parseUser(logResponse.getJSONObject(LOG_USER)),
+ parseDate(logResponse.getString(LOG_DATE)).getTime(),
+ parseLogType(logResponse.getString(LOG_TYPE)),
+ logResponse.getString(LOG_COMMENT).trim());
if (result == null) {
- result = new ArrayList<cgLog>();
+ result = new ArrayList<LogEntry>();
}
result.add(log);
} catch (JSONException e) {
- Log.e(Settings.tag, "OkapiClient.parseLogs", e);
+ Log.e("OkapiClient.parseLogs", e);
}
}
return result;
@@ -225,7 +226,7 @@ final public class OkapiClient {
if ("Found it".equalsIgnoreCase(logType)) {
return LogType.LOG_FOUND_IT;
}
- else if ("Didn't find it".equalsIgnoreCase(logType)) {
+ if ("Didn't find it".equalsIgnoreCase(logType)) {
return LogType.LOG_DIDNT_FIND_IT;
}
return LogType.LOG_NOTE;
@@ -237,7 +238,7 @@ final public class OkapiClient {
try {
return ISO8601DATEFORMAT.parse(strippedDate);
} catch (ParseException e) {
- Log.e(Settings.tag, "OkapiClient.parseDate", e);
+ Log.e("OkapiClient.parseDate", e);
}
return null;
}
@@ -246,7 +247,7 @@ final public class OkapiClient {
final String latitude = StringUtils.substringBefore(location, "|");
final String longitude = StringUtils.substringAfter(location, "|");
// FIXME: the next line should be a setter at cgCache
- cache.setCoords(GeopointParser.parse(latitude, longitude));
+ cache.setCoords(new Geopoint(latitude, longitude));
}
private static CacheSize getCacheSize(final JSONObject response) {
@@ -257,7 +258,7 @@ final public class OkapiClient {
try {
size = response.getDouble(CACHE_SIZE);
} catch (JSONException e) {
- Log.e(Settings.tag, "OkapiClient.getCacheSize", e);
+ Log.e("OkapiClient.getCacheSize", e);
}
switch ((int) Math.round(size)) {
case 1:
@@ -279,11 +280,14 @@ final public class OkapiClient {
private static CacheType getCacheType(final String cacheType) {
if (cacheType.equalsIgnoreCase("Traditional")) {
return CacheType.TRADITIONAL;
- } else if (cacheType.equalsIgnoreCase("Multi")) {
+ }
+ if (cacheType.equalsIgnoreCase("Multi")) {
return CacheType.MULTI;
- } else if (cacheType.equalsIgnoreCase("Quiz")) {
+ }
+ if (cacheType.equalsIgnoreCase("Quiz")) {
return CacheType.MYSTERY;
- } else if (cacheType.equalsIgnoreCase("Virtual")) {
+ }
+ if (cacheType.equalsIgnoreCase("Virtual")) {
return CacheType.VIRTUAL;
}
return CacheType.UNKNOWN;