From 4b01252c7147329cd7c7dea76b9d538d3b05ad9a Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Wed, 9 Mar 2011 20:07:24 +0000 Subject: [PATCH] append special query parameter git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@530 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- .../schildbach/pte/AbstractEfaProvider.java | 28 +++++++++++++++---- src/de/schildbach/pte/GvhProvider.java | 5 ++++ .../pte/live/GvhProviderLiveTest.java | 2 +- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 096a1073..8f2d53f4 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -64,8 +64,14 @@ import de.schildbach.pte.util.XmlPullUtil; public abstract class AbstractEfaProvider implements NetworkProvider { final XmlPullParserFactory parserFactory; + final String additionalQueryParameter; public AbstractEfaProvider() + { + this(null); + } + + public AbstractEfaProvider(final String additionalQueryParameter) { try { @@ -75,6 +81,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider { throw new RuntimeException(x); } + + this.additionalQueryParameter = additionalQueryParameter; } protected TimeZone timeZone() @@ -82,11 +90,19 @@ public abstract class AbstractEfaProvider implements NetworkProvider return TimeZone.getTimeZone("Europe/Berlin"); } + private String wrapUri(final String uri) + { + if (additionalQueryParameter == null) + return uri; + else + return uri + "&" + additionalQueryParameter; + } + protected abstract String autocompleteUri(final CharSequence constraint); public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = autocompleteUri(constraint); + final String uri = wrapUri(autocompleteUri(constraint)); InputStream is = null; try @@ -266,9 +282,9 @@ public abstract class AbstractEfaProvider implements NetworkProvider { String uri = null; if (uri == null && stationId != null) - uri = nearbyStationUri(stationId); + uri = wrapUri(nearbyStationUri(stationId)); if (uri == null && (lat != 0 || lon != 0)) - uri = nearbyLatLonUri(lat, lon); + uri = wrapUri(nearbyLatLonUri(lat, lon)); if (uri == null) throw new IllegalArgumentException("at least one of stationId or lat/lon must be given"); @@ -851,8 +867,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures, final boolean equivs) throws IOException { - final String uri = departuresQueryUri(stationId, maxDepartures) - + "&outputFormat=XML&coordOutputFormat=WGS84&mode=direct&deleteAssignedStops_dm=" + (equivs ? "0" : "1"); + final String uri = wrapUri(departuresQueryUri(stationId, maxDepartures) + + "&outputFormat=XML&coordOutputFormat=WGS84&mode=direct&deleteAssignedStops_dm=" + (equivs ? "0" : "1")); InputStream is = null; try @@ -1111,7 +1127,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider public QueryConnectionsResult queryConnections(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products, final WalkSpeed walkSpeed) throws IOException { - final String uri = connectionsQueryUri(from, via, to, date, dep, products, walkSpeed) + "&sessionID=0"; + final String uri = wrapUri(connectionsQueryUri(from, via, to, date, dep, products, walkSpeed) + "&sessionID=0"); InputStream is = null; try diff --git a/src/de/schildbach/pte/GvhProvider.java b/src/de/schildbach/pte/GvhProvider.java index 1ea1070f..c2db0537 100644 --- a/src/de/schildbach/pte/GvhProvider.java +++ b/src/de/schildbach/pte/GvhProvider.java @@ -36,6 +36,11 @@ public class GvhProvider extends AbstractEfaProvider public static final String OLD_NETWORK_ID = "mobil.gvh.de"; private static final String API_BASE = "http://mobil.efa.de/mobile3/"; + public GvhProvider(final String additionalQueryParameter) + { + super(additionalQueryParameter); + } + public NetworkId id() { return NETWORK_ID; diff --git a/test/de/schildbach/pte/live/GvhProviderLiveTest.java b/test/de/schildbach/pte/live/GvhProviderLiveTest.java index 7dd649d5..6220e959 100644 --- a/test/de/schildbach/pte/live/GvhProviderLiveTest.java +++ b/test/de/schildbach/pte/live/GvhProviderLiveTest.java @@ -34,7 +34,7 @@ import de.schildbach.pte.dto.QueryConnectionsResult; */ public class GvhProviderLiveTest { - private final GvhProvider provider = new GvhProvider(); + private final GvhProvider provider = new GvhProvider(null); private static final String ALL_PRODUCTS = "IRSUTBFC"; @Test