diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2011-12-12 21:51:40 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2011-12-12 21:51:40 +0100 |
| commit | 774b9b157709fc0a3948b2d2677a7d45541db3de (patch) | |
| tree | c4af7bd68df87bb40c9d6d280c2bc7fc2c298c25 /main/src | |
| parent | e7777b9cf8e7970213602c5cda5fdf9c93069c78 (diff) | |
| download | cgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.zip cgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.tar.gz cgeo-774b9b157709fc0a3948b2d2677a7d45541db3de.tar.bz2 | |
new: accept OpenCaching zipped GPX files in import
Diffstat (limited to 'main/src')
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(); + } } |
