moved product filter from network providers to task

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@10 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-07-15 11:07:45 +00:00
parent d416fd35b0
commit 0388466320
5 changed files with 11 additions and 49 deletions

View file

@ -414,7 +414,7 @@ public final class BahnProvider implements NetworkProvider
private static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?<span class=\"bold\">(.*?)</span>.*?"
+ "&gt;&gt;\\n?\\s*(.+?)\\s*\\n?<br />\\n?<span class=\"bold\">(\\d+:\\d+)</span>.*?", Pattern.DOTALL);
public QueryDeparturesResult queryDepartures(final String uri, final Product[] products, final int maxDepartures) throws IOException
public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(uri);
@ -434,9 +434,8 @@ public final class BahnProvider implements NetworkProvider
if (mDepFine.matches())
{
final Departure dep = parseDeparture(mDepFine, currentTime);
if (products == null || filter(dep.line.charAt(0), products))
if (!departures.contains(dep))
departures.add(dep);
if (!departures.contains(dep))
departures.add(dep);
}
else
{
@ -477,17 +476,6 @@ public final class BahnProvider implements NetworkProvider
return new Departure(parsed.getTime(), line, lineColors, destination);
}
private boolean filter(final char line, final Product[] products)
{
final Product lineProduct = Product.fromCode(line);
for (final Product p : products)
if (lineProduct == p)
return true;
return false;
}
private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüß]+)[\\s-]*(.*)");
private static final Pattern P_NORMALIZE_LINE_SBAHN = Pattern.compile("S\\w*\\d+");
private static final Pattern P_NORMALIZE_LINE_NUMBER = Pattern.compile("\\d{4,5}");

View file

@ -473,7 +473,7 @@ public class MvvProvider implements NetworkProvider
+ "<br />\\s*(.*?)\\s*<br />.*?" // destination
+ "</td>.*?", Pattern.DOTALL);
public QueryDeparturesResult queryDepartures(final String uri, final Product[] products, final int maxDepartures) throws IOException
public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(uri);

View file

@ -125,12 +125,10 @@ public interface NetworkProvider
*
* @param queryUri
* uri constructed by {@link NetworkProvider#departuresQueryUri}
* @param products
* products to filter or {@code null} to return all products
* @param maxDepartures
* maximum number of departures to return or {@code 0}
* @return result object containing the departures
* @throws IOException
*/
QueryDeparturesResult queryDepartures(String queryUri, Product[] products, int maxDepartures) throws IOException;
QueryDeparturesResult queryDepartures(String queryUri, int maxDepartures) throws IOException;
}

View file

@ -388,7 +388,7 @@ public class RmvProvider implements NetworkProvider
+ "<b>(\\d+:\\d+)</b>.*?" // time
+ "(?:Gl\\. (\\d+)<br />.*?)?", Pattern.DOTALL);
public QueryDeparturesResult queryDepartures(final String uri, final Product[] products, final int maxDepartures) throws IOException
public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(uri);
@ -408,9 +408,8 @@ public class RmvProvider implements NetworkProvider
if (mDepFine.matches())
{
final Departure dep = parseDeparture(mDepFine, currentTime);
if (products == null || filter(dep.line.charAt(0), products))
if (!departures.contains(dep))
departures.add(dep);
if (!departures.contains(dep))
departures.add(dep);
}
else
{
@ -451,17 +450,6 @@ public class RmvProvider implements NetworkProvider
return new Departure(parsed.getTime(), line, lineColors, destination);
}
private static boolean filter(final char line, final Product[] products)
{
final Product lineProduct = Product.fromCode(line);
for (final Product p : products)
if (lineProduct == p)
return true;
return false;
}
private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüß]+)[\\s-]*(.*)");
private static String normalizeLine(final String line)

View file

@ -377,7 +377,7 @@ public final class VbbProvider implements NetworkProvider
+ "<td>\\s*<a.*?>\\s*(.*?)\\s*</a>\\s*</td>", Pattern.DOTALL);
private static final Pattern P_DEPARTURES_SERVICE_DOWN = Pattern.compile("Wartungsarbeiten");
public QueryDeparturesResult queryDepartures(final String uri, final Product[] products, final int maxDepartures) throws IOException
public QueryDeparturesResult queryDepartures(final String uri, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(uri);
@ -401,9 +401,8 @@ public final class VbbProvider implements NetworkProvider
if (mDepFine.matches())
{
final Departure dep = parseDeparture(mDepFine, currentTime);
if (products == null || filter(dep.line.charAt(0), products))
if (!departures.contains(dep))
departures.add(dep);
if (!departures.contains(dep))
departures.add(dep);
}
else
{
@ -460,17 +459,6 @@ public final class VbbProvider implements NetworkProvider
}
}
private boolean filter(final char line, final Product[] products)
{
final Product lineProduct = Product.fromCode(line);
for (final Product p : products)
if (lineProduct == p)
return true;
return false;
}
private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zÄÖÜäöüß]+)[\\s-]*(.*)");
private static final Pattern P_NORMALIZE_LINE_SPECIAL_NUMBER = Pattern.compile("\\d{4,}");
private static final Pattern P_NORMALIZE_LINE_SPECIAL_BUS = Pattern.compile("Bus[A-Z]");