diff options
Diffstat (limited to 'src/cgeo/geocaching/cgCache.java')
| -rw-r--r-- | src/cgeo/geocaching/cgCache.java | 218 |
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; + } +} |
