From 6c45afb4d34684098783262415cbd00057c9421f Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Wed, 13 Jun 2012 18:00:04 +0200 Subject: [PATCH] parse number of changes --- .../src/de/schildbach/pte/AbstractEfaProvider.java | 3 ++- .../src/de/schildbach/pte/AbstractHafasProvider.java | 5 ++++- enabler/src/de/schildbach/pte/BahnProvider.java | 11 +++++++---- enabler/src/de/schildbach/pte/BvgProvider.java | 4 +++- enabler/src/de/schildbach/pte/SadProvider.java | 2 +- enabler/src/de/schildbach/pte/dto/Connection.java | 5 ++++- 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index 2dd5e8dc..cb91086d 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1864,6 +1864,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider while (XmlPullUtil.test(pp, "itdRoute")) { final String id = pp.getAttributeValue(null, "routeIndex") + "-" + pp.getAttributeValue(null, "routeTripIndex"); + final int numChanges = XmlPullUtil.intAttr(pp, "changes"); XmlPullUtil.enter(pp, "itdRoute"); while (XmlPullUtil.test(pp, "itdDateTime")) @@ -2126,7 +2127,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider } XmlPullUtil.exit(pp, "itdFare"); } - connections.add(new Connection(id, uri, firstDeparture, lastArrival, parts, fares.isEmpty() ? null : fares, null)); + connections.add(new Connection(id, uri, firstDeparture, lastArrival, parts, fares.isEmpty() ? null : fares, null, numChanges)); XmlPullUtil.exit(pp, "itdRoute"); } diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 7f0f43a9..27969d33 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -947,6 +947,9 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "BasicStop"); XmlPullUtil.exit(pp, "Arrival"); + XmlPullUtil.require(pp, "Transfers"); + final int numTransfers = Integer.parseInt(XmlPullUtil.text(pp)); + XmlPullUtil.exit(pp, "Overview"); final List parts = new ArrayList(4); @@ -1151,7 +1154,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "Connection"); - connections.add(new Connection(id, null, departure, arrival, parts, null, capacity)); + connections.add(new Connection(id, null, departure, arrival, parts, null, capacity, numTransfers)); } XmlPullUtil.exit(pp); diff --git a/enabler/src/de/schildbach/pte/BahnProvider.java b/enabler/src/de/schildbach/pte/BahnProvider.java index d28407d8..5053efcc 100644 --- a/enabler/src/de/schildbach/pte/BahnProvider.java +++ b/enabler/src/de/schildbach/pte/BahnProvider.java @@ -338,7 +338,8 @@ public final class BahnProvider extends AbstractHafasProvider private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("(.+?)", Pattern.DOTALL); private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" // + "" // link - + "(\\d{1,2}:\\d{2})
(\\d{1,2}:\\d{2})
.+?" // departureTime, arrivalTime + + "(\\d{1,2}:\\d{2})
(\\d{1,2}:\\d{2}).*?" // departureTime, arrivalTime + + "\\s*(\\d+)\\s*<.*?" // numChanges + "(.*?)
.*?" // line , Pattern.DOTALL); private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern @@ -383,7 +384,9 @@ public final class BahnProvider extends AbstractHafasProvider if (mConFine.matches()) { final String link = ParserUtils.resolveEntities(mConFine.group(1)); - final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, from, to, null, null, null); + final int numChanges = Integer.parseInt(mConFine.group(4)); + final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, from, to, null, null, null, + numChanges); connections.add(connection); } else @@ -521,8 +524,8 @@ public final class BahnProvider extends AbstractHafasProvider } } - return new GetConnectionDetailsResult(new GregorianCalendar(timeZone()).getTime(), new Connection( - AbstractHafasProvider.extractConnectionId(uri), uri, firstDeparture, lastArrival, parts, null, null)); + return new GetConnectionDetailsResult(new GregorianCalendar(timeZone()).getTime(), new Connection(connection.id, uri, firstDeparture, + lastArrival, parts, null, null, connection.numChanges)); } else { diff --git a/enabler/src/de/schildbach/pte/BvgProvider.java b/enabler/src/de/schildbach/pte/BvgProvider.java index 048bfc6b..ce019aa1 100644 --- a/enabler/src/de/schildbach/pte/BvgProvider.java +++ b/enabler/src/de/schildbach/pte/BvgProvider.java @@ -787,6 +787,7 @@ public final class BvgProvider extends AbstractHafasProvider final Matcher mDetails = P_CONNECTION_DETAILS.matcher(connectionSection); + int numTrips = 0; final List parts = new ArrayList(tracks.size()); for (int iTrack = 0; iTrack < tracks.size(); iTrack++) { @@ -873,10 +874,11 @@ public final class BvgProvider extends AbstractHafasProvider parts.add(new Connection.Trip(line, destination, departureTime, null, departurePosition, departure, arrivalTime, null, arrivalPosition, arrival, intermediateStops, null)); + numTrips++; } } - connections.add(new Connection(id, firstUri, from, to, parts, null, null)); + connections.add(new Connection(id, firstUri, from, to, parts, null, null, numTrips - 1)); } else { diff --git a/enabler/src/de/schildbach/pte/SadProvider.java b/enabler/src/de/schildbach/pte/SadProvider.java index 6e828719..21e5a09b 100644 --- a/enabler/src/de/schildbach/pte/SadProvider.java +++ b/enabler/src/de/schildbach/pte/SadProvider.java @@ -463,7 +463,7 @@ public class SadProvider extends AbstractNetworkProvider { if (fromToLocs.size() == 2) { // NOTE: link, capacity set to null connections.add(new Connection(fromToLocs.get(0).toString() + fromToLocs.get(1).toString(), null, fromToLocs.get(0), - fromToLocs.get(1), parts, fares, null)); + fromToLocs.get(1), parts, fares, null, null)); } } } diff --git a/enabler/src/de/schildbach/pte/dto/Connection.java b/enabler/src/de/schildbach/pte/dto/Connection.java index 0bd41181..f6060c04 100644 --- a/enabler/src/de/schildbach/pte/dto/Connection.java +++ b/enabler/src/de/schildbach/pte/dto/Connection.java @@ -36,9 +36,10 @@ public final class Connection implements Serializable public final List parts; public final List fares; public final int[] capacity; + public final Integer numChanges; public Connection(final String id, final String link, final Location from, final Location to, final List parts, final List fares, - final int[] capacity) + final int[] capacity, final Integer numChanges) { this.id = id; this.link = link; @@ -47,6 +48,7 @@ public final class Connection implements Serializable this.parts = parts; this.fares = fares; this.capacity = capacity; + this.numChanges = numChanges; } public Date getFirstDepartureTime() @@ -139,6 +141,7 @@ public final class Connection implements Serializable str.append('-'); final Date lastTripArrivalTime = getLastTripArrivalTime(); str.append(lastTripArrivalTime != null ? FORMAT.format(lastTripArrivalTime) : "null"); + str.append(' ').append(numChanges).append("ch"); return str.toString(); }