diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index e7d109a8..9ddb870b 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -414,7 +414,7 @@ public final class BahnProvider implements NetworkProvider private static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?(.*?).*?" + ">>\\n?\\s*(.+?)\\s*\\n?
\\n?(\\d+:\\d+).*?", Pattern.DOTALL); - public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException + public QueryDeparturesResult queryDepartures(final String uri) throws IOException { final CharSequence page = ParserUtils.scrape(uri); @@ -424,11 +424,11 @@ public final class BahnProvider implements NetworkProvider { final String location = ParserUtils.resolveEntities(mHead.group(1)); final Date currentTime = ParserUtils.joinDateTime(ParserUtils.parseDate(mHead.group(3)), ParserUtils.parseTime(mHead.group(2))); - final List departures = new ArrayList(maxDepartures); + final List departures = new ArrayList(8); // choose matcher final Matcher mDepCoarse = P_DEPARTURES_COARSE.matcher(page); - while (mDepCoarse.find() && (maxDepartures == 0 || departures.size() < maxDepartures)) + while (mDepCoarse.find()) { final Matcher mDepFine = P_DEPARTURES_FINE.matcher(mDepCoarse.group(1)); if (mDepFine.matches()) @@ -443,7 +443,7 @@ public final class BahnProvider implements NetworkProvider } } - return new QueryDeparturesResult(location, currentTime, departures); + return new QueryDeparturesResult(uri, location, currentTime, departures); } else { diff --git a/src/de/schildbach/pte/MvvProvider.java b/src/de/schildbach/pte/MvvProvider.java index 9989126c..3e12c2e1 100644 --- a/src/de/schildbach/pte/MvvProvider.java +++ b/src/de/schildbach/pte/MvvProvider.java @@ -473,7 +473,7 @@ public class MvvProvider implements NetworkProvider + "
\\s*(.*?)\\s*
.*?" // destination + ".*?", Pattern.DOTALL); - public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException + public QueryDeparturesResult queryDepartures(final String uri) throws IOException { final CharSequence page = ParserUtils.scrape(uri); @@ -482,12 +482,12 @@ public class MvvProvider implements NetworkProvider { final String location = ParserUtils.resolveEntities(mHead.group(1)); final Date currentTime = parseDate(mHead.group(2), mHead.group(3), mHead.group(4)); - final List departures = new ArrayList(maxDepartures); + final List departures = new ArrayList(8); final Calendar calendar = new GregorianCalendar(); final Matcher mDepCoarse = P_DEPARTURES_COARSE.matcher(page); - while (mDepCoarse.find() && (maxDepartures == 0 || departures.size() < maxDepartures)) + while (mDepCoarse.find()) { final Matcher mDepFine = P_DEPARTURES_FINE.matcher(mDepCoarse.group(1)); if (mDepFine.matches()) @@ -512,7 +512,7 @@ public class MvvProvider implements NetworkProvider } } - return new QueryDeparturesResult(location, currentTime, departures); + return new QueryDeparturesResult(uri, location, currentTime, departures); } else { diff --git a/src/de/schildbach/pte/NetworkProvider.java b/src/de/schildbach/pte/NetworkProvider.java index 80b95a39..3b19d600 100644 --- a/src/de/schildbach/pte/NetworkProvider.java +++ b/src/de/schildbach/pte/NetworkProvider.java @@ -125,10 +125,8 @@ public interface NetworkProvider * * @param queryUri * uri constructed by {@link NetworkProvider#departuresQueryUri} - * @param maxDepartures - * maximum number of departures to return or {@code 0} * @return result object containing the departures * @throws IOException */ - QueryDeparturesResult queryDepartures(String queryUri, int maxDepartures) throws IOException; + QueryDeparturesResult queryDepartures(String queryUri) throws IOException; } diff --git a/src/de/schildbach/pte/QueryDeparturesResult.java b/src/de/schildbach/pte/QueryDeparturesResult.java index 6edde9b1..57541ac4 100644 --- a/src/de/schildbach/pte/QueryDeparturesResult.java +++ b/src/de/schildbach/pte/QueryDeparturesResult.java @@ -25,15 +25,17 @@ import java.util.List; */ public final class QueryDeparturesResult { - public static final QueryDeparturesResult NO_INFO = new QueryDeparturesResult(null, null, null); - public static final QueryDeparturesResult SERVICE_DOWN = new QueryDeparturesResult(null, null, null); + public static final QueryDeparturesResult NO_INFO = new QueryDeparturesResult(null, null, null, null); + public static final QueryDeparturesResult SERVICE_DOWN = new QueryDeparturesResult(null, null, null, null); + public final String uri; public final String location; public final Date currentTime; public final List departures; - public QueryDeparturesResult(final String location, final Date currentTime, final List departures) + public QueryDeparturesResult(final String uri, final String location, final Date currentTime, final List departures) { + this.uri = uri; this.location = location; this.currentTime = currentTime; this.departures = departures; diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index 33b01f3b..84b0b394 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -388,7 +388,7 @@ public class RmvProvider implements NetworkProvider + "(\\d+:\\d+).*?" // time + "(?:Gl\\. (\\d+)
.*?)?", Pattern.DOTALL); - public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException + public QueryDeparturesResult queryDepartures(final String uri) throws IOException { final CharSequence page = ParserUtils.scrape(uri); @@ -398,11 +398,11 @@ public class RmvProvider implements NetworkProvider { final String location = ParserUtils.resolveEntities(mHead.group(1)); final Date currentTime = ParserUtils.joinDateTime(ParserUtils.parseDate(mHead.group(3)), ParserUtils.parseTime(mHead.group(2))); - final List departures = new ArrayList(maxDepartures); + final List departures = new ArrayList(8); // choose matcher final Matcher mDepCoarse = P_DEPARTURES_COARSE.matcher(page); - while (mDepCoarse.find() && (maxDepartures == 0 || departures.size() < maxDepartures)) + while (mDepCoarse.find()) { final Matcher mDepFine = P_DEPARTURES_FINE.matcher(mDepCoarse.group(1)); if (mDepFine.matches()) @@ -417,7 +417,7 @@ public class RmvProvider implements NetworkProvider } } - return new QueryDeparturesResult(location, currentTime, departures); + return new QueryDeparturesResult(uri, location, currentTime, departures); } else { diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java index c83f5958..e5b9daf3 100644 --- a/src/de/schildbach/pte/VbbProvider.java +++ b/src/de/schildbach/pte/VbbProvider.java @@ -377,7 +377,7 @@ public final class VbbProvider implements NetworkProvider + "\\s*\\s*(.*?)\\s*\\s*", Pattern.DOTALL); private static final Pattern P_DEPARTURES_SERVICE_DOWN = Pattern.compile("Wartungsarbeiten"); - public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException + public QueryDeparturesResult queryDepartures(final String uri) throws IOException { final CharSequence page = ParserUtils.scrape(uri); @@ -390,11 +390,11 @@ public final class VbbProvider implements NetworkProvider { final String location = ParserUtils.resolveEntities(mHead.group(1)); final Date currentTime = parseDate(mHead.group(2)); - final List departures = new ArrayList(maxDepartures); + final List departures = new ArrayList(8); // choose matcher final Matcher mDepCoarse = P_DEPARTURES_COARSE.matcher(page); - while (mDepCoarse.find() && (maxDepartures == 0 || departures.size() < maxDepartures)) + while (mDepCoarse.find()) { final boolean live = uri.contains("IstAbfahrtzeiten"); final Matcher mDepFine = (live ? P_DEPARTURES_LIVE_FINE : P_DEPARTURES_PLAN_FINE).matcher(mDepCoarse.group(1)); @@ -410,7 +410,7 @@ public final class VbbProvider implements NetworkProvider } } - return new QueryDeparturesResult(location, currentTime, departures); + return new QueryDeparturesResult(uri, location, currentTime, departures); } else {