diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java
index 202cd229..1e71d0ae 100644
--- a/src/de/schildbach/pte/BvgProvider.java
+++ b/src/de/schildbach/pte/BvgProvider.java
@@ -59,9 +59,13 @@ public final class BvgProvider extends AbstractHafasProvider
private static final String BASE_URL = "http://mobil.bvg.de";
private static final String API_BASE = BASE_URL + "/Fahrinfo/bin/";
- public BvgProvider()
+ private final String additionalQueryParameter;
+
+ public BvgProvider(final String additionalQueryParameter)
{
super(null, null);
+
+ this.additionalQueryParameter = additionalQueryParameter;
}
public NetworkId id()
@@ -78,7 +82,6 @@ public final class BvgProvider extends AbstractHafasProvider
return true;
}
- private static final String AUTOCOMPLETE_NAME_URL = API_BASE + "stboard.bin/dox/dox?input=%s";
private static final Pattern P_SINGLE_NAME = Pattern.compile(".*?Haltestelleninfo.*?(.*?).*?input=(\\d+)&.*?", Pattern.DOTALL);
private static final Pattern P_MULTI_NAME = Pattern.compile("\\s*(.*?)\\s*",
Pattern.DOTALL);
@@ -86,10 +89,14 @@ public final class BvgProvider extends AbstractHafasProvider
@Override
public List autocompleteStations(final CharSequence constraint) throws IOException
{
- final List results = new ArrayList();
+ final StringBuilder uri = new StringBuilder(API_BASE).append("stboard.bin/dox/dox");
+ uri.append("?input=").append(ParserUtils.urlEncode(constraint.toString()));
+ if (additionalQueryParameter != null)
+ uri.append('&').append(additionalQueryParameter);
- final String uri = String.format(AUTOCOMPLETE_NAME_URL, ParserUtils.urlEncode(constraint.toString()));
- final CharSequence page = ParserUtils.scrape(uri);
+ final CharSequence page = ParserUtils.scrape(uri.toString());
+
+ final List results = new ArrayList();
final Matcher mSingle = P_SINGLE_NAME.matcher(page);
if (mSingle.matches())
@@ -271,6 +278,9 @@ public final class BvgProvider extends AbstractHafasProvider
// TODO Ruftaxi wäre wohl &REQ0JourneyProduct_prod_section_0_7=1
}
+ if (additionalQueryParameter != null)
+ uri.append('&').append(additionalQueryParameter);
+
return uri.toString();
}
@@ -627,6 +637,8 @@ public final class BvgProvider extends AbstractHafasProvider
final StringBuilder uri = new StringBuilder();
uri.append(DEPARTURE_URL_LIVE);
uri.append("input=").append(stationId);
+ if (additionalQueryParameter != null)
+ uri.append('&').append(additionalQueryParameter);
return uri.toString();
}
@@ -638,6 +650,8 @@ public final class BvgProvider extends AbstractHafasProvider
uri.append(DEPARTURE_URL_PLAN);
uri.append("input=").append(stationId);
uri.append("&maxJourneys=").append(maxDepartures != 0 ? maxDepartures : 50);
+ if (additionalQueryParameter != null)
+ uri.append('&').append(additionalQueryParameter);
return uri.toString();
}
diff --git a/test/de/schildbach/pte/live/BvgProviderLiveTest.java b/test/de/schildbach/pte/live/BvgProviderLiveTest.java
index 9343daba..2d0e6f81 100644
--- a/test/de/schildbach/pte/live/BvgProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/BvgProviderLiveTest.java
@@ -35,7 +35,7 @@ import de.schildbach.pte.dto.QueryDeparturesResult;
*/
public class BvgProviderLiveTest
{
- private BvgProvider provider = new BvgProvider();
+ private BvgProvider provider = new BvgProvider(null);
private static final String ALL_PRODUCTS = "IRSUTBFC";
@Test