From dfa35cbccf564042b60eadc0eebffabcb79e0cb4 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Thu, 13 Jan 2011 12:26:59 +0000 Subject: [PATCH] use API for autocompletes git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@449 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/BahnProvider.java | 32 ++----------------- .../pte/live/BahnProviderLiveTest.java | 25 +++++++++++++++ 2 files changed, 28 insertions(+), 29 deletions(-) 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 {