From 3c614f03b3e4d132286324c4d6788567eb5f05dd Mon Sep 17 00:00:00 2001 From: "andreas.schildbach" Date: Fri, 27 Aug 2010 16:00:43 +0000 Subject: [PATCH] use parameter rather than fail-prone nearby station logic git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@112 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/OebbProvider.java | 47 +++++++++++-------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index d5318151..6435b2c0 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -359,15 +359,14 @@ public class OebbProvider implements NetworkProvider public String departuresQueryUri(final String stationId, final int maxDepartures) { final StringBuilder uri = new StringBuilder(); - uri.append("http://fahrplan.oebb.at/bin/stboard.exe/dn"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); uri.append("&productsFilter=111111111111"); if (maxDepartures != 0) uri.append("&maxJourneys=").append(maxDepartures); + uri.append("&disableEquivs=yes"); // don't use nearby stations uri.append("&start=yes"); - return uri.toString(); } @@ -388,11 +387,10 @@ public class OebbProvider implements NetworkProvider private static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?" // + "(\\d+:\\d+).*?" // time + "\\s*(.*?)\\s*\n?" // + + "\n" // + "" // destinationId - + "\\s*(.*?)\\s*\n?" // destination + + "\\s*(.*?)\\s*\n" // destination + ".*?" // - + "(?:\\s*(.*?)\\s*.*?)?" // other stop , Pattern.DOTALL); public QueryDeparturesResult queryDepartures(final String uri) throws IOException @@ -427,34 +425,29 @@ public class OebbProvider implements NetworkProvider final Matcher mDepFine = P_DEPARTURES_FINE.matcher(mDepCoarse.group(1)); if (mDepFine.matches()) { - final String otherStop = mDepFine.group(6); + final Calendar current = new GregorianCalendar(); + current.setTime(currentTime); + final Calendar parsed = new GregorianCalendar(); + parsed.setTime(ParserUtils.parseTime(mDepFine.group(1))); + parsed.set(Calendar.YEAR, current.get(Calendar.YEAR)); + parsed.set(Calendar.MONTH, current.get(Calendar.MONTH)); + parsed.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH)); + if (ParserUtils.timeDiff(parsed.getTime(), currentTime) < -PARSER_DAY_ROLLOVER_THRESHOLD_MS) + parsed.add(Calendar.DAY_OF_MONTH, 1); - if (otherStop == null || otherStop.contains(" ")) - { - final Calendar current = new GregorianCalendar(); - current.setTime(currentTime); - final Calendar parsed = new GregorianCalendar(); - parsed.setTime(ParserUtils.parseTime(mDepFine.group(1))); - parsed.set(Calendar.YEAR, current.get(Calendar.YEAR)); - parsed.set(Calendar.MONTH, current.get(Calendar.MONTH)); - parsed.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH)); - if (ParserUtils.timeDiff(parsed.getTime(), currentTime) < -PARSER_DAY_ROLLOVER_THRESHOLD_MS) - parsed.add(Calendar.DAY_OF_MONTH, 1); + final String lineType = mDepFine.group(2); - final String lineType = mDepFine.group(2); + final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(3))); - final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(3))); + final int destinationId = mDepFine.group(4) != null ? Integer.parseInt(mDepFine.group(4)) : 0; - final int destinationId = mDepFine.group(4) != null ? Integer.parseInt(mDepFine.group(4)) : 0; + final String destination = ParserUtils.resolveEntities(mDepFine.group(5)); - final String destination = ParserUtils.resolveEntities(mDepFine.group(5)); + final Departure dep = new Departure(parsed.getTime(), line, line != null ? LINES.get(line.charAt(0)) : null, destinationId, + destination); - final Departure dep = new Departure(parsed.getTime(), line, line != null ? LINES.get(line.charAt(0)) : null, - destinationId, destination); - - if (!departures.contains(dep)) - departures.add(dep); - } + if (!departures.contains(dep)) + departures.add(dep); } else {