aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-12-12 21:51:40 +0100
committerBananeweizen <bananeweizen@gmx.de>2011-12-12 21:51:40 +0100
commit774b9b157709fc0a3948b2d2677a7d45541db3de (patch)
treec4af7bd68df87bb40c9d6d280c2bc7fc2c298c25 /main/src
parente7777b9cf8e7970213602c5cda5fdf9c93069c78 (diff)
downloadcgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.zip
cgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.tar.gz
cgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.tar.bz2
new: accept OpenCaching zipped GPX files in import
Diffstat (limited to 'main/src')
-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
5 files changed, 36 insertions, 4 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();
+ }
}