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
{