aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-12-16 22:07:15 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-12-16 22:07:15 +0100
commit537762a5a2e1d1dcfe7f990ef31c5c9a86d8c457 (patch)
tree3c1bba660663b7e5ea8971d2e48b36b746e2695c /main
parenta990a9bc2c569c60d0fc10ba5f0ce3027b08b142 (diff)
downloadcgeo-537762a5a2e1d1dcfe7f990ef31c5c9a86d8c457.zip
cgeo-537762a5a2e1d1dcfe7f990ef31c5c9a86d8c457.tar.gz
cgeo-537762a5a2e1d1dcfe7f990ef31c5c9a86d8c457.tar.bz2
new: have OpenCaching.com as normal connector
* now with bounding box search for live map * fixed search by center * added setting to enable/disable connector
Diffstat (limited to 'main')
-rw-r--r--main/res/values/preference_keys.xml2
-rw-r--r--main/res/values/strings.xml2
-rw-r--r--main/res/xml/preferences.xml37
-rw-r--r--main/src/cgeo/geocaching/connector/AbstractConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java4
-rw-r--r--main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/GeopeitusConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/IConnector.java31
-rw-r--r--main/src/cgeo/geocaching/connector/UnknownConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/WaymarkingConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECConnector.java6
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java12
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiConnector.java5
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java2
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCConnector.java9
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java30
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java29
-rw-r--r--main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java2
-rw-r--r--main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java2
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java4
20 files changed, 143 insertions, 60 deletions
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml
index 41f289e..e11f5c1 100644
--- a/main/res/values/preference_keys.xml
+++ b/main/res/values/preference_keys.xml
@@ -21,6 +21,7 @@
<string name="pref_ecusername">ecusername</string>
<string name="pref_ecpassword">ecpassword</string>
<string name="pref_connectorECActive">connectorECActive</string>
+ <string name="pref_connectorOXActive">connectorOXActive</string>
<string name="pref_pass_vote">pass-vote</string>
<string name="pref_twitter">twitter</string>
<string name="pref_webDeviceName">webDeviceName</string>
@@ -127,6 +128,7 @@
<string name="pref_fakekey_ocde_website">fakekey_ocde_website</string>
<string name="pref_fakekey_ocpl_website">fakekey_ocpl_website</string>
<string name="pref_fakekey_ec_website">fakekey_ec_website</string>
+ <string name="pref_fakekey_ox_website">fakekey_ox_website</string>
<string name="pref_fakekey_gcvote_website">fakekey_gcvote_website</string>
<string name="pref_fakekey_sendtocgeo_website">fakekey_sendtocgeo_website</string>
<string name="pref_twitter_cache_message">twitter_cache_message</string>
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 5110a73..5c6c8ae 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -394,8 +394,10 @@
<string name="settings_title_gc">Geocaching.com</string>
<string name="settings_title_ec">Extremcaching.com</string>
+ <string name="settings_title_ox">Opencaching.com (Garmin)</string>
<string name="settings_activate_gc">Activate</string>
<string name="settings_activate_ec">Activate</string>
+ <string name="settings_activate_ox">Activate</string>
<string name="settings_gc_legal_note">With using the service of geocaching.com, you accept the Groundspeak Terms of Use.</string>
<string name="settings_info_facebook_login_title">Facebook Login</string>
<string name="settings_info_facebook_login">You can\'t make c:geo login to geocaching.com with your Facebook account. But there is a simple workaround …</string>
diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml
index 8c72ae0..b7fd880 100644
--- a/main/res/xml/preferences.xml
+++ b/main/res/xml/preferences.xml
@@ -161,6 +161,43 @@
</PreferenceCategory>
</PreferenceScreen>
+ <PreferenceScreen android:title="@string/settings_title_ox" >
+ <PreferenceCategory android:title="@string/settings_settings" >
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="@string/pref_connectorOXActive"
+ android:title="@string/settings_activate_ox" />
+<!--
+ <EditTextPreference
+ android:dependency="@string/pref_connectorECActive"
+ android:dialogTitle="@string/init_username"
+ android:hint="@string/init_username"
+ android:imeOptions="actionDone"
+ android:key="@string/pref_ecusername"
+ android:singleLine="true"
+ android:title="@string/init_username" />
+
+ <cgeo.geocaching.settings.EditPasswordPreference
+ android:dependency="@string/pref_connectorECActive"
+ android:dialogTitle="@string/init_password"
+ android:hint="@string/init_password"
+ android:imeOptions="actionDone"
+ android:inputType="textPassword"
+ android:key="@string/pref_ecpassword"
+ android:singleLine="true"
+ android:title="@string/init_password" />
+ <cgeo.geocaching.settings.CheckECCredentialsPreference
+ android:dependency="@string/pref_connectorECActive"
+ android:title="@string/init_login" />
+ -->
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/settings_information" >
+ <Preference
+ android:key="@string/pref_fakekey_ox_website"
+ android:title="@string/settings_open_website" />
+ </PreferenceCategory>
+ </PreferenceScreen>
+
<PreferenceScreen android:title="@string/init_gcvote" >
<PreferenceCategory android:title="@string/settings_settings" >
<cgeo.geocaching.settings.EditPasswordPreference
diff --git a/main/src/cgeo/geocaching/connector/AbstractConnector.java b/main/src/cgeo/geocaching/connector/AbstractConnector.java
index 5e102b9..4edb6d6 100644
--- a/main/src/cgeo/geocaching/connector/AbstractConnector.java
+++ b/main/src/cgeo/geocaching/connector/AbstractConnector.java
@@ -89,7 +89,7 @@ public abstract class AbstractConnector implements IConnector {
}
@Override
- public String getLicenseText(final Geocache cache) {
+ public String getLicenseText(final @NonNull Geocache cache) {
return null;
}
@@ -133,7 +133,7 @@ public abstract class AbstractConnector implements IConnector {
abstract protected String getCacheUrlPrefix();
@Override
- public String getLongCacheUrl(final Geocache cache) {
+ public String getLongCacheUrl(final @NonNull Geocache cache) {
return getCacheUrl(cache);
}
@@ -141,7 +141,7 @@ public abstract class AbstractConnector implements IConnector {
* {@link IConnector}
*/
@Override
- public boolean isActivated() {
+ public boolean isActive() {
return false;
}
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
index 5c5d9db..b11a731 100644
--- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java
+++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java
@@ -109,7 +109,7 @@ public final class ConnectorFactory {
public static ILogin[] getActiveLiveConnectors() {
final List<ILogin> liveConns = new ArrayList<ILogin>();
for (final IConnector conn : CONNECTORS) {
- if (conn instanceof ILogin && conn.isActivated()) {
+ if (conn instanceof ILogin && conn.isActive()) {
liveConns.add((ILogin) conn);
}
}
@@ -170,7 +170,7 @@ public final class ConnectorFactory {
final SearchResult result = new SearchResult();
for (final ISearchByViewPort vpconn : searchByViewPortConns) {
- if (vpconn.isActivated()) {
+ if (vpconn.isActive()) {
result.addSearchResult(vpconn.searchByViewport(viewport, tokens));
}
}
diff --git a/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
index ac2fb37..3992013 100644
--- a/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
+++ b/main/src/cgeo/geocaching/connector/GeocachingAustraliaConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
public class GeocachingAustraliaConnector extends AbstractConnector {
@@ -13,7 +14,7 @@ public class GeocachingAustraliaConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(final Geocache cache) {
+ public String getCacheUrl(final @NonNull Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -28,7 +29,7 @@ public class GeocachingAustraliaConnector extends AbstractConnector {
}
@Override
- public boolean canHandle(final String geocode) {
+ public boolean canHandle(final @NonNull String geocode) {
return (StringUtils.startsWithIgnoreCase(geocode, "GA") || StringUtils.startsWithIgnoreCase(geocode, "TP")) && isNumericId(geocode.substring(2));
}
diff --git a/main/src/cgeo/geocaching/connector/GeopeitusConnector.java b/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
index 500f752..aa08485 100644
--- a/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
+++ b/main/src/cgeo/geocaching/connector/GeopeitusConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
public class GeopeitusConnector extends AbstractConnector {
@@ -13,7 +14,7 @@ public class GeopeitusConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(final Geocache cache) {
+ public String getCacheUrl(final @NonNull Geocache cache) {
return getCacheUrlPrefix() + StringUtils.stripStart(cache.getGeocode().substring(2), "0");
}
@@ -28,7 +29,7 @@ public class GeopeitusConnector extends AbstractConnector {
}
@Override
- public boolean canHandle(String geocode) {
+ public boolean canHandle(@NonNull String geocode) {
return StringUtils.startsWith(geocode, "GE") && isNumericId(geocode.substring(2));
}
diff --git a/main/src/cgeo/geocaching/connector/IConnector.java b/main/src/cgeo/geocaching/connector/IConnector.java
index f5f70b0..a0deb5c 100644
--- a/main/src/cgeo/geocaching/connector/IConnector.java
+++ b/main/src/cgeo/geocaching/connector/IConnector.java
@@ -19,20 +19,21 @@ public interface IConnector {
public String getName();
/**
- * return true, if this connector is responsible for the given cache
+ * Check if this connector is responsible for the given geocode.
*
* @param geocode
- * @return
+ * geocode of a cache
+ * @return return {@code true}, if this connector is responsible for the cache
*/
public boolean canHandle(final @NonNull String geocode);
/**
- * get browser URL for the given cache
+ * Get the browser URL for the given cache.
*
* @param cache
* @return
*/
- public String getCacheUrl(final Geocache cache);
+ public String getCacheUrl(final @NonNull Geocache cache);
/**
* get long browser URL for the given cache
@@ -40,7 +41,7 @@ public interface IConnector {
* @param cache
* @return
*/
- public String getLongCacheUrl(final Geocache cache);
+ public String getLongCacheUrl(final @NonNull Geocache cache);
/**
* enable/disable watchlist controls in cache details
@@ -94,19 +95,19 @@ public interface IConnector {
public ILoggingManager getLoggingManager(final LogCacheActivity activity, final Geocache cache);
/**
- * get host name of the connector server for dynamic loading of data
+ * Get host name of the connector server for dynamic loading of data.
*
* @return
*/
public String getHost();
/**
- * get cache data license text
+ * Get cache data license text. This is displayed somewhere near the cache details.
*
* @param cache
* @return
*/
- public String getLicenseText(final Geocache cache);
+ public String getLicenseText(final @NonNull Geocache cache);
/**
* enable/disable user actions in cache details
@@ -180,13 +181,13 @@ public interface IConnector {
public boolean uploadModifiedCoordinates(Geocache cache, Geopoint wpt);
/**
- * Return true if this connector is activated for online
- * interaction (download details, do searches, ...)
+ * Return {@code true} if this connector is active for online interaction (download details, do searches, ...). If
+ * this is {@code false}, the connector will still be used for already stored offline caches.
*
* @return
*/
- public boolean isActivated();
+ public boolean isActive();
/**
* Check if the current user is the owner of the given cache.
@@ -215,7 +216,7 @@ public interface IConnector {
public int getCacheMapMarkerId(boolean disabled);
/**
- * Get the list of <b>potentially</b> possible log types for a cache. Those may still be filter further during the
+ * Get the list of <b>potentially</b> possible log types for a cache. Those may still be filtered further during the
* actual logging activity.
*
* @param geocache
@@ -224,8 +225,8 @@ public interface IConnector {
public List<LogType> getPossibleLogTypes(Geocache geocache);
/**
- * Get the gpx id for a waypoint when exporting. For some connectors there is an inherent name logic,
- * for others its just the 'prefix'
+ * Get the GPX id for a waypoint when exporting. For some connectors there is an inherent name logic,
+ * for others its just the 'prefix'.
*
* @param prefix
* @return
@@ -233,7 +234,7 @@ public interface IConnector {
public String getWaypointGpxId(String prefix, String geocode);
/**
- * Get the 'prefix' (key) for a waypoint from the 'name' in the gpx file
+ * Get the 'prefix' (key) for a waypoint from the 'name' in the GPX file
*
* @param name
* @return
diff --git a/main/src/cgeo/geocaching/connector/UnknownConnector.java b/main/src/cgeo/geocaching/connector/UnknownConnector.java
index e9fecb9..05593d7 100644
--- a/main/src/cgeo/geocaching/connector/UnknownConnector.java
+++ b/main/src/cgeo/geocaching/connector/UnknownConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
public class UnknownConnector extends AbstractConnector {
@@ -13,7 +14,7 @@ public class UnknownConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return null; // we have no url for these caches
}
@@ -28,7 +29,7 @@ public class UnknownConnector extends AbstractConnector {
}
@Override
- public boolean canHandle(final String geocode) {
+ public boolean canHandle(final @NonNull String geocode) {
return StringUtils.isNotBlank(geocode);
}
diff --git a/main/src/cgeo/geocaching/connector/WaymarkingConnector.java b/main/src/cgeo/geocaching/connector/WaymarkingConnector.java
index f184f6e..282ee31 100644
--- a/main/src/cgeo/geocaching/connector/WaymarkingConnector.java
+++ b/main/src/cgeo/geocaching/connector/WaymarkingConnector.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
public class WaymarkingConnector extends AbstractConnector {
@@ -13,7 +14,7 @@ public class WaymarkingConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -34,7 +35,7 @@ public class WaymarkingConnector extends AbstractConnector {
}
@Override
- public boolean canHandle(String geocode) {
+ public boolean canHandle(@NonNull String geocode) {
return StringUtils.startsWith(geocode, "WM");
}
}
diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
index ee538a3..a270e4e 100644
--- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java
+++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java
@@ -62,7 +62,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return CACHE_URL + cache.getGeocode().replace("EC", "");
}
@@ -117,7 +117,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean isActivated() {
+ public boolean isActive() {
return Settings.isECConnectorActive();
}
@@ -172,7 +172,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public String getLicenseText(final Geocache cache) {
+ public String getLicenseText(final @NonNull Geocache cache) {
// NOT TO BE TRANSLATED
return "© " + cache.getOwnerDisplayName() + ", <a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a>, CC BY-NC-ND 3.0, alle Logeinträge © jeweiliger Autor";
}
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 3faebad..1bffb3a 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -23,6 +23,7 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
import android.content.Context;
import android.os.Handler;
@@ -61,20 +62,17 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean canHandle(String geocode) {
- if (geocode == null) {
- return false;
- }
+ public boolean canHandle(@NonNull String geocode) {
return GCConnector.PATTERN_GC_CODE.matcher(geocode).matches();
}
@Override
- public String getLongCacheUrl(Geocache cache) {
+ public String getLongCacheUrl(@NonNull Geocache cache) {
return CACHE_URL_LONG + cache.getGeocode();
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return CACHE_URL_SHORT + cache.getGeocode();
}
@@ -282,7 +280,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode,
}
@Override
- public boolean isActivated() {
+ public boolean isActive() {
return Settings.isGCConnectorActive();
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
index d43d06b..ddf674f 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiConnector.java
@@ -8,6 +8,7 @@ import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.CryptUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.NonNull;
public class OCApiConnector extends OCConnector implements ISearchByGeocode {
@@ -41,7 +42,7 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
}
@Override
- public String getLicenseText(final Geocache cache) {
+ public String getLicenseText(final @NonNull Geocache cache) {
// NOT TO BE TRANSLATED
return "© " + cache.getOwnerDisplayName() + ", <a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a>, " + licenseString;
}
@@ -56,7 +57,7 @@ public class OCApiConnector extends OCConnector implements ISearchByGeocode {
}
@Override
- public boolean isActivated() {
+ public boolean isActive() {
// currently always active, but only for details download
return true;
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
index b1b9088..63ae341 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java
@@ -39,7 +39,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente
}
@Override
- public boolean isActivated() {
+ public boolean isActive() {
return Settings.isOCConnectorActive(isActivePrefKeyId);
}
diff --git a/main/src/cgeo/geocaching/connector/oc/OCConnector.java b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
index b5c62ea..1ba88d5 100644
--- a/main/src/cgeo/geocaching/connector/oc/OCConnector.java
+++ b/main/src/cgeo/geocaching/connector/oc/OCConnector.java
@@ -6,6 +6,8 @@ import cgeo.geocaching.R;
import cgeo.geocaching.connector.AbstractConnector;
import cgeo.geocaching.enumerations.LogType;
+import org.eclipse.jdt.annotation.NonNull;
+
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
@@ -27,10 +29,7 @@ public class OCConnector extends AbstractConnector {
}
@Override
- public boolean canHandle(String geocode) {
- if (geocode == null) {
- return false;
- }
+ public boolean canHandle(@NonNull String geocode) {
return codePattern.matcher(geocode).matches();
}
@@ -40,7 +39,7 @@ public class OCConnector extends AbstractConnector {
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
index af33bb6..1653838 100644
--- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java
+++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java
@@ -3,13 +3,17 @@ package cgeo.geocaching.connector.ox;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.ICache;
import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.connector.AbstractConnector;
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.settings.Settings;
import cgeo.geocaching.utils.CancellableHandler;
+import org.eclipse.jdt.annotation.NonNull;
+
import java.util.Collection;
import java.util.regex.Pattern;
@@ -17,17 +21,17 @@ import java.util.regex.Pattern;
* connector for OpenCaching.com
*
*/
-public class OXConnector extends AbstractConnector implements ISearchByCenter, ISearchByGeocode {
+public class OXConnector extends AbstractConnector implements ISearchByCenter, ISearchByGeocode, ISearchByViewPort {
private static final Pattern PATTERN_GEOCODE = Pattern.compile("OX[A-Z0-9]+", Pattern.CASE_INSENSITIVE);
@Override
- public boolean canHandle(String geocode) {
+ public boolean canHandle(@NonNull String geocode) {
return PATTERN_GEOCODE.matcher(geocode).matches();
}
@Override
- public String getCacheUrl(Geocache cache) {
+ public String getCacheUrl(@NonNull Geocache cache) {
return getCacheUrlPrefix() + cache.getGeocode();
}
@@ -42,9 +46,9 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
}
@Override
- public String getLicenseText(Geocache cache) {
+ public String getLicenseText(@NonNull Geocache cache) {
// NOT TO BE TRANSLATED
- return "<a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a> data licensed under the Creative Commons BY-SA 3.0 License";
+ return "<a href=\"" + getCacheUrl(cache) + "\">" + getName() + "</a> data licensed under the Creative Commons CC-BY-SA 3.0 License";
}
@Override
@@ -75,4 +79,18 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I
protected String getCacheUrlPrefix() {
return "http://www.opencaching.com/#!geocache/";
}
+
+ @Override
+ public SearchResult searchByViewport(Viewport viewport, String[] tokens) {
+ Collection<Geocache> caches = OpenCachingApi.searchByBoundingBox(viewport);
+ if (caches == null) {
+ return null;
+ }
+ return new SearchResult(caches);
+ }
+
+ @Override
+ public boolean isActive() {
+ return Settings.isOXConnectorActive();
+ }
}
diff --git a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
index 9d1dfc7..5e3d0a1 100644
--- a/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
+++ b/main/src/cgeo/geocaching/connector/ox/OpenCachingApi.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.connector.ox;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
+import cgeo.geocaching.geopoint.Viewport;
import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
@@ -18,13 +19,13 @@ import java.util.Collections;
public class OpenCachingApi {
+ private static final String API_URL_CACHES_GPX = "http://www.opencaching.com/api/geocache.gpx";
private static final String DEV_KEY = CryptUtils.rot13("PtqQnHo9RUTht3Np");
public static Geocache searchByGeoCode(final String geocode) {
- final HttpResponse response = Network.getRequest("http://www.opencaching.com/api/geocache/" + geocode + ".gpx",
+ final HttpResponse response = getRequest("http://www.opencaching.com/api/geocache/" + geocode + ".gpx",
new Parameters(
- "Authorization", DEV_KEY,
- "log_limit", "30",
+ "log_limit", "50",
"hint", "true",
"description", "html"));
final Collection<Geocache> caches = importCachesFromResponse(response, true);
@@ -34,6 +35,11 @@ public class OpenCachingApi {
return null;
}
+ private static HttpResponse getRequest(String string, Parameters parameters) {
+ parameters.add("Authorization", DEV_KEY);
+ return Network.getRequest(string, parameters);
+ }
+
private static Collection<Geocache> importCachesFromResponse(final HttpResponse response, final boolean isDetailed) {
if (response == null) {
return Collections.emptyList();
@@ -49,16 +55,27 @@ public class OpenCachingApi {
}
public static Collection<Geocache> searchByCenter(final Geopoint center) {
- final HttpResponse response = Network.getRequest("http://www.opencaching.com/api/geocache/.gpx",
+ final HttpResponse response = getRequest(API_URL_CACHES_GPX,
new Parameters(
- "Authorization", DEV_KEY,
"log_limit", "0",
"hint", "false",
"description", "none",
- "limit", "10",
+ "limit", "20",
"center", center.format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA)));
return importCachesFromResponse(response, false);
}
+ public static Collection<Geocache> searchByBoundingBox(final Viewport viewport) {
+ final String bbox = viewport.bottomLeft.format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA) + "," + viewport.topRight.format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA);
+ final HttpResponse response = getRequest(API_URL_CACHES_GPX,
+ new Parameters(
+ "log_limit", "0",
+ "hint", "false",
+ "description", "none",
+ "limit", "100",
+ "bbox", bbox));
+ return importCachesFromResponse(response, false);
+ }
+
}
diff --git a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
index 34b3a61..d070d71 100644
--- a/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/CoordsGeocacheListLoader.java
@@ -26,7 +26,7 @@ public class CoordsGeocacheListLoader extends AbstractSearchLoader {
}
for (ISearchByCenter centerConn : ConnectorFactory.getSearchByCenterConnectors()) {
- if (centerConn.isActivated()) {
+ if (centerConn.isActive()) {
search.addSearchResult(centerConn.searchByCenter(coords));
}
}
diff --git a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
index c8132e7..0d8fcb1 100644
--- a/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
+++ b/main/src/cgeo/geocaching/loaders/KeywordGeocacheListLoader.java
@@ -25,7 +25,7 @@ public class KeywordGeocacheListLoader extends AbstractSearchLoader {
}
for (ISearchByKeyword connector : ConnectorFactory.getSearchByKeywordConnectors()) {
- if (connector.isActivated()) {
+ if (connector.isActive()) {
searchResult.addSearchResult(connector.searchByName(keyword));
}
}
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java
index 176e07d..ca2da78 100644
--- a/main/src/cgeo/geocaching/settings/Settings.java
+++ b/main/src/cgeo/geocaching/settings/Settings.java
@@ -315,6 +315,10 @@ public class Settings {
return getBoolean(R.string.pref_connectorECActive, false);
}
+ public static boolean isOXConnectorActive() {
+ return getBoolean(R.string.pref_connectorOXActive, false);
+ }
+
public static boolean isPremiumMember() {
// Basic Member, Premium Member, ???
return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getMemberStatus());