From 235573a11f2dcc821839da191e6dd32f2d047952 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach" Date: Tue, 24 Aug 2010 08:06:11 +0000 Subject: [PATCH] auto-complete station name git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@100 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/OebbProvider.java | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index ca459296..4e653d88 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -28,9 +28,30 @@ public class OebbProvider implements NetworkProvider return true; } + private static final String NAME_URL = "http://fahrplan.oebb.at/bin/stboard.exe/dn?input="; + private static final Pattern P_SINGLE_NAME = Pattern + .compile(".*?.*", Pattern.DOTALL); + private static final Pattern P_MULTI_NAME = Pattern.compile("", Pattern.DOTALL); + public List autoCompleteStationName(final CharSequence constraint) throws IOException { - throw new UnsupportedOperationException(); + final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString())); + + final List names = new ArrayList(); + + final Matcher mSingle = P_SINGLE_NAME.matcher(page); + if (mSingle.matches()) + { + names.add(ParserUtils.resolveEntities(mSingle.group(1))); + } + else + { + final Matcher mMulti = P_MULTI_NAME.matcher(page); + while (mMulti.find()) + names.add(ParserUtils.resolveEntities(mMulti.group(2))); + } + + return names; } public List nearbyStations(final double lat, final double lon, final int maxDistance, final int maxStations) throws IOException