parse number of changes

This commit is contained in:
Andreas Schildbach 2012-06-13 18:00:04 +02:00
parent 6b92277180
commit 6c45afb4d3
6 changed files with 21 additions and 9 deletions

View file

@ -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");
}

View file

@ -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<Connection.Part> parts = new ArrayList<Connection.Part>(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);

View file

@ -338,7 +338,8 @@ public final class BahnProvider extends AbstractHafasProvider
private static final Pattern P_CONNECTIONS_COARSE = Pattern.compile("<tr><td class=\"overview timelink\">(.+?)</td></tr>", Pattern.DOTALL);
private static final Pattern P_CONNECTIONS_FINE = Pattern.compile(".*?" //
+ "<a href=\"(http://mobile.bahn.de/bin/mobil/query2?.exe/dox[^\"]*?)\">" // link
+ "(\\d{1,2}:\\d{2})<br />(\\d{1,2}:\\d{2})</a></td>.+?" // departureTime, arrivalTime
+ "(\\d{1,2}:\\d{2})<br />(\\d{1,2}:\\d{2})</a></td>.*?" // departureTime, arrivalTime
+ "<td class=\"overview\">\\s*(\\d+)\\s*<.*?" // numChanges
+ "<td class=\"overview iphonepfeil\">(.*?)<br />.*?" // 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
{

View file

@ -787,6 +787,7 @@ public final class BvgProvider extends AbstractHafasProvider
final Matcher mDetails = P_CONNECTION_DETAILS.matcher(connectionSection);
int numTrips = 0;
final List<Connection.Part> parts = new ArrayList<Connection.Part>(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
{

View file

@ -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));
}
}
}

View file

@ -36,9 +36,10 @@ public final class Connection implements Serializable
public final List<Part> parts;
public final List<Fare> 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<Part> parts, final List<Fare> 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();
}