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