parse itdRTDateTime

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@333 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-10-30 17:55:51 +00:00
parent f5b3752950
commit d4af2b36d1

View file

@ -687,8 +687,10 @@ public abstract class AbstractEfaProvider implements NetworkProvider
final String location = normalizeLocationName(pp.nextText()); final String location = normalizeLocationName(pp.nextText());
final Calendar departureTime = new GregorianCalendar(); final Calendar plannedDepartureTime = new GregorianCalendar();
departureTime.setTimeZone(timeZone()); plannedDepartureTime.setTimeZone(timeZone());
final Calendar predictedDepartureTime = new GregorianCalendar();
predictedDepartureTime.setTimeZone(timeZone());
final List<Line> lines = new ArrayList<Line>(4); final List<Line> lines = new ArrayList<Line>(4);
@ -739,12 +741,13 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.enter(pp, "itdDeparture"); XmlPullUtil.enter(pp, "itdDeparture");
departureTime.clear(); XmlPullUtil.require(pp, "itdDateTime");
processItdDateTime(pp, departureTime); plannedDepartureTime.clear();
processItdDateTime(pp, plannedDepartureTime);
// TODO predictedDepartureTime.clear();
if (XmlPullUtil.test(pp, "itdRTDateTime")) if (XmlPullUtil.test(pp, "itdRTDateTime"))
XmlPullUtil.next(pp); processItdDateTime(pp, predictedDepartureTime);
XmlPullUtil.require(pp, "itdServingLine"); XmlPullUtil.require(pp, "itdServingLine");
final String line = parseLine(pp.getAttributeValue(null, "motType"), pp.getAttributeValue(null, "number"), pp final String line = parseLine(pp.getAttributeValue(null, "motType"), pp.getAttributeValue(null, "number"), pp
@ -753,8 +756,12 @@ public abstract class AbstractEfaProvider implements NetworkProvider
final String destination = normalizeLocationName(pp.getAttributeValue(null, "direction")); final String destination = normalizeLocationName(pp.getAttributeValue(null, "direction"));
final int destinationId = Integer.parseInt(pp.getAttributeValue(null, "destID")); final int destinationId = Integer.parseInt(pp.getAttributeValue(null, "destID"));
departures.add(new Departure(!isRealtime ? departureTime.getTime() : null, isRealtime ? departureTime.getTime() : null, if (isRealtime && !predictedDepartureTime.isSet(Calendar.HOUR_OF_DAY))
line, lineColors(line), null, position, destinationId, destination, null)); predictedDepartureTime.setTimeInMillis(plannedDepartureTime.getTimeInMillis());
departures.add(new Departure(plannedDepartureTime.getTime(),
predictedDepartureTime.isSet(Calendar.HOUR_OF_DAY) ? predictedDepartureTime.getTime() : null, line,
lineColors(line), null, position, destinationId, destination, null));
} }
else else
{ {
@ -797,20 +804,12 @@ public abstract class AbstractEfaProvider implements NetworkProvider
} }
} }
private void findAndProcessItdDateTime(final XmlPullParser pp, final Calendar calendar) throws XmlPullParserException, IOException
{
if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdDateTime"))
throw new IllegalStateException("itdDateTime not found:" + pp.getPositionDescription());
processItdDateTime(pp, calendar);
}
private void processItdDateTime(final XmlPullParser pp, final Calendar calendar) throws XmlPullParserException, IOException private void processItdDateTime(final XmlPullParser pp, final Calendar calendar) throws XmlPullParserException, IOException
{ {
XmlPullUtil.enter(pp, "itdDateTime"); XmlPullUtil.enter(pp);
processItdDate(pp, calendar); processItdDate(pp, calendar);
processItdTime(pp, calendar); processItdTime(pp, calendar);
XmlPullUtil.exit(pp, "itdDateTime"); XmlPullUtil.exit(pp);
} }
private void processItdDate(final XmlPullParser pp, final Calendar calendar) throws XmlPullParserException, IOException private void processItdDate(final XmlPullParser pp, final Calendar calendar) throws XmlPullParserException, IOException
@ -1010,6 +1009,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.enter(pp, "itdPoint"); XmlPullUtil.enter(pp, "itdPoint");
if (XmlPullUtil.test(pp, "itdMapItemList")) if (XmlPullUtil.test(pp, "itdMapItemList"))
XmlPullUtil.next(pp); XmlPullUtil.next(pp);
XmlPullUtil.require(pp, "itdDateTime");
processItdDateTime(pp, departureTime); processItdDateTime(pp, departureTime);
if (firstDepartureTime == null) if (firstDepartureTime == null)
firstDepartureTime = departureTime.getTime(); firstDepartureTime = departureTime.getTime();
@ -1026,6 +1026,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.enter(pp, "itdPoint"); XmlPullUtil.enter(pp, "itdPoint");
if (XmlPullUtil.test(pp, "itdMapItemList")) if (XmlPullUtil.test(pp, "itdMapItemList"))
XmlPullUtil.next(pp); XmlPullUtil.next(pp);
XmlPullUtil.require(pp, "itdDateTime");
processItdDateTime(pp, arrivalTime); processItdDateTime(pp, arrivalTime);
lastArrivalTime = arrivalTime.getTime(); lastArrivalTime = arrivalTime.getTime();
XmlPullUtil.exit(pp, "itdPoint"); XmlPullUtil.exit(pp, "itdPoint");
@ -1086,6 +1087,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
final String stopPosition = normalizePlatform(pp.getAttributeValue(null, "platform"), pp.getAttributeValue(null, final String stopPosition = normalizePlatform(pp.getAttributeValue(null, "platform"), pp.getAttributeValue(null,
"platformName")); "platformName"));
XmlPullUtil.enter(pp, "itdPoint"); XmlPullUtil.enter(pp, "itdPoint");
XmlPullUtil.require(pp, "itdDateTime");
processItdDateTime(pp, stopTime); processItdDateTime(pp, stopTime);
XmlPullUtil.exit(pp, "itdPoint"); XmlPullUtil.exit(pp, "itdPoint");
intermediateStops.add(new Stop(new Location(LocationType.STATION, stopId, 0, 0, stopName), stopPosition, stopTime intermediateStops.add(new Stop(new Location(LocationType.STATION, stopId, 0, 0, stopName), stopPosition, stopTime