aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/files/GPXParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/files/GPXParser.java')
-rw-r--r--main/src/cgeo/geocaching/files/GPXParser.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java
index 76ca111..fbe1b65 100644
--- a/main/src/cgeo/geocaching/files/GPXParser.java
+++ b/main/src/cgeo/geocaching/files/GPXParser.java
@@ -51,6 +51,7 @@ public abstract class GPXParser extends FileParser {
*/
private static final Pattern patternGeocode = Pattern.compile("([A-Z][0-9A-Z]+)");
private static final Pattern patternGuid = Pattern.compile(".*" + Pattern.quote("guid=") + "([0-9a-z\\-]+)", Pattern.CASE_INSENSITIVE);
+ private static final Pattern patternUrlGeocode = Pattern.compile(".*" + Pattern.quote("wp=") + "([A-Z][0-9A-Z]+)", Pattern.CASE_INSENSITIVE);
/**
* supported groundspeak extensions of the GPX format
*/
@@ -228,7 +229,7 @@ public abstract class GPXParser extends FileParser {
static Date parseDate(String inputUntrimmed) throws ParseException {
String input = inputUntrimmed.trim();
- // remove milli seconds to reduce number of needed patterns
+ // remove milliseconds to reduce number of needed patterns
final Matcher matcher = PATTERN_MILLISECONDS.matcher(input);
input = matcher.replaceFirst("");
if (input.contains("Z")) {
@@ -422,6 +423,11 @@ public abstract class GPXParser extends FileParser {
cache.setGuid(guid);
}
}
+ final Matcher matcherCode = patternUrlGeocode.matcher(url);
+ if (matcherCode.matches()) {
+ String geocode = matcherCode.group(1);
+ cache.setGeocode(geocode);
+ }
}
});