aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2012-12-31 15:15:07 +0100
committerrsudev <rasch@munin-soft.de>2012-12-31 15:15:07 +0100
commit2da05e50f79c650e3e1e344e1209cb8f2f951c71 (patch)
treed849489dd41f10453cae9244169c77d961616d23 /main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
parent6dad55f6843fee707c0d06df4b268563a7eb7374 (diff)
downloadcgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.zip
cgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.tar.gz
cgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.tar.bz2
Opencaching integration with oc11xml api
Implements load of cache details, coordinate search and viewport search for opencaching.de based on oc11xml api
Diffstat (limited to 'main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java')
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
new file mode 100644
index 0000000..3a2f42e
--- /dev/null
+++ b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java
@@ -0,0 +1,52 @@
+package cgeo.geocaching.connector.oc;
+
+import cgeo.geocaching.SearchResult;
+import cgeo.geocaching.Settings;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.connector.capability.ISearchByCenter;
+import cgeo.geocaching.connector.capability.ISearchByGeocode;
+import cgeo.geocaching.connector.capability.ISearchByViewPort;
+import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.geopoint.Viewport;
+import cgeo.geocaching.utils.CancellableHandler;
+
+public class OCXMLApiConnector extends OCConnector implements ISearchByGeocode, ISearchByCenter, ISearchByViewPort {
+
+ private final static double SEARCH_DISTANCE_LIMIT = 15.0;
+ private final static double NEARBY_SEARCH_DISTANCE = 5.0;
+
+ public OCXMLApiConnector(String name, String host, String prefix) {
+ super(name, host, prefix);
+ }
+
+ @Override
+ public SearchResult searchByGeocode(final String geocode, final String guid, CancellableHandler handler) {
+ final cgCache cache = OCXMLClient.getCache(geocode);
+ if (cache == null) {
+ return null;
+ }
+ return new SearchResult(cache);
+ }
+
+ @Override
+ public SearchResult searchByCenter(final Geopoint center) {
+ return new SearchResult(OCXMLClient.getCachesAround(center, NEARBY_SEARCH_DISTANCE));
+ }
+
+ @Override
+ public SearchResult searchByViewport(final Viewport viewport, final String[] tokens) {
+ final Geopoint center = viewport.getCenter();
+ double distance = center.distanceTo(viewport.bottomLeft) * 1.15;
+ if (distance > SEARCH_DISTANCE_LIMIT) {
+ distance = SEARCH_DISTANCE_LIMIT;
+ }
+ return new SearchResult(OCXMLClient.getCachesAround(center, distance));
+ }
+
+ @Override
+ public boolean isActivated() {
+ // currently only tested and working with oc.de
+ return Settings.isOCConnectorActive();
+ }
+
+}