aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-10-12 07:43:22 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-10-12 07:43:22 +0200
commit862a05d3cf1e67d9e4e581b02e9818c41639a79d (patch)
tree8cf1911eacafacb978e5b41190132341ba1d8db3
parentc727dbe4119a8b798a94588abe1010dcabfebbb4 (diff)
downloadcgeo-862a05d3cf1e67d9e4e581b02e9818c41639a79d.zip
cgeo-862a05d3cf1e67d9e4e581b02e9818c41639a79d.tar.gz
cgeo-862a05d3cf1e67d9e4e581b02e9818c41639a79d.tar.bz2
new: support Geocaching Australia caches (GAxxxx, TPxxxx)
* most cache details are not available due to wrong schema in their GPX files, but I requested them to change that
-rw-r--r--main/src/cgeo/geocaching/cgeogpxes.java17
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java8
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java18
-rw-r--r--main/src/cgeo/geocaching/connector/GCConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java28
-rw-r--r--main/src/cgeo/geocaching/connector/OXConnector.java2
-rw-r--r--main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java2
7 files changed, 69 insertions, 12 deletions
diff --git a/main/src/cgeo/geocaching/cgeogpxes.java b/main/src/cgeo/geocaching/cgeogpxes.java
index acee766..8e5d22b 100644
--- a/main/src/cgeo/geocaching/cgeogpxes.java
+++ b/main/src/cgeo/geocaching/cgeogpxes.java
@@ -35,6 +35,10 @@ public class cgeogpxes extends FileList<cgGPXListAdapter> {
public void handleMessage(Message msg) {
if (parseDialog != null) {
parseDialog.setMessage(res.getString(msg.arg1) + " " + msg.arg2);
+ if (msg.obj != null) {
+ final int progress = (Integer) msg.obj;
+ parseDialog.setProgress(progress);
+ }
}
}
};
@@ -82,12 +86,13 @@ public class cgeogpxes extends FileList<cgGPXListAdapter> {
public void loadGPX(File file) {
- parseDialog = ProgressDialog.show(
- this,
- res.getString(R.string.gpx_import_title_reading_file),
- res.getString(R.string.gpx_import_loading),
- true,
- false);
+ parseDialog = new ProgressDialog(this);
+ parseDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ parseDialog.setTitle(res.getString(R.string.gpx_import_title_reading_file));
+ parseDialog.setMessage(res.getString(R.string.gpx_import_loading));
+ parseDialog.setCancelable(false);
+ parseDialog.setMax((int) file.length());
+ parseDialog.show();
new loadCaches(file).start();
}
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 6ea450d..1a3048a 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -50,4 +50,12 @@ public abstract class AbstractConnector implements IConnector {
public UUID searchByGeocode(cgBase base, String geocode, String guid, cgeoapplication app, cgSearch search, int reason, Handler handler) {
return null;
}
+
+ protected static boolean isNumericId(final String string) {
+ try {
+ return Integer.valueOf(string) > 0;
+ } catch (NumberFormatException e) {
+ }
+ return false;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 788df13..2ad4de2 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -4,6 +4,8 @@ import cgeo.geocaching.cgCache;
import cgeo.geocaching.connector.opencaching.ApiOpenCachingConnector;
import cgeo.geocaching.connector.opencaching.OpenCachingConnector;
+import org.apache.commons.lang3.StringUtils;
+
public final class ConnectorFactory {
private static final GCConnector GC_CONNECTOR = new GCConnector();
private static final IConnector[] connectors = new IConnector[] {
@@ -18,7 +20,8 @@ public final class ConnectorFactory {
new OpenCachingConnector("OpenCaching.NL", "www.opencaching.nl", "OB"),
new ApiOpenCachingConnector("OpenCaching.PL", "www.opencaching.pl", "OP", "GkxM47WkUkLQXXsZ9qSh"),
new ApiOpenCachingConnector("OpenCaching.US", "www.opencaching.us", "OU", "pTsYAYSXFcfcRQnYE6uA"),
- new OXConnector()
+ new OXConnector(),
+ new GeocachingAustraliaConnector()
};
public static IConnector[] getConnectors() {
@@ -26,6 +29,9 @@ public final class ConnectorFactory {
}
public static boolean canHandle(final String geocode) {
+ if (isInvalidGeocode(geocode)) {
+ return false;
+ }
for (IConnector connector : connectors) {
if (connector.canHandle(geocode)) {
return true;
@@ -39,6 +45,9 @@ public final class ConnectorFactory {
}
public static IConnector getConnector(String geocode) {
+ if (isInvalidGeocode(geocode)) {
+ return GC_CONNECTOR;
+ }
for (IConnector connector : connectors) {
if (connector.canHandle(geocode)) {
return connector;
@@ -47,4 +56,11 @@ public final class ConnectorFactory {
// in case of errors, assume GC as default
return GC_CONNECTOR;
}
+
+ private static boolean isInvalidGeocode(final String geocode) {
+ if (StringUtils.isBlank(geocode) || geocode.length() <= 2) {
+ return true;
+ }
+ return false;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/GCConnector.java b/main/src/cgeo/geocaching/connector/GCConnector.java
index 7699a74..823c171 100644
--- a/main/src/cgeo/geocaching/connector/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/GCConnector.java
@@ -23,7 +23,7 @@ public class GCConnector extends AbstractConnector implements IConnector {
@Override
public boolean canHandle(String geocode) {
- return StringUtils.isNotBlank(geocode) && StringUtils.startsWithIgnoreCase(geocode, "GC");
+ return StringUtils.startsWithIgnoreCase(geocode, "GC");
}
@Override
@@ -83,7 +83,7 @@ public class GCConnector extends AbstractConnector implements IConnector {
base.sendLoadProgressDetail(handler, R.string.cache_dialog_loading_details_status_loadpage);
- String page = cgBase.requestLogged("http://www.geocaching.com/seek/cache_details.aspx", params, false, false, false);
+ final String page = cgBase.requestLogged("http://www.geocaching.com/seek/cache_details.aspx", params, false, false, false);
if (StringUtils.isEmpty(page)) {
if (app.isThere(geocode, guid, true, false)) {
@@ -125,7 +125,7 @@ public class GCConnector extends AbstractConnector implements IConnector {
return null;
}
- List<cgCache> cacheList = cgBase.filterSearchResults(search, caches, false, false, null);
+ final List<cgCache> cacheList = cgBase.filterSearchResults(search, caches, false, false, null);
app.addSearch(search, cacheList, true, reason);
return search.getCurrentId();
diff --git a/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
new file mode 100644
index 0000000..58f4743
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
@@ -0,0 +1,28 @@
+package cgeo.geocaching.connector;
+
+import cgeo.geocaching.cgCache;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class GeocachingAustraliaConnector extends AbstractConnector implements IConnector {
+
+ @Override
+ public String getName() {
+ return "Geocaching Australia";
+ }
+
+ @Override
+ public String getCacheUrl(final cgCache cache) {
+ return "http://" + getHost() + "/cache/" + cache.geocode;
+ }
+
+ @Override
+ public String getHost() {
+ return "geocaching.com.au";
+ }
+
+ @Override
+ public boolean canHandle(final String geocode) {
+ return (StringUtils.startsWithIgnoreCase(geocode, "GA") || StringUtils.startsWithIgnoreCase(geocode, "TP")) && isNumericId(geocode.substring(2));
+ }
+}
diff --git a/main/src/cgeo/geocaching/connector/OXConnector.java b/main/src/cgeo/geocaching/connector/OXConnector.java
index ca2f4b9..78d60b7 100644
--- a/main/src/cgeo/geocaching/connector/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/OXConnector.java
@@ -12,7 +12,7 @@ public class OXConnector extends AbstractConnector implements IConnector {
@Override
public boolean canHandle(String geocode) {
- return StringUtils.isNotBlank(geocode) && StringUtils.startsWithIgnoreCase(geocode, "OX");
+ return StringUtils.startsWithIgnoreCase(geocode, "OX");
}
@Override
diff --git a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
index 0fe69f5..273c4cd 100644
--- a/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
+++ b/main/src/cgeo/geocaching/connector/opencaching/OpenCachingConnector.java
@@ -20,7 +20,7 @@ public class OpenCachingConnector extends AbstractConnector implements IConnecto
@Override
public boolean canHandle(String geocode) {
- return StringUtils.isNotBlank(geocode) && StringUtils.startsWithIgnoreCase(geocode, prefix);
+ return StringUtils.startsWithIgnoreCase(geocode, prefix);
}
@Override