diff options
Diffstat (limited to 'main/src/cgeo/geocaching/connector/gc/GCParser.java')
-rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCParser.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index b4d665b..54bd19d 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -176,6 +176,19 @@ public abstract class GCParser { } } + // difficulty/terrain + final MatcherWrapper matcherDT = new MatcherWrapper(GCConstants.PATTERN_SEARCH_DIFFICULTY_TERRAIN, row); + if (matcherDT.find()) { + final Float difficulty = parseStars(matcherDT.group(1)); + if (difficulty != null) { + cache.setDifficulty(difficulty); + } + final Float terrain = parseStars(matcherDT.group(3)); + if (terrain != null) { + cache.setTerrain(terrain); + } + } + // cache inventory final MatcherWrapper matcherTbs = new MatcherWrapper(GCConstants.PATTERN_SEARCH_TRACKABLES, row); String inventoryPre = null; @@ -306,6 +319,11 @@ public abstract class GCParser { return searchResult; } + private static Float parseStars(final String value) { + float floatValue = Float.parseFloat(StringUtils.replaceChars(value, ',', '.')); + return floatValue >= 0.5 && floatValue <= 5.0 ? floatValue : null; + } + static SearchResult parseCache(final String page, final CancellableHandler handler) { final SearchResult searchResult = parseCacheFromText(page, handler); if (searchResult != null && !searchResult.getGeocodes().isEmpty()) { |