From 19cb46decc04e025ec7d08d986a480494ec85ba1 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Sat, 7 May 2011 12:27:26 +0000 Subject: [PATCH] nearby stations by coordinate for Austria git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@611 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/OebbProvider.java | 25 +++++++++++++++++++ .../pte/live/OebbProviderLiveTest.java | 19 +++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index f559b29e..7760aaf2 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -38,6 +38,7 @@ import de.schildbach.pte.dto.GetConnectionDetailsResult; import de.schildbach.pte.dto.Line; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; +import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -92,6 +93,30 @@ public class OebbProvider extends AbstractHafasProvider return String.format(NEARBY_URI, ParserUtils.urlEncode(stationId)); } + @Override + public NearbyStationsResult nearbyStations(final String stationId, final int lat, final int lon, final int maxDistance, final int maxStations) + throws IOException + { + final StringBuilder uri = new StringBuilder(API_BASE); + + if (lat != 0 || lon != 0) + { + uri.append("query.exe/dny"); + uri.append("?performLocating=2&tpl=stop2json"); + uri.append("&look_maxno=").append(maxStations != 0 ? maxStations : 200); + uri.append("&look_maxdist=").append(maxDistance != 0 ? maxDistance : 5000); + uri.append("&look_stopclass=2047"); + uri.append("&look_x=").append(lon); + uri.append("&look_y=").append(lat); + + return jsonNearbyStations(uri.toString()); + } + else + { + return super.nearbyStations(stationId, lat, lon, maxDistance, maxStations); + } + } + private static final Map WALKSPEED_MAP = new HashMap(); static { diff --git a/test/de/schildbach/pte/live/OebbProviderLiveTest.java b/test/de/schildbach/pte/live/OebbProviderLiveTest.java index a8d52b21..5978db81 100644 --- a/test/de/schildbach/pte/live/OebbProviderLiveTest.java +++ b/test/de/schildbach/pte/live/OebbProviderLiveTest.java @@ -27,6 +27,7 @@ import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; +import de.schildbach.pte.dto.QueryDeparturesResult; /** * @author Andreas Schildbach @@ -37,13 +38,29 @@ public class OebbProviderLiveTest private static final String ALL_PRODUCTS = "IRSUTBFC"; @Test - public void nearbyStation() throws Exception + public void nearbyStations() throws Exception { final NearbyStationsResult result = provider.nearbyStations("902006", 0, 0, 0, 0); System.out.println(result.stations.size() + " " + result.stations); } + @Test + public void nearbyStationsByCoordinate() throws Exception + { + final NearbyStationsResult result = provider.nearbyStations(null, 48200239, 16370773, 0, 0); + + System.out.println(result.stations.size() + " " + result.stations); + } + + @Test + public void queryDepartures() throws Exception + { + final QueryDeparturesResult result = provider.queryDepartures("902006", 0, false); + + System.out.println(result.stationDepartures); + } + @Test public void shortConnection() throws Exception {