diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2014-01-29 07:55:09 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2014-01-29 07:55:09 +0100 |
| commit | 3ce1488a9fafd44992d7a408146a9b1c3702f11e (patch) | |
| tree | cc87e3245dded647efb4a2149855ed1c2f3ee30e /main/src/cgeo/geocaching/files | |
| parent | b2d6de1a58e2894373b48054e4ef60a94abcbd88 (diff) | |
| download | cgeo-3ce1488a9fafd44992d7a408146a9b1c3702f11e.zip cgeo-3ce1488a9fafd44992d7a408146a9b1c3702f11e.tar.gz cgeo-3ce1488a9fafd44992d7a408146a9b1c3702f11e.tar.bz2 | |
read premium only flag from GSAK GPX
Diffstat (limited to 'main/src/cgeo/geocaching/files')
| -rw-r--r-- | main/src/cgeo/geocaching/files/GPXParser.java | 156 |
1 files changed, 90 insertions, 66 deletions
diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java index 8c7a853..f5380be 100644 --- a/main/src/cgeo/geocaching/files/GPXParser.java +++ b/main/src/cgeo/geocaching/files/GPXParser.java @@ -500,73 +500,9 @@ public abstract class GPXParser extends FileParser { // for GPX 1.1 from extensions node final Element cacheParent = getCacheParent(waypoint); - // GSAK extensions - for (final String gsakNamespace : GSAK_NS) { - final Element gsak = cacheParent.getChild(gsakNamespace, "wptExtension"); - gsak.getChild(gsakNamespace, "Watch").setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(String watchList) { - cache.setOnWatchlist(Boolean.valueOf(watchList.trim())); - } - }); - - gsak.getChild(gsakNamespace, "UserData").setEndTextElementListener(new UserDataListener(1)); - - for (int i = 2; i <= 4; i++) { - gsak.getChild(gsakNamespace, "User" + i).setEndTextElementListener(new UserDataListener(i)); - } - - gsak.getChild(gsakNamespace, "Parent").setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(String body) { - parentCacheCode = body; - } - }); + registerGsakExtensions(cacheParent); - gsak.getChild(gsakNamespace, "FavPoints").setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(String favoritePoints) { - try { - cache.setFavoritePoints(Integer.parseInt(favoritePoints)); - } - catch (final NumberFormatException e) { - Log.w("Failed to parse favorite points", e); - } - } - }); - - gsak.getChild(gsakNamespace, "GcNote").setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(final String personalNote) { - cache.setPersonalNote(StringUtils.trim(personalNote)); - } - }); - } - - // c:geo extensions - final Element cgeoVisited = cacheParent.getChild(CGEO_NS, "visited"); - - cgeoVisited.setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(String visited) { - wptVisited = Boolean.valueOf(visited.trim()); - } - }); - - final Element cgeoUserDefined = cacheParent.getChild(CGEO_NS, "userdefined"); - - cgeoUserDefined.setEndTextElementListener(new EndTextElementListener() { - - @Override - public void end(String userDefined) { - wptUserDefined = Boolean.valueOf(userDefined.trim()); - } - }); + registerCgeoExtensions(cacheParent); // 3 different versions of the GC schema for (final String nsGC : GROUNDSPEAK_NAMESPACE) { @@ -878,6 +814,94 @@ public abstract class GPXParser extends FileParser { } /** + * Add listeners for GSAK extensions + * + * @param cacheParent + */ + private void registerGsakExtensions(final Element cacheParent) { + for (final String gsakNamespace : GSAK_NS) { + final Element gsak = cacheParent.getChild(gsakNamespace, "wptExtension"); + gsak.getChild(gsakNamespace, "Watch").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String watchList) { + cache.setOnWatchlist(Boolean.valueOf(watchList.trim())); + } + }); + + gsak.getChild(gsakNamespace, "UserData").setEndTextElementListener(new UserDataListener(1)); + + for (int i = 2; i <= 4; i++) { + gsak.getChild(gsakNamespace, "User" + i).setEndTextElementListener(new UserDataListener(i)); + } + + gsak.getChild(gsakNamespace, "Parent").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String body) { + parentCacheCode = body; + } + }); + + gsak.getChild(gsakNamespace, "FavPoints").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String favoritePoints) { + try { + cache.setFavoritePoints(Integer.parseInt(favoritePoints)); + } + catch (final NumberFormatException e) { + Log.w("Failed to parse favorite points", e); + } + } + }); + + gsak.getChild(gsakNamespace, "GcNote").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(final String personalNote) { + cache.setPersonalNote(StringUtils.trim(personalNote)); + } + }); + + gsak.getChild(gsakNamespace, "IsPremium").setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(final String premium) { + cache.setPremiumMembersOnly(Boolean.parseBoolean(premium)); + } + }); + } + } + + /** + * Add listeners for c:geo extensions + * + * @param cacheParent + */ + private void registerCgeoExtensions(final Element cacheParent) { + final Element cgeoVisited = cacheParent.getChild(CGEO_NS, "visited"); + + cgeoVisited.setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String visited) { + wptVisited = Boolean.valueOf(visited.trim()); + } + }); + + final Element cgeoUserDefined = cacheParent.getChild(CGEO_NS, "userdefined"); + + cgeoUserDefined.setEndTextElementListener(new EndTextElementListener() { + + @Override + public void end(String userDefined) { + wptUserDefined = Boolean.valueOf(userDefined.trim()); + } + }); + } + + /** * Overwrite this method in a GPX parser sub class to modify the {@link Geocache}, after it has been fully parsed * from the GPX file and before it gets stored. * |
