diff options
Diffstat (limited to 'main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/opencaching/OkapiClient.java | 62 |
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; |
