aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java10
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java18
-rw-r--r--main/src/cgeo/geocaching/connector/GCConnector.java19
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java18
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCBase.java16
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java7
-rw-r--r--tests/src/cgeo/geocaching/cgeoApplicationTest.java7
-rw-r--r--tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java5
8 files changed, 77 insertions, 23 deletions
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 3c0076a..ceaad5e 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.utils.CancellableHandler;
public abstract class AbstractConnector implements IConnector {
@@ -53,6 +54,10 @@ public abstract class AbstractConnector implements IConnector {
return null;
}
+ public SearchResult searchByViewport(Viewport viewport, String tokens[]) {
+ return null;
+ }
+
protected static boolean isNumericId(final String string) {
try {
return Integer.parseInt(string) > 0;
@@ -72,4 +77,9 @@ public abstract class AbstractConnector implements IConnector {
// let every cache have reliable coordinates by default
return true;
}
+
+ @Override
+ public String[] getTokens() {
+ return null;
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 39e6dee..471d43b 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -1,8 +1,11 @@
package cgeo.geocaching.connector;
import cgeo.geocaching.ICache;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.connector.opencaching.ApiOpenCachingConnector;
import cgeo.geocaching.connector.opencaching.OpenCachingConnector;
+import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.Viewport;
import org.apache.commons.lang3.StringUtils;
@@ -62,4 +65,19 @@ public final class ConnectorFactory {
private static boolean isInvalidGeocode(final String geocode) {
return StringUtils.isBlank(geocode) || !Character.isLetterOrDigit(geocode.charAt(0));
}
+
+ /** @see IConnector#searchByCoordinate */
+ public static SearchResult searchByCoordinate(final Geopoint center) {
+ // We have only connector capable of doing a 'searchByCoordinate()'
+ // If there is a second connector the information has to be collected from all collectors
+ return GCConnector.getInstance().searchByCoordinate(center);
+ }
+
+ /** @see IConnector#searchByViewport */
+ public static SearchResult searchByViewport(final Viewport viewport, final String[] tokens) {
+ // We have only connector capable of doing a 'searchByViewport()'
+ // If there is a second connector the information has to be collected from all collectors
+ return GCConnector.getInstance().searchByViewport(viewport, tokens);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/connector/GCConnector.java b/main/src/cgeo/geocaching/connector/GCConnector.java
index 2d6e67b..6b44f82 100644
--- a/main/src/cgeo/geocaching/connector/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/GCConnector.java
@@ -7,7 +7,10 @@ import cgeo.geocaching.Settings;
import cgeo.geocaching.cgBase;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.connector.gc.GCBase;
import cgeo.geocaching.enumerations.StatusCode;
+import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.utils.CancellableHandler;
@@ -133,6 +136,17 @@ public class GCConnector extends AbstractConnector {
}
@Override
+ public SearchResult searchByCoordinate(Geopoint center) {
+ // TODO Auto-generated method stub
+ return super.searchByCoordinate(center);
+ }
+
+ @Override
+ public SearchResult searchByViewport(Viewport viewport, String[] tokens) {
+ return GCBase.searchByViewport(viewport, tokens);
+ }
+
+ @Override
public boolean isZippedGPXFile(final String fileName) {
return gpxZipFilePattern.matcher(fileName).matches();
}
@@ -141,4 +155,9 @@ public class GCConnector extends AbstractConnector {
public boolean isReliableLatLon(boolean cacheHasReliableLatLon) {
return cacheHasReliableLatLon;
}
+
+ @Override
+ public String[] getTokens() {
+ return GCBase.getTokens();
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index 21cdb75..bc772c9 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.utils.CancellableHandler;
public interface IConnector {
@@ -86,6 +87,15 @@ public interface IConnector {
public SearchResult searchByCoordinate(final Geopoint center);
/**
+ * Search caches by viewport.
+ *
+ * @param viewport
+ * @param tokens
+ * @return
+ */
+ public SearchResult searchByViewport(final Viewport viewport, final String[] tokens);
+
+ /**
* return true if this is a ZIP file containing a GPX file
*
* @param fileName
@@ -101,4 +111,12 @@ public interface IConnector {
* @return
*/
public boolean isReliableLatLon(boolean cacheHasReliableLatLon);
+
+ /**
+ * Return required tokens for specific following actions
+ *
+ * @return
+ */
+ public String[] getTokens();
+
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCBase.java b/main/src/cgeo/geocaching/connector/gc/GCBase.java
index 72f5d55..03ddb3c 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCBase.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCBase.java
@@ -41,7 +41,6 @@ public class GCBase {
private static final LeastRecentlyUsedCache<String, cgCache> liveMapCache = new LeastRecentlyUsedCache<String, cgCache>(2000); // JSON id, cache
- // TODO Valentine move to connector before merge
/**
* @param viewport
* @param zoomlevel
@@ -340,21 +339,6 @@ public class GCBase {
return GCBase.gcidToGCCode(gcid);
}
- // TODO Valentine
- /** Request further details in the live mapa for a given id */
- public void requestDetailsFromMap(@SuppressWarnings("unused") String id) {
- /**
- * URL http://www.geocaching.com/map/map.details?i=gEaR
- * Response: {"status":"success","data":[{"name":"Spiel & Sport","gc":"GC211WG","g":
- * "872d7eda-7cb9-40d5-890d-5b344bce7302"
- * ,"disabled":false,"subrOnly":false,"li":false,"fp":"0","difficulty":{"text"
- * :3.0,"value":"3"},"terrain":{"text"
- * :2.0,"value":"2"},"hidden":"11/15/2009","container":{"text":"Regular","value"
- * :"regular.gif"},"type":{"text":"Multi-cache"
- * ,"value":3},"owner":{"text":"kai2707","value":"5c4b0915-5cec-4fa1-8afd-4b3ca67e004e"}}]}
- */
- }
-
/** Get user session & session token from the Live Map. Needed for following requests */
public static String[] getTokens() {
final HttpResponse response = cgBase.request(GCConstants.URL_LIVE_MAP, null, false);
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 5ff26e0..004118f 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -15,6 +15,7 @@ import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.cgeocaches;
import cgeo.geocaching.activity.ActivityMixin;
+import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.gc.GCBase;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -1266,8 +1267,10 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
}
if (tokens == null) {
- // token = cgBase.getMapUserToken(noMapTokenHandler);
tokens = GCBase.getTokens();
+ if (noMapTokenHandler != null && tokens == null) {
+ noMapTokenHandler.sendEmptyMessage(0);
+ }
}
if (stop) {
@@ -1276,7 +1279,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto
final Viewport viewport = new Viewport(new Geopoint(latMin, lonMin), new Geopoint(latMax, lonMax));
// search = cgBase.searchByViewport(token, viewport);
- search = GCBase.searchByViewport(viewport, tokens);
+ search = ConnectorFactory.searchByViewport(viewport, tokens);
if (search != null) {
downloaded = true;
if (search.error == StatusCode.NOT_LOGGED_IN) {
diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
index 0ea282f..36d95ae 100644
--- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java
+++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
@@ -1,5 +1,6 @@
package cgeo.geocaching;
+import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.connector.gc.GCBase;
import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LoadFlags;
@@ -202,7 +203,7 @@ public class cgeoApplicationTest extends ApplicationTestCase<cgeoapplication> {
final String tokens[] = GCBase.getTokens();
final Viewport viewport = new Viewport(cache.getCoords(), 0.003, 0.003);
- final SearchResult search = GCBase.searchByViewport(viewport, tokens);
+ final SearchResult search = ConnectorFactory.searchByViewport(viewport, tokens);
// GC2JVEH is a premium members only cache. It can't be "found" by non-premium members
if (Settings.isPremiumMember()) {
@@ -240,7 +241,7 @@ public class cgeoApplicationTest extends ApplicationTestCase<cgeoapplication> {
deleteCacheFromDBAndLogout(cache.getGeocode());
Viewport viewport = new Viewport(cache.getCoords(), 0.003, 0.003);
- SearchResult search = GCBase.searchByViewport(viewport, tokens);
+ SearchResult search = ConnectorFactory.searchByViewport(viewport, tokens);
assertNotNull(search);
assertTrue(search.getGeocodes().contains(cache.getGeocode()));
@@ -255,7 +256,7 @@ public class cgeoApplicationTest extends ApplicationTestCase<cgeoapplication> {
deleteCacheFromDBAndLogout(cache.getGeocode());
viewport = new Viewport(cache.getCoords(), 0.003, 0.003);
- search = GCBase.searchByViewport(viewport, tokens);
+ search = ConnectorFactory.searchByViewport(viewport, tokens);
assertNotNull(search);
// It's a premium member cache only and thus not visible to guests
diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
index 4271dd4..e86dc06 100644
--- a/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
+++ b/tests/src/cgeo/geocaching/connector/gc/GCConnectorTest.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.connector.gc;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgBase;
+import cgeo.geocaching.connector.ConnectorFactory;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.Viewport;
@@ -17,7 +18,7 @@ public class GCConnectorTest extends AndroidTestCase {
{
final Viewport viewport = new Viewport(new Geopoint("N 52° 25.369 E 9° 35.499"), new Geopoint("N 52° 25.371 E 9° 35.501"));
- SearchResult searchResult = GCBase.searchByViewport(viewport, tokens);
+ SearchResult searchResult = ConnectorFactory.searchByViewport(viewport, tokens);
assertTrue(searchResult != null);
assertTrue(searchResult.getCount() > 130);
assertTrue(searchResult.getGeocodes().contains("GC211WG"));
@@ -26,7 +27,7 @@ public class GCConnectorTest extends AndroidTestCase {
{
final Viewport viewport = new Viewport(new Geopoint("N 52° 24.000 E 9° 34.500"), new Geopoint("N 52° 26.000 E 9° 38.500"));
- SearchResult searchResult = GCBase.searchByViewport(viewport, tokens);
+ SearchResult searchResult = ConnectorFactory.searchByViewport(viewport, tokens);
assertTrue(searchResult != null);
assertTrue(searchResult.getGeocodes().contains("GC211WG"));
}