aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/cgeogpxes.java12
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/GCConnector.java7
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java8
-rw-r--r--main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java7
-rw-r--r--tests/src/cgeo/geocaching/cgeogpxesTest.java6
6 files changed, 41 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/cgeogpxes.java b/main/src/cgeo/geocaching/cgeogpxes.java
index 7fdc031..8cd9968 100644
--- a/main/src/cgeo/geocaching/cgeogpxes.java
+++ b/main/src/cgeo/geocaching/cgeogpxes.java
@@ -1,5 +1,7 @@
package cgeo.geocaching;
+import cgeo.geocaching.connector.ConnectorFactory;
+import cgeo.geocaching.connector.IConnector;
import cgeo.geocaching.files.FileList;
import cgeo.geocaching.files.GPXImporter;
@@ -12,13 +14,10 @@ import android.os.Environment;
import java.io.File;
import java.util.List;
-import java.util.regex.Pattern;
public class cgeogpxes extends FileList<cgGPXListAdapter> {
private static final String EXTRAS_LIST_ID = "list";
- private static final Pattern gpxZipFilePattern = Pattern.compile("\\d{7,}(_.+)?\\.zip", Pattern.CASE_INSENSITIVE);
-
public cgeogpxes() {
super(new String[] { "gpx", "loc", "zip" });
}
@@ -63,7 +62,12 @@ public class cgeogpxes extends FileList<cgGPXListAdapter> {
protected boolean filenameBelongsToList(final String filename) {
if (super.filenameBelongsToList(filename)) {
if (StringUtils.endsWithIgnoreCase(filename, GPXImporter.ZIP_FILE_EXTENSION)) {
- return gpxZipFilePattern.matcher(filename).matches();
+ for (IConnector connector : ConnectorFactory.getConnectors()) {
+ if (connector.isZippedGPXFile(filename)) {
+ return true;
+ }
+ }
+ return false;
}
// filter out waypoint files
return !StringUtils.endsWithIgnoreCase(filename, GPXImporter.WAYPOINTS_FILE_SUFFIX_AND_EXTENSION);
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 54f0d8f..73bfd3b 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -60,4 +60,10 @@ public abstract class AbstractConnector implements IConnector {
}
return false;
}
+
+ @Override
+ public boolean isZippedGPXFile(String fileName) {
+ // don't accept any file by default
+ return false;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/GCConnector.java b/main/src/cgeo/geocaching/connector/GCConnector.java
index a5524f7..866979a 100644
--- a/main/src/cgeo/geocaching/connector/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/GCConnector.java
@@ -16,10 +16,12 @@ import org.apache.commons.lang3.StringUtils;
import android.util.Log;
import java.util.List;
+import java.util.regex.Pattern;
public class GCConnector extends AbstractConnector {
private static GCConnector instance;
+ private static final Pattern gpxZipFilePattern = Pattern.compile("\\d{7,}(_.+)?\\.zip", Pattern.CASE_INSENSITIVE);
private GCConnector() {
// singleton
@@ -134,4 +136,9 @@ public class GCConnector extends AbstractConnector {
return search;
}
+
+ @Override
+ public boolean isZippedGPXFile(final String fileName) {
+ return gpxZipFilePattern.matcher(fileName).matches();
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index c110377..ddb05a8 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -84,4 +84,12 @@ public interface IConnector {
* @return
*/
public cgSearch searchByCoordinate(final Geopoint center);
+
+ /**
+ * return true if this is a ZIP file containing a GPX file
+ *
+ * @param fileName
+ * @return
+ */
+ public boolean isZippedGPXFile(final String fileName);
}
diff --git a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
index 8c83b99..7c13c5b 100644
--- a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
+++ b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
@@ -5,11 +5,14 @@ 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 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;
@@ -37,4 +40,8 @@ public class OpenCachingConnector extends AbstractConnector {
return host;
}
+ @Override
+ public boolean isZippedGPXFile(String fileName) {
+ return gpxZipFilePattern.matcher(fileName).matches();
+ }
}
diff --git a/tests/src/cgeo/geocaching/cgeogpxesTest.java b/tests/src/cgeo/geocaching/cgeogpxesTest.java
index 98619b7..6f2e177 100644
--- a/tests/src/cgeo/geocaching/cgeogpxesTest.java
+++ b/tests/src/cgeo/geocaching/cgeogpxesTest.java
@@ -3,7 +3,7 @@ package cgeo.geocaching;
import android.test.ActivityInstrumentationTestCase2;
public class cgeogpxesTest extends ActivityInstrumentationTestCase2<cgeogpxes> {
- private cgeogpxes importGpxActivity = new cgeogpxes();
+ private final cgeogpxes importGpxActivity = new cgeogpxes();
public cgeogpxesTest() {
super("cgeo.geocaching", cgeogpxes.class);
@@ -22,6 +22,8 @@ public class cgeogpxesTest extends ActivityInstrumentationTestCase2<cgeogpxes> {
assertTrue(importGpxActivity.filenameBelongsToList("12345678_query.zip"));
assertTrue(importGpxActivity.filenameBelongsToList("12345678_my_query_1.zip"));
assertTrue(importGpxActivity.filenameBelongsToList("12345678_my query.zip"));
+ assertTrue(importGpxActivity.filenameBelongsToList("ocde12345.zip"));
+ assertTrue(importGpxActivity.filenameBelongsToList("ocde12345678.zip"));
assertFalse(importGpxActivity.filenameBelongsToList("1234567.gpy"));
assertFalse(importGpxActivity.filenameBelongsToList("1234567.agpx"));
@@ -34,6 +36,8 @@ public class cgeogpxesTest extends ActivityInstrumentationTestCase2<cgeogpxes> {
assertFalse(importGpxActivity.filenameBelongsToList("123456.zip"));
assertFalse(importGpxActivity.filenameBelongsToList("1234567query.zip"));
assertFalse(importGpxActivity.filenameBelongsToList("1234567_.zip"));
+ assertFalse(importGpxActivity.filenameBelongsToList("ocde_12345678.zip"));
+ assertFalse(importGpxActivity.filenameBelongsToList("acde12345678.zip"));
assertFalse(importGpxActivity.filenameBelongsToList("1234567-wpts.gpx"));
}