diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-02-01 18:12:04 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-02-01 18:12:04 +0100 |
| commit | 654b26643f70e94295e7120fc9a53324df36c551 (patch) | |
| tree | dc260afc59a0b91e3bc810f8420ae95028f87252 | |
| parent | dd581e8a137e5808e0e589c72f28907b5c674a6e (diff) | |
| download | cgeo-654b26643f70e94295e7120fc9a53324df36c551.zip cgeo-654b26643f70e94295e7120fc9a53324df36c551.tar.gz cgeo-654b26643f70e94295e7120fc9a53324df36c551.tar.bz2 | |
new: spoiler support for opencaching.de
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java | 74 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OCXMLClient.java | 2 |
2 files changed, 75 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java index 9618028..002556a 100644 --- a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java +++ b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java @@ -1,5 +1,6 @@ package cgeo.geocaching.connector.oc; +import cgeo.geocaching.Image; import cgeo.geocaching.LogEntry; import cgeo.geocaching.R; import cgeo.geocaching.Settings; @@ -48,6 +49,8 @@ public class OC11XMLParser { private static final int CACHE_PARSE_LIMIT = 250; private static final Resources res = cgeoapplication.getInstance().getResources(); + private static ImageHolder imageHolder = null; + private static class CacheHolder { public cgCache cache; public String latitude; @@ -66,6 +69,13 @@ public class OC11XMLParser { public String hint; } + private static class ImageHolder { + public String url; + public String cacheId; + protected String title; + protected boolean isSpoiler; + } + private static Date parseFullDate(final String date) { final SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); ISO8601DATEFORMAT.setTimeZone(TimeZone.getTimeZone("UTC")); @@ -535,6 +545,70 @@ public class OC11XMLParser { } }); + // pictures + final Element picture = root.getChild("picture"); + + picture.setStartElementListener(new StartElementListener() { + + @Override + public void start(Attributes attrs) { + imageHolder = new ImageHolder(); + } + }); + + picture.setEndElementListener(new EndElementListener() { + + @Override + public void end() { + if (imageHolder.isSpoiler) { + final cgCache cache = caches.get(imageHolder.cacheId); + if (cache != null) { + Image spoiler = new Image(imageHolder.url, imageHolder.title); + cache.addSpoiler(spoiler); + } + } + } + }); + + // picture.object + picture.getChild("object").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String body) { + imageHolder.cacheId = StringUtils.trim(body); + } + }); + + // picture.title + picture.getChild("title").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String body) { + imageHolder.title = StringUtils.trim(body); + } + }); + + // picture.url + picture.getChild("url").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String body) { + imageHolder.url = StringUtils.trim(body); + } + }); + + // picture.attributes + picture.getChild("attributes").setStartElementListener(new StartElementListener() { + + @Override + public void start(Attributes attributes) { + if (attributes.getIndex("spoiler") > -1) { + String spoiler = attributes.getValue("spoiler"); + imageHolder.isSpoiler = ("1".equals(spoiler)); + } + } + }); + try { Xml.parse(stream, Xml.Encoding.UTF_8, root.getContentHandler()); return caches.values(); diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java index 75cd6f0..3758f7e 100644 --- a/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java +++ b/main/src/cgeo/geocaching/connector/oc/OCXMLClient.java @@ -101,7 +101,7 @@ public class OCXMLClient { private static Parameters getOCXmlQueryParameters(final boolean withDescription, final boolean withLogs) { return new Parameters("modifiedsince", "20060320000000", "user", "0", "cache", "1", "cachedesc", withDescription ? "1" : "0", - "cachelog", withLogs ? "1" : "0", "picture", "0", "removedobject", "0", + "cachelog", withLogs ? "1" : "0", "picture", "1", "removedobject", "0", "session", "0", "doctype", "0", "charset", "utf-8", "zip", "gzip"); } } |
