prepare for multiple stations per queryDepartures call

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@487 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-02-09 16:02:41 +00:00
parent 39fe5d52df
commit 5fe5f9f4e1
47 changed files with 260 additions and 113 deletions

View file

@ -43,6 +43,7 @@ import de.schildbach.pte.dto.Fare;
import de.schildbach.pte.dto.Fare.Type;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
@ -957,11 +958,13 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.exit(pp, "itdDepartureList");
}
return new QueryDeparturesResult(location, departures, lines);
final QueryDeparturesResult result = new QueryDeparturesResult();
result.stationDepartures.add(new StationDepartures(location, departures, lines));
return result;
}
else if ("notidentified".equals(nameState))
{
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION);
}
else
{

View file

@ -38,6 +38,7 @@ import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.Station;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.exception.SessionExpiredException;
import de.schildbach.pte.util.ParserUtils;
@ -453,9 +454,13 @@ public final class BahnProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mMessage = P_DEPARTURES_MESSAGES.matcher(page);
if (mMessage.find())
{
@ -463,10 +468,13 @@ public final class BahnProvider extends AbstractHafasProvider
final String text = mMessage.group(2);
if (code.equals("H730")) // Your input is not valid
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION, Integer.parseInt(stationId));
if (code.equals("H890")) // No trains in result
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION);
if (code.equals("H890"))
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
throw new IllegalArgumentException("unknown error " + code + ", " + text);
}
@ -510,7 +518,8 @@ public final class BahnProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), departures, null));
return result;
}
@Override

View file

@ -41,6 +41,7 @@ import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.Station;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.exception.SessionExpiredException;
import de.schildbach.pte.util.Color;
import de.schildbach.pte.util.ParserUtils;
@ -630,8 +631,11 @@ public final class BvgProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
if (stationId.length() == 6) // live
{
// scrape page
final String uri = departuresQueryLiveUri(stationId);
final CharSequence page = ParserUtils.scrape(uri);
@ -639,9 +643,9 @@ public final class BvgProvider extends AbstractHafasProvider
if (mError.find())
{
if (mError.group(1) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
if (mError.group(2) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
if (mError.group(3) != null)
throw new IOException("connected to private wlan");
}
@ -699,7 +703,9 @@ public final class BvgProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{
@ -708,6 +714,7 @@ public final class BvgProvider extends AbstractHafasProvider
}
else
{
// scrape page
final String uri = departuresQueryPlanUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
@ -715,9 +722,9 @@ public final class BvgProvider extends AbstractHafasProvider
if (mError.find())
{
if (mError.group(1) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
if (mError.group(2) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
if (mError.group(3) != null)
throw new IOException("connected to private wlan");
}
@ -768,7 +775,9 @@ public final class BvgProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -34,6 +34,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -155,6 +156,8 @@ public class InvgProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
@ -165,12 +168,15 @@ public class InvgProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
else if (mHeadCoarse.group(5) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(6) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final int locationId = Integer.parseInt(mHeadCoarse.group(2));
@ -240,7 +246,9 @@ public class InvgProvider extends AbstractHafasProvider
}
final String[] nameAndPlace = splitNameAndPlace(location);
return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, nameAndPlace[0], nameAndPlace[1]), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, locationId, nameAndPlace[0], nameAndPlace[1]),
departures, null));
return result;
}
else
{

View file

@ -36,6 +36,7 @@ import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -134,8 +135,11 @@ public class NasaProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -143,12 +147,15 @@ public class NasaProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
else if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(5) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
if (mHeadFine.matches())
@ -215,7 +222,9 @@ public class NasaProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -31,6 +31,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -108,7 +109,11 @@ public class NsProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -116,9 +121,9 @@ public class NsProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
if (mHeadFine.matches())
@ -161,7 +166,9 @@ public class NsProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -40,6 +40,7 @@ import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.exception.SessionExpiredException;
import de.schildbach.pte.util.ParserUtils;
@ -530,14 +531,18 @@ public class OebbProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
// scrape page
final String page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures)).toString().substring(14);
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final String page = ParserUtils.scrape(uri).toString().substring(14);
// parse page
final Matcher mError = P_DEPARTURES_ERROR.matcher(page);
if (mError.find())
{
if (mError.group(1) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
}
try
@ -547,7 +552,7 @@ public class OebbProvider extends AbstractHafasProvider
final int locationId = head.optInt("stationEvaId", -1);
// final boolean rt = head.optBoolean("rtInfo");
if (locationId == -1)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
final List<Departure> departures = new ArrayList<Departure>(8);
@ -575,7 +580,8 @@ public class OebbProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, locationId, null, location), departures, null));
return result;
}
catch (final JSONException x)
{

View file

@ -38,6 +38,7 @@ import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -465,7 +466,11 @@ public class RmvProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -473,9 +478,9 @@ public class RmvProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(5) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final int locationId = Integer.parseInt(mHeadCoarse.group(3));
@ -536,7 +541,9 @@ public class RmvProvider extends AbstractHafasProvider
}
final String[] nameAndPlace = splitNameAndPlace(location);
return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, nameAndPlace[0], nameAndPlace[1]), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, locationId, nameAndPlace[0], nameAndPlace[1]),
departures, null));
return result;
}
else
{

View file

@ -32,6 +32,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -115,6 +116,9 @@ public class SbbProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
@ -124,12 +128,15 @@ public class SbbProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
else if (mHeadCoarse.group(5) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(6) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final String head = mHeadCoarse.group(1) + mHeadCoarse.group(4);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(head);
@ -182,7 +189,8 @@ public class SbbProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, locationId, null, location), departures, null));
return result;
}
else
{

View file

@ -34,6 +34,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -154,6 +155,8 @@ public class SeptaProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
@ -164,12 +167,15 @@ public class SeptaProvider extends AbstractHafasProvider
{
// messages
if (mPageCoarse.group(5) != null)
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
else if (mPageCoarse.group(6) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mPageCoarse.group(7) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final String location = ParserUtils.resolveEntities(mPageCoarse.group(1));
final Date currentTime = ParserUtils.joinDateTime(ParserUtils.parseAmericanDate(mPageCoarse.group(2)),
@ -234,7 +240,9 @@ public class SeptaProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -31,6 +31,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -108,7 +109,11 @@ public class SncbProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -116,9 +121,9 @@ public class SncbProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
if (mHeadFine.matches())
@ -161,7 +166,9 @@ public class SncbProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -36,6 +36,7 @@ import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -133,8 +134,11 @@ public class VgsProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -142,12 +146,15 @@ public class VgsProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId)),
Collections.<Departure> emptyList(), null);
{
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId)), Collections
.<Departure> emptyList(), null));
return result;
}
else if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(5) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
if (mHeadFine.matches())
@ -214,7 +221,9 @@ public class VgsProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{

View file

@ -17,6 +17,7 @@
package de.schildbach.pte.dto;
import java.util.LinkedList;
import java.util.List;
/**
@ -30,24 +31,16 @@ public final class QueryDeparturesResult
}
public final Status status;
public final Location location;
public final List<Departure> departures;
public final List<Line> lines;
public final List<StationDepartures> stationDepartures = new LinkedList<StationDepartures>();
public QueryDeparturesResult(final Location location, final List<Departure> departures, final List<Line> lines)
public QueryDeparturesResult()
{
this.status = Status.OK;
this.location = location;
this.departures = departures;
this.lines = lines;
}
public QueryDeparturesResult(final Status status, final int locationId)
public QueryDeparturesResult(final Status status)
{
this.status = status;
this.location = new Location(LocationType.STATION, locationId);
this.departures = null;
this.lines = null;
}
@Override
@ -55,10 +48,7 @@ public final class QueryDeparturesResult
{
final StringBuilder builder = new StringBuilder(getClass().getName());
builder.append("[").append(this.status);
if (location != null)
builder.append(" ").append(location.toDebugString());
if (departures != null)
builder.append(" ").append(departures.size()).append(" departures");
builder.append(" ").append(stationDepartures);
builder.append("]");
return builder.toString();
}

View file

@ -0,0 +1,50 @@
/*
* Copyright 2010 the original author or authors.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.dto;
import java.util.List;
/**
* @author Andreas Schildbach
*/
public final class StationDepartures
{
public final Location location;
public final List<Departure> departures;
public final List<Line> lines;
public StationDepartures(final Location location, final List<Departure> departures, final List<Line> lines)
{
this.location = location;
this.departures = departures;
this.lines = lines;
}
@Override
public String toString()
{
final StringBuilder builder = new StringBuilder(getClass().getName());
builder.append("[");
if (location != null)
builder.append(location.toDebugString());
if (departures != null)
builder.append(" ").append(departures.size()).append(" departures");
builder.append("]");
return builder.toString();
}
}

View file

@ -43,6 +43,6 @@ public class AtcProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("Bologna", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class AvvProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("100", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -39,10 +39,11 @@ public class BahnProviderLiveTest
protected static final String ALL_PRODUCTS = "IRSUTBFC";
@Test
public void departures() throws Exception
public void queryDepartures() throws Exception
{
final QueryDeparturesResult queryDepartures = provider.queryDepartures("692991", 0);
System.out.println(queryDepartures.departures);
final QueryDeparturesResult result = provider.queryDepartures("692991", 0);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class BvbProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("10000", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -63,10 +63,11 @@ public class BvgProviderLiveTest
}
@Test
public void departures() throws Exception
public void queryDepartures() throws Exception
{
final QueryDeparturesResult queryDepartures = provider.queryDepartures("309557", 0);
System.out.println(queryDepartures.departures);
final QueryDeparturesResult result = provider.queryDepartures("309557", 0);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class DingProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("Ulm", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class InvgProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("80301", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -50,7 +50,7 @@ public class KvvProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("119", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class MariborProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("63203067", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class MetProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("10001167", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class NaldoProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("53019174", 0);
System.out.println(result.location.toDebugString() + " " + result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class NasaProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("13000", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -42,7 +42,7 @@ public class NsProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("100080", 0);
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -39,10 +39,10 @@ public class RmvProviderLiveTest
}
@Test
public void departures() throws Exception
public void queryDepartures() throws Exception
{
final QueryDeparturesResult queryDepartures = provider.queryDepartures("3000001", 0);
final QueryDeparturesResult result = provider.queryDepartures("3000001", 0);
System.out.println(queryDepartures.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -67,7 +67,7 @@ public class SbbProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("8500010", 0);
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -43,6 +43,6 @@ public class SeptaProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("1000002", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class SfProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("10010813", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -42,7 +42,7 @@ public class SncbProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("100080", 0);
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class StvProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("Graz", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class SvvProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("60650002", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -50,7 +50,7 @@ public class TflProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("1000086", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
@Test

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class TlemProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("London", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class TlswProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("247616", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class VblProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("717", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class VgsProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("8000244", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class VmsProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("Chemnitz", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class VmvProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("6118", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import java.util.List;
@ -81,10 +82,10 @@ public class VrnProviderLiveTest
}
@Test
public void departures() throws Exception
public void queryDepartures() throws Exception
{
final QueryDeparturesResult result = provider.queryDepartures("6032236", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import java.util.List;
@ -73,10 +74,10 @@ public class VrrProviderLiveTest
}
@Test
public void departures() throws Exception
public void queryDepartures() throws Exception
{
final QueryDeparturesResult result = provider.queryDepartures("1007258", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class VrtProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("17001301", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -43,6 +43,6 @@ public class VvmProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("3000510", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class VvoProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("100", 0);
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}

View file

@ -14,6 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.live;
import org.junit.Test;
@ -42,6 +43,6 @@ public class VvsProviderLiveTest
{
final QueryDeparturesResult result = provider.queryDepartures("6118", 0);
System.out.println(result.departures.size() + " " + result.departures);
System.out.println(result.stationDepartures);
}
}