From 891c0b64fd6c0971b139c4bd89c1b20384c4f888 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Wed, 28 Jan 2015 11:16:37 +0100 Subject: [PATCH] Hafas: Extract methods nearbyStationsByCoordinate() and nearbyStationsById(). --- .../schildbach/pte/AbstractHafasProvider.java | 40 +++++++++++-------- .../src/de/schildbach/pte/JetProvider.java | 5 +-- .../src/de/schildbach/pte/NasaProvider.java | 5 +-- .../src/de/schildbach/pte/NvvProvider.java | 5 +-- .../src/de/schildbach/pte/OebbProvider.java | 5 +-- .../src/de/schildbach/pte/SncbProvider.java | 5 +-- .../src/de/schildbach/pte/VgsProvider.java | 5 +-- 7 files changed, 29 insertions(+), 41 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 7e385fb2..fb0bacbe 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -2296,23 +2296,28 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException { if (location.hasLocation()) - { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); - } + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); else if (location.type == LocationType.STATION && location.hasId()) - { - final StringBuilder uri = new StringBuilder(stationBoardEndpoint); - appendXmlNearbyStationsParameters(uri, location.id); - - return xmlNearbyStations(uri.toString()); - } + return nearbyStationsById(location.id); else - { throw new IllegalArgumentException("cannot handle: " + location); - } + } + + protected final NearbyStationsResult nearbyStationsByCoordinate(final int lat, final int lon, final int maxDistance, final int maxStations) + throws IOException + { + final StringBuilder uri = new StringBuilder(queryEndpoint); + appendJsonNearbyStationsParameters(uri, lat, lon, maxDistance, maxStations); + + return jsonNearbyStations(uri.toString()); + } + + protected final NearbyStationsResult nearbyStationsById(final String id) throws IOException + { + final StringBuilder uri = new StringBuilder(stationBoardEndpoint); + appendXmlNearbyStationsParameters(uri, id); + + return xmlNearbyStations(uri.toString()); } protected final void appendXmlNearbyStationsParameters(final StringBuilder uri, final String stationId) @@ -2390,7 +2395,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider return new NearbyStationsResult(null, stations); } - protected void appendJsonNearbyStationsParameters(final StringBuilder uri, final Location location, final int maxDistance, final int maxStations) + protected void appendJsonNearbyStationsParameters(final StringBuilder uri, final int lat, final int lon, final int maxDistance, + final int maxStations) { uri.append('y'); uri.append("?performLocating=2&tpl=stop2json"); @@ -2398,8 +2404,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider uri.append("&look_maxdist=").append(maxDistance != 0 ? maxDistance : 5000); uri.append("&look_stopclass=").append(allProductsInt()); uri.append("&look_nv=get_stopweight|yes"); - uri.append("&look_x=").append(location.lon); - uri.append("&look_y=").append(location.lat); + uri.append("&look_x=").append(lon); + uri.append("&look_y=").append(lat); } protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException diff --git a/enabler/src/de/schildbach/pte/JetProvider.java b/enabler/src/de/schildbach/pte/JetProvider.java index 2b68b2da..ded40742 100644 --- a/enabler/src/de/schildbach/pte/JetProvider.java +++ b/enabler/src/de/schildbach/pte/JetProvider.java @@ -101,10 +101,7 @@ public class JetProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) { diff --git a/enabler/src/de/schildbach/pte/NasaProvider.java b/enabler/src/de/schildbach/pte/NasaProvider.java index d6984a3e..b64ffc76 100644 --- a/enabler/src/de/schildbach/pte/NasaProvider.java +++ b/enabler/src/de/schildbach/pte/NasaProvider.java @@ -139,10 +139,7 @@ public class NasaProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) { diff --git a/enabler/src/de/schildbach/pte/NvvProvider.java b/enabler/src/de/schildbach/pte/NvvProvider.java index f2449207..6e0955bd 100644 --- a/enabler/src/de/schildbach/pte/NvvProvider.java +++ b/enabler/src/de/schildbach/pte/NvvProvider.java @@ -162,10 +162,7 @@ public class NvvProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) { diff --git a/enabler/src/de/schildbach/pte/OebbProvider.java b/enabler/src/de/schildbach/pte/OebbProvider.java index 0bcfd610..18464891 100644 --- a/enabler/src/de/schildbach/pte/OebbProvider.java +++ b/enabler/src/de/schildbach/pte/OebbProvider.java @@ -134,10 +134,7 @@ public class OebbProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) { diff --git a/enabler/src/de/schildbach/pte/SncbProvider.java b/enabler/src/de/schildbach/pte/SncbProvider.java index bfafcf15..41f69d68 100644 --- a/enabler/src/de/schildbach/pte/SncbProvider.java +++ b/enabler/src/de/schildbach/pte/SncbProvider.java @@ -130,10 +130,7 @@ public class SncbProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) { diff --git a/enabler/src/de/schildbach/pte/VgsProvider.java b/enabler/src/de/schildbach/pte/VgsProvider.java index edcc1b10..5cb90979 100644 --- a/enabler/src/de/schildbach/pte/VgsProvider.java +++ b/enabler/src/de/schildbach/pte/VgsProvider.java @@ -126,10 +126,7 @@ public class VgsProvider extends AbstractHafasProvider { if (location.hasLocation()) { - final StringBuilder uri = new StringBuilder(queryEndpoint); - appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); - - return jsonNearbyStations(uri.toString()); + return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations); } else if (location.type == LocationType.STATION && location.hasId()) {