aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/connector/OXConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConstants.java4
-rw-r--r--main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java11
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