From d47a5ac9d21dde46bed8d9cbaf20fe00bc11a7ca Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Tue, 17 May 2011 08:45:54 +0000 Subject: [PATCH] PassList is optional git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@649 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- .../schildbach/pte/AbstractHafasProvider.java | 52 +++++++++++-------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 612aef24..1f41cd66 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -720,7 +720,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider Location destination = null; int min = 0; - final List intermediateStops = new LinkedList(); + List intermediateStops = null; final String tag = pp.getName(); if (tag.equals("Journey")) @@ -760,33 +760,39 @@ public abstract class AbstractHafasProvider implements NetworkProvider } XmlPullUtil.exit(pp, "JourneyAttributeList"); - XmlPullUtil.enter(pp, "PassList"); - while (XmlPullUtil.test(pp, "BasicStop")) + if (XmlPullUtil.test(pp, "PassList")) { - XmlPullUtil.enter(pp, "BasicStop"); - while (XmlPullUtil.test(pp, "StAttrList")) - XmlPullUtil.next(pp); - final Location location = parseLocation(pp); - if (location.id != sectionDeparture.id) - { - if (XmlPullUtil.test(pp, "Arr")) - XmlPullUtil.next(pp); - if (XmlPullUtil.test(pp, "Dep")) - { - XmlPullUtil.enter(pp, "Dep"); - XmlPullUtil.require(pp, "Time"); - time.setTimeInMillis(currentDate.getTimeInMillis()); - parseTime(time, XmlPullUtil.text(pp)); - final String position = parsePlatform(pp); - XmlPullUtil.exit(pp, "Dep"); + intermediateStops = new LinkedList(); - intermediateStops.add(new Stop(location, position, time.getTime())); + XmlPullUtil.enter(pp, "PassList"); + while (XmlPullUtil.test(pp, "BasicStop")) + { + XmlPullUtil.enter(pp, "BasicStop"); + while (XmlPullUtil.test(pp, "StAttrList")) + XmlPullUtil.next(pp); + final Location location = parseLocation(pp); + if (location.id != sectionDeparture.id) + { + if (XmlPullUtil.test(pp, "Arr")) + XmlPullUtil.next(pp); + if (XmlPullUtil.test(pp, "Dep")) + { + XmlPullUtil.enter(pp, "Dep"); + XmlPullUtil.require(pp, "Time"); + time.setTimeInMillis(currentDate.getTimeInMillis()); + parseTime(time, XmlPullUtil.text(pp)); + final String position = parsePlatform(pp); + XmlPullUtil.exit(pp, "Dep"); + + intermediateStops.add(new Stop(location, position, time.getTime())); + } } + XmlPullUtil.exit(pp, "BasicStop"); } - XmlPullUtil.exit(pp, "BasicStop"); + + XmlPullUtil.exit(pp, "PassList"); } - XmlPullUtil.exit(pp, "PassList"); XmlPullUtil.exit(pp, "Journey"); if (category == null) @@ -829,7 +835,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider XmlPullUtil.exit(pp, "Arrival"); // remove last intermediate - final int size = intermediateStops.size(); + final int size = intermediateStops != null ? intermediateStops.size() : 0; if (size >= 1) if (intermediateStops.get(size - 1).location.id == sectionArrival.id) intermediateStops.remove(size - 1);