diff options
Diffstat (limited to 'main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java')
-rw-r--r-- | main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java b/main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java index 03052f9..6f3749c 100644 --- a/main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java +++ b/main/src/cgeo/geocaching/connector/trackable/GeokretyConnector.java @@ -15,17 +15,19 @@ public class GeokretyConnector extends AbstractTrackableConnector { private static final Pattern PATTERN_GK_CODE = Pattern.compile("GK[0-9A-F]{4,}"); @Override - public boolean canHandleTrackable(String geocode) { + public boolean canHandleTrackable(final String geocode) { return geocode != null && PATTERN_GK_CODE.matcher(geocode).matches(); } @Override - public String getUrl(Trackable trackable) { + @NonNull + public String getUrl(@NonNull final Trackable trackable) { return "http://geokrety.org/konkret.php?id=" + getId(trackable.getGeocode()); } @Override - public Trackable searchTrackable(String geocode, String guid, String id) { + @Nullable + public Trackable searchTrackable(final String geocode, final String guid, final String id) { final String page = Network.getResponseData(Network.getRequest("http://geokrety.org/export2.php?gkid=" + getId(geocode))); if (page == null) { return null; @@ -33,32 +35,35 @@ public class GeokretyConnector extends AbstractTrackableConnector { return GeokretyParser.parse(page); } - protected static int getId(String geocode) { + protected static int getId(final String geocode) { try { final String hex = geocode.substring(2); return Integer.parseInt(hex, 16); } catch (final NumberFormatException e) { - Log.e("Trackable.getUrl", e); + Log.e("Trackable.getId", e); } return -1; } @Override public @Nullable - String getTrackableCodeFromUrl(@NonNull String url) { + String getTrackableCodeFromUrl(@NonNull final String url) { // http://geokrety.org/konkret.php?id=38545 String id = StringUtils.substringAfterLast(url, "konkret.php?id="); if (StringUtils.isNumeric(id)) { return geocode(Integer.parseInt(id)); } + // http://geokretymap.org/38545 + id = StringUtils.substringAfterLast(url, "geokretymap.org/"); + if (StringUtils.isNumeric(id)) { + return geocode(Integer.parseInt(id)); + } return null; } /** * Get geocode from geokrety id * - * @param id - * @return */ public static String geocode(final int id) { return String.format("GK%04X", id); |