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