diff options
Diffstat (limited to 'main/src')
4 files changed, 16 insertions, 10 deletions
diff --git a/main/src/cgeo/geocaching/connector/OXConnector.java b/main/src/cgeo/geocaching/connector/OXConnector.java index 7348421..755dbaa 100644 --- a/main/src/cgeo/geocaching/connector/OXConnector.java +++ b/main/src/cgeo/geocaching/connector/OXConnector.java @@ -2,7 +2,7 @@ package cgeo.geocaching.connector; import cgeo.geocaching.cgCache; -import org.apache.commons.lang3.StringUtils; +import java.util.regex.Pattern; /** * connector for OpenCaching.com @@ -10,9 +10,11 @@ import org.apache.commons.lang3.StringUtils; */ public class OXConnector extends AbstractConnector { + private static final Pattern PATTERN_GEOCODE = Pattern.compile("OX[A-Z0-9]+", Pattern.CASE_INSENSITIVE); + @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, "OX"); + return PATTERN_GEOCODE.matcher(geocode).matches(); } @Override diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index 9f71f62..95e4921 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -38,7 +38,10 @@ public class GCConnector extends AbstractConnector { @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, "GC"); + if (geocode == null) { + return false; + } + return GCConstants.PATTERN_GC_CODE.matcher(geocode).matches(); } @Override diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java index b166d95..cb4f896 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java @@ -143,8 +143,8 @@ public final class GCConstants { /** * Patterns for GC and TB codes */ - public final static Pattern PATTERN_GC_CODE = Pattern.compile("GC[0-9A-Z]*", Pattern.CASE_INSENSITIVE); - public final static Pattern PATTERN_TB_CODE = Pattern.compile("TB[0-9A-Z]*", Pattern.CASE_INSENSITIVE); + public final static Pattern PATTERN_GC_CODE = Pattern.compile("GC[0-9A-Z]+", Pattern.CASE_INSENSITIVE); + public final static Pattern PATTERN_TB_CODE = Pattern.compile("TB[0-9A-Z]+", Pattern.CASE_INSENSITIVE); /** Live Map since 14.02.2012 */ public final static Pattern PATTERN_USERSESSION = Pattern.compile("UserSession\\('([^']+)'"); diff --git a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java index 7c13c5b..bfaa345 100644 --- a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java +++ b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java @@ -3,26 +3,27 @@ package cgeo.geocaching.connector.opencaching; import cgeo.geocaching.cgCache; import cgeo.geocaching.connector.AbstractConnector; -import org.apache.commons.lang3.StringUtils; - import java.util.regex.Pattern; public class OpenCachingConnector extends AbstractConnector { private final String host; private final String name; - private final String prefix; + private final Pattern codePattern; private static final Pattern gpxZipFilePattern = Pattern.compile("oc[a-z]{2,3}\\d{5,}\\.zip", Pattern.CASE_INSENSITIVE); public OpenCachingConnector(final String name, final String host, final String prefix) { this.name = name; this.host = host; - this.prefix = prefix; + codePattern = Pattern.compile(prefix + "[A-Z0-9]+", Pattern.CASE_INSENSITIVE); } @Override public boolean canHandle(String geocode) { - return StringUtils.startsWithIgnoreCase(geocode, prefix); + if (geocode == null) { + return false; + } + return codePattern.matcher(geocode).matches(); } @Override |
