EFA: If there is no <itdServingLine>, we assume the station ID is invalid.

This commit is contained in:
Andreas Schildbach 2016-10-28 14:36:07 +02:00
parent 63be2aeb10
commit 40763ef6f6

View file

@ -1497,10 +1497,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
XmlPullUtil.optSkip(pp, "itdMessage");
final Calendar plannedDepartureTime = new GregorianCalendar(timeZone);
final Calendar predictedDepartureTime = new GregorianCalendar(timeZone);
XmlPullUtil.require(pp, "itdServingLines");
if (XmlPullUtil.test(pp, "itdServingLines")) {
if (!pp.isEmptyElementTag()) {
XmlPullUtil.enter(pp, "itdServingLines");
while (XmlPullUtil.test(pp, "itdServingLine")) {
@ -1511,24 +1508,27 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
final String destinationId = !"-1".equals(destinationIdStr) ? destinationIdStr : null;
final Location destination;
if (destinationId != null)
destination = new Location(LocationType.STATION, destinationId, null, destinationName);
destination = new Location(LocationType.STATION, destinationId, null,
destinationName);
else if (destinationId == null && destinationName != null)
destination = new Location(LocationType.ANY, null, null, destinationName);
else
destination = null;
final LineDestination line = new LineDestination(processItdServingLine(pp), destination);
final LineDestination line = new LineDestination(processItdServingLine(pp),
destination);
StationDepartures assignedStationDepartures;
if (assignedStopId == null)
assignedStationDepartures = r.stationDepartures.get(0);
else
assignedStationDepartures = findStationDepartures(r.stationDepartures, assignedStopId);
assignedStationDepartures = findStationDepartures(r.stationDepartures,
assignedStopId);
if (assignedStationDepartures == null)
assignedStationDepartures = new StationDepartures(
new Location(LocationType.STATION, assignedStopId), new LinkedList<Departure>(),
new LinkedList<LineDestination>());
new Location(LocationType.STATION, assignedStopId),
new LinkedList<Departure>(), new LinkedList<LineDestination>());
final List<LineDestination> assignedStationDeparturesLines = checkNotNull(
assignedStationDepartures.lines);
@ -1539,10 +1539,17 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
} else {
XmlPullUtil.next(pp);
}
} else {
result.set(new QueryDeparturesResult(header, QueryDeparturesResult.Status.INVALID_STATION));
return;
}
XmlPullUtil.require(pp, "itdDepartureList");
if (!pp.isEmptyElementTag()) {
XmlPullUtil.enter(pp, "itdDepartureList");
final Calendar plannedDepartureTime = new GregorianCalendar(timeZone);
final Calendar predictedDepartureTime = new GregorianCalendar(timeZone);
while (XmlPullUtil.test(pp, "itdDeparture")) {
final String assignedStopId = XmlPullUtil.attr(pp, "stopID");