diff options
author | Bananeweizen <bananeweizen@gmx.de> | 2013-02-02 12:27:23 +0100 |
---|---|---|
committer | Bananeweizen <bananeweizen@gmx.de> | 2013-02-02 12:27:23 +0100 |
commit | 586c04c857f5ddb42be3567ddd7172eecb0a3632 (patch) | |
tree | 3d1c3b1ce35b70786b3e8c0c70a455618c5777c8 /main/src/cgeo/geocaching/connector | |
parent | 4357067bfe93803c30cd2bd752fbb0e001994228 (diff) | |
download | cgeo-586c04c857f5ddb42be3567ddd7172eecb0a3632.zip cgeo-586c04c857f5ddb42be3567ddd7172eecb0a3632.tar.gz cgeo-586c04c857f5ddb42be3567ddd7172eecb0a3632.tar.bz2 |
#2347: map common cache attributes of opencaching
Diffstat (limited to 'main/src/cgeo/geocaching/connector')
-rw-r--r-- | main/src/cgeo/geocaching/connector/oc/AttributeMapper.java | 359 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java | 32 |
2 files changed, 388 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/AttributeMapper.java b/main/src/cgeo/geocaching/connector/oc/AttributeMapper.java new file mode 100644 index 0000000..04a6eae --- /dev/null +++ b/main/src/cgeo/geocaching/connector/oc/AttributeMapper.java @@ -0,0 +1,359 @@ +package cgeo.geocaching.connector.oc; + +import cgeo.geocaching.enumerations.CacheAttribute; + +/** + * Maps opencaching attributes. List of available attributes is generated by accessing + * http://www.opencaching.de/xml/ocxml11.php?modifiedsince=20060320000000&user=0&session=0&attrlist=1 + * + * <attr id="1" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/night.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/night-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/night-disabled.png">Only at + * night</attr> + * <attr id="6" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/oconly-disabled.png">Only loggable at + * Opencaching</attr> + * <attr id="7" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/wwwlink-disabled.png">Hyperlink to another + * caching portal only</attr> + * <attr id="8" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/letter-disabled.png">Letterbox (needs + * stamp)</attr> + * <attr id="9" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/danger-disabled.png">Dangerous + * area</attr> + * <attr id="10" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/train.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/train-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/train-disabled.png">Active railway + * nearby</attr> + * <attr id="11" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/cliff-disabled.png">Cliff / + * Rocks</attr> + * <attr id="12" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/hunting-disabled.png">Hunting</attr> + * <attr + * id="13" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/thorn-disabled.png">Thorns</attr> + * <attr + * id="14" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/ticks-disabled.png">Ticks</attr> + * <attr + * id="15" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/mine-disabled.png">Abandoned + * mines</attr> + * <attr id="16" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/plants-disabled.png">Poisonous + * plants</attr> + * <attr id="17" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/animals-disabled.png">Dangerous + * animals</attr> + * <attr id="18" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/parking-disabled.png">Parking area + * nearby</attr> + * <attr id="19" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/public.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/public-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/public-disabled.png">Public + * transportation</attr> + * <attr id="20" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/water.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/water-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/water-disabled.png">Drinking water + * nearby</attr> + * <attr id="21" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/restrooms-disabled.png">Public restrooms + * nearby</attr> + * <attr id="22" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/phone-disabled.png">Public phone + * nearby</attr> + * <attr id="23" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/firstaid-disabled.png">First aid + * available</attr> + * <attr id="24" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/car.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/car-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/car-disabled.png">Near the parking + * area</attr> + * <attr id="25" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/hiking-disabled.png">Long walk</attr> + * <attr + * id="26" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/wading-disabled.png">Swamp or + * marsh</attr> + * <attr id="27" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/steep-disabled.png">Hilly area</attr> + * <attr + * id="28" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/climbing-disabled.png">Some climbing (no + * gear needed)</attr> + * <attr id="29" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/swimming-disabled.png">Swimming + * required</attr> + * <attr id="30" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/interestsign-disabled.png">Point of + * interest</attr> + * <attr id="31" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/moving-disabled.png">Moving + * target</attr> + * <attr id="32" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/webcam-disabled.png">Webcam </attr> + * <attr + * id="33" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/indoor-disabled.png">Wihin enclosed rooms + * (caves, buildings etc.)</attr> + * <attr id="34" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/submerged-disabled.png">In the + * water</attr> + * <attr id="35" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/nogps-disabled.png">Without GPS + * (letterboxes, cistes, compass juggling ...)</attr> + * <attr id="36" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/fee-disabled.png">Access or parking + * fee</attr> + * <attr id="37" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/overnight-disabled.png">Overnight stay + * necessary</attr> + * <attr id="38" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/available.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/available-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/available-disabled.png">Available 24 + * hours</attr> + * <attr id="39" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/time.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/time-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/time-disabled.png">Only available at + * specified times</attr> + * <attr id="40" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/day.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/day-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/day-disabled.png">by day only</attr> + * <attr + * id="41" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/tide-disabled.png">Tide</attr> + * <attr id="42" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/date.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/date-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/date-disabled.png">All seasons</attr> + * <attr + * id="43" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/naturschutz-disabled.png">Breeding season / + * protected nature</attr> + * <attr id="44" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/snow-disabled.png">Snow-proof hiding + * place</attr> + * <attr id="46" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/tools-disabled.png">Special + * equipment</attr> + * <attr id="47" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/compass-disabled.png">Compass</attr> + * <attr + * id="48" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/flashlight-disabled.png" + * >Flashlight</attr> + * <attr id="49" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/rappeling-disabled.png">Climbing + * gear</attr> + * <attr id="50" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/cave-disabled.png">Cave + * equipment</attr> + * <attr id="51" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/scuba-disabled.png">Diving + * equipment</attr> + * <attr id="52" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/boat-disabled.png">Watercraft</attr> + * <attr + * id="53" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/aircraft-disabled.png">Aircraft</attr> + * <attr + * id="54" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/wiki-disabled.png" + * >Investigation</attr> + * <attr id="55" + * icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/riddle-disabled.png">Puzzle / + * Mystery</attr> + * <attr id="56" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/arith_prob-disabled.png">Arithmetical + * problem</attr> + * <attr id="57" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/othercache-disabled.png">Other cache + * type</attr> + * <attr id="58" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/ask-disabled.png">Ask owner for start + * conditions</attr> + * <attr id="59" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/kids-disabled.png">Suited for + * children</attr> + * <attr id="60" icon_large="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar.png" + * icon_no="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar-no.png" + * icon_undef="http://www.opencaching.de/resource2/ocstyle/images/attributes/calendar-disabled.png">Only available + * during specified seasons</attr> + * + */ +public class AttributeMapper { + public static CacheAttribute getAttribute(int ocAttributeId) { + switch (ocAttributeId) { + case 1: + return CacheAttribute.NIGHT; + case 6: + return null; + case 7: + return null; + case 8: + return null; + case 9: + return CacheAttribute.DANGER; + case 10: + return null; + case 11: + return CacheAttribute.CLIFF; + case 12: + return CacheAttribute.HUNTING; + case 13: + return CacheAttribute.THORN; + case 14: + return CacheAttribute.TICKS; + case 15: + return CacheAttribute.MINE; + case 16: + return CacheAttribute.POISONOAK; + case 17: + return CacheAttribute.DANGEROUSANIMALS; + case 18: + return CacheAttribute.PARKING; + case 19: + return CacheAttribute.PUBLIC; + case 20: + return CacheAttribute.WATER; + case 21: + return CacheAttribute.RESTROOMS; + case 22: + return CacheAttribute.PHONE; + case 23: + return CacheAttribute.FIRSTAID; + case 24: + return CacheAttribute.PARKNGRAB; + case 25: + return CacheAttribute.HIKING; + case 26: + return null; + case 27: + return null; + case 28: + return CacheAttribute.CLIMBING; + case 29: + return CacheAttribute.SWIMMING; + case 30: + return null; + case 31: + return null; + case 32: + return null; // webcam, should be handled fine by type already + case 33: + return null; + case 34: + return null; + case 35: + return null; + case 36: + return CacheAttribute.FEE; + case 37: + return null; + case 38: + return CacheAttribute.AVAILABLE; + case 39: + return null; + case 40: + return null; + case 41: + return null; + case 42: + return null; + case 43: + return null; + case 44: + return null; + case 46: + return CacheAttribute.SPECIAL_TOOLS; + case 47: + return null; + case 48: + return CacheAttribute.FLASHLIGHT; + case 49: + return CacheAttribute.RAPPELLING; + case 50: + return null; + case 51: + return CacheAttribute.SCUBA; + case 52: + return CacheAttribute.BOAT; + case 53: + return null; + case 54: + return null; + case 55: + return null; + case 56: + return null; + case 57: + return null; + case 58: + return null; + case 59: + return CacheAttribute.KIDS; + case 60: + return CacheAttribute.SEASONAL; + default: + return null; + } + } +}
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java index 73bfc7d..6e4c0f9 100644 --- a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java +++ b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java @@ -9,6 +9,7 @@ import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.connector.ConnectorFactory; import cgeo.geocaching.connector.IConnector; import cgeo.geocaching.connector.gc.GCConnector; +import cgeo.geocaching.enumerations.CacheAttribute; import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.LogType; @@ -213,6 +214,8 @@ public class OC11XMLParser { desc.hint = StringUtils.EMPTY; } + protected static int attributeId; + public static Collection<cgCache> parseCaches(final InputStream stream) throws IOException { final Map<String, cgCache> caches = new HashMap<String, cgCache>(); @@ -392,11 +395,34 @@ public class OC11XMLParser { }); // cache.attributes.attribute - cacheNode.getChild("attributes").getChild("attribute").setEndTextElementListener(new EndTextElementListener() { + final Element attributeNode = cacheNode.getChild("attributes").getChild("attribute"); + + attributeNode.setStartElementListener(new StartElementListener() { + + @Override + public void start(Attributes attributes) { + if (attributes.getIndex("id") > -1) { + try { + attributeId = Integer.parseInt(attributes.getValue("id")); + } catch (NumberFormatException e) { + Log.w(String.format("Failed to parse attribute id of cache '%s'.", cacheHolder.cache.getGeocode())); + } + } + } + }); + + attributeNode.setEndTextElementListener(new EndTextElementListener() { @Override public void end(String body) { - if (StringUtils.isNotBlank(body)) { - cacheHolder.cache.getAttributes().add(body.trim()); + CacheAttribute attribute = AttributeMapper.getAttribute(attributeId); + if (attribute != null) { + // semantic of attributes on opencaching is always "yes" + cacheHolder.cache.getAttributes().add(attribute.getAttributeName(true)); + } + else { + if (StringUtils.isNotBlank(body)) { + cacheHolder.cache.getAttributes().add(body.trim()); + } } } }); |