diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java
index 69429018..c2a33fd8 100644
--- a/src/de/schildbach/pte/BahnProvider.java
+++ b/src/de/schildbach/pte/BahnProvider.java
@@ -54,7 +54,7 @@ public final class BahnProvider extends AbstractHafasProvider
public BahnProvider()
{
- super(null, null);
+ super("http://reiseauskunft.bahn.de/bin/extxml.exe", null);
}
public NetworkId id()
@@ -67,33 +67,6 @@ public final class BahnProvider extends AbstractHafasProvider
return true;
}
- private static final String NAME_URL = API_BASE + "bhftafel.exe/dox?input=";
- private static final Pattern P_SINGLE_NAME = Pattern.compile(".*.*",
- Pattern.DOTALL);
- private static final Pattern P_MULTI_NAME = Pattern.compile("", Pattern.DOTALL);
-
- @Override
- public List autocompleteStations(final CharSequence constraint) throws IOException
- {
- final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString()));
-
- final List results = new ArrayList();
-
- final Matcher mSingle = P_SINGLE_NAME.matcher(page);
- if (mSingle.matches())
- {
- results.add(new Location(LocationType.STATION, Integer.parseInt(mSingle.group(2)), null, ParserUtils.resolveEntities(mSingle.group(1))));
- }
- else
- {
- final Matcher mMulti = P_MULTI_NAME.matcher(page);
- while (mMulti.find())
- results.add(new Location(LocationType.STATION, Integer.parseInt(mMulti.group(1)), null, ParserUtils.resolveEntities(mMulti.group(2))));
- }
-
- return results;
- }
-
private final static Pattern P_NEARBY_STATIONS = Pattern
.compile("(.+?)");
@@ -468,7 +441,8 @@ public final class BahnProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
- final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
+ final String uri = departuresQueryUri(stationId, maxDepartures);
+ final CharSequence page = ParserUtils.scrape(uri);
final Matcher mMessage = P_DEPARTURES_MESSAGES.matcher(page);
if (mMessage.find())
diff --git a/test/de/schildbach/pte/live/BahnProviderLiveTest.java b/test/de/schildbach/pte/live/BahnProviderLiveTest.java
index 9d678f51..89951c23 100644
--- a/test/de/schildbach/pte/live/BahnProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/BahnProviderLiveTest.java
@@ -18,6 +18,7 @@
package de.schildbach.pte.live;
import java.util.Date;
+import java.util.List;
import org.junit.Test;
@@ -44,6 +45,30 @@ public class BahnProviderLiveTest
System.out.println(queryDepartures.departures);
}
+ @Test
+ public void autocompleteIncomplete() throws Exception
+ {
+ final List autocompletes = provider.autocompleteStations("Be");
+
+ list(autocompletes);
+ }
+
+ @Test
+ public void autocompleteIdentified() throws Exception
+ {
+ final List autocompletes = provider.autocompleteStations("Berlin");
+
+ list(autocompletes);
+ }
+
+ private void list(final List autocompletes)
+ {
+ System.out.print(autocompletes.size() + " ");
+ for (final Location autocomplete : autocompletes)
+ System.out.print(autocomplete.toDebugString() + " ");
+ System.out.println();
+ }
+
@Test
public void shortConnection() throws Exception
{