aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgeo/geocaching/cgCache.java')
-rw-r--r--src/cgeo/geocaching/cgCache.java218
1 files changed, 218 insertions, 0 deletions
diff --git a/src/cgeo/geocaching/cgCache.java b/src/cgeo/geocaching/cgCache.java
new file mode 100644
index 0000000..5bf42f2
--- /dev/null
+++ b/src/cgeo/geocaching/cgCache.java
@@ -0,0 +1,218 @@
+package cgeo.geocaching;
+
+import android.text.Spannable;
+import java.util.Date;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class cgCache {
+
+ public Long updated = null;
+ public Long detailedUpdate = null;
+ public Long visitedDate = null;
+ public Integer reason = 0;
+ public Boolean detailed = false;
+ public String geocode = "";
+ public String cacheid = "";
+ public String guid = "";
+ public String type = "";
+ public String name = "";
+ public Spannable nameSp = null;
+ public String owner = "";
+ public String ownerReal = "";
+ public Date hidden = null;
+ public String hint = "";
+ public String size = "";
+ public Float difficulty = new Float(0);
+ public Float terrain = new Float(0);
+ public Double direction = null;
+ public Double distance = null;
+ public String latlon = "";
+ public String latitudeString = "";
+ public String longitudeString = "";
+ public String location = "";
+ public Double latitude = null;
+ public Double longitude = null;
+ public boolean reliableLatLon = false;
+ public Double elevation = null;
+ public String shortdesc = "";
+ public String description = "";
+ public boolean disabled = false;
+ public boolean archived = false;
+ public boolean members = false;
+ public boolean found = false;
+ public boolean favourite = false;
+ public boolean own = false;
+ public Integer favouriteCnt = null;
+ public Float rating = null;
+ public Integer votes = null;
+ public Float myVote = null;
+ public int inventoryItems = 0;
+ public ArrayList<String> attributes = null;
+ public ArrayList<cgWaypoint> waypoints = null;
+ public ArrayList<cgSpoiler> spoilers = null;
+ public ArrayList<cgLog> logs = null;
+ public ArrayList<cgTrackable> inventory = null;
+ public HashMap<Integer, Integer> logCounts = new HashMap<Integer, Integer>();
+ public boolean logOffline = false;
+ // temporary values
+ public boolean statusChecked = false;
+ public boolean statusCheckedView = false;
+ public String directionImg = null;
+
+ public cgCache merge(cgData storage) {
+ //LeeB - loading cache from db is slow
+ if(false){
+ return this;
+ }
+
+ boolean loadA = true;
+ boolean loadW = true;
+ boolean loadS = true;
+ boolean loadL = true;
+ boolean loadI = true;
+
+ if (attributes == null || attributes.isEmpty() == true) {
+ loadA = false;
+ }
+ if (waypoints == null || waypoints.isEmpty() == true) {
+ loadW = false;
+ }
+ if (spoilers == null || spoilers.isEmpty() == true) {
+ loadS = false;
+ }
+ if (logs == null || logs.isEmpty() == true) {
+ loadL = false;
+ }
+ if (inventory == null || inventory.isEmpty() == true) {
+ loadI = false;
+ }
+
+ final cgCache oldCache = storage.loadCache(geocode, guid, loadA, loadW, loadS, loadL, loadI, false);
+
+ if (oldCache == null) {
+ return this;
+ }
+
+ updated = System.currentTimeMillis();
+ if (detailed == false && oldCache.detailed == true) {
+ detailed = true;
+ detailedUpdate = System.currentTimeMillis();
+ }
+
+ if (visitedDate == null || visitedDate == 0) {
+ visitedDate = oldCache.visitedDate;
+ }
+ if (reason == null || reason == 0) {
+ reason = oldCache.reason;
+ }
+ if (geocode == null || geocode.length() == 0) {
+ geocode = oldCache.geocode;
+ }
+ if (cacheid == null || cacheid.length() == 0) {
+ cacheid = oldCache.cacheid;
+ }
+ if (guid == null || guid.length() == 0) {
+ guid = oldCache.guid;
+ }
+ if (type == null || type.length() == 0) {
+ type = oldCache.type;
+ }
+ if (name == null || name.length() == 0) {
+ name = oldCache.name;
+ }
+ if (nameSp == null || nameSp.length() == 0) {
+ nameSp = oldCache.nameSp;
+ }
+ if (owner == null || owner.length() == 0) {
+ owner = oldCache.owner;
+ }
+ if (ownerReal == null || ownerReal.length() == 0) {
+ ownerReal = oldCache.ownerReal;
+ }
+ if (hidden == null) {
+ hidden = oldCache.hidden;
+ }
+ if (hint == null || hint.length() == 0) {
+ hint = oldCache.hint;
+ }
+ if (size == null || size.length() == 0) {
+ size = oldCache.size;
+ }
+ if (difficulty == null || difficulty == 0) {
+ difficulty = oldCache.difficulty;
+ }
+ if (terrain == null || terrain == 0) {
+ terrain = oldCache.terrain;
+ }
+ if (direction == null) {
+ direction = oldCache.direction;
+ }
+ if (distance == null) {
+ distance = oldCache.distance;
+ }
+ if (latlon == null || latlon.length() == 0) {
+ latlon = oldCache.latlon;
+ }
+ if (latitudeString == null || latitudeString.length() == 0) {
+ latitudeString = oldCache.latitudeString;
+ }
+ if (longitudeString == null || longitudeString.length() == 0) {
+ longitudeString = oldCache.longitudeString;
+ }
+ if (location == null || location.length() == 0) {
+ location = oldCache.location;
+ }
+ if (latitude == null) {
+ latitude = oldCache.latitude;
+ }
+ if (longitude == null) {
+ longitude = oldCache.longitude;
+ }
+ if (elevation == null) {
+ elevation = oldCache.elevation;
+ }
+ if (shortdesc == null || shortdesc.length() == 0) {
+ shortdesc = oldCache.shortdesc;
+ }
+ if (description == null || description.length() == 0) {
+ description = oldCache.description;
+ }
+ if (favouriteCnt == null) {
+ favouriteCnt = oldCache.favouriteCnt;
+ }
+ if (rating == null) {
+ rating = oldCache.rating;
+ }
+ if (votes == null) {
+ votes = oldCache.votes;
+ }
+ if (myVote == null) {
+ myVote = oldCache.myVote;
+ }
+ if (inventoryItems == 0) {
+ inventoryItems = oldCache.inventoryItems;
+ }
+ if (attributes == null) {
+ attributes = oldCache.attributes;
+ }
+ if (waypoints == null) {
+ waypoints = oldCache.waypoints;
+ }
+ if (spoilers == null) {
+ spoilers = oldCache.spoilers;
+ }
+ if (inventory == null) {
+ inventory = oldCache.inventory;
+ }
+ if (logs == null || logs.isEmpty()) { // keep last known logs if none
+ logs = oldCache.logs;
+ }
+
+ return this;
+ }
+
+ public boolean hasTrackables(){
+ return inventoryItems > 0;
+ }
+}