diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 17c8e58c..04f41aa5 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1805,7 +1805,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider XmlPullUtil.exit(pp, "itdFare"); } connections.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts, - fares.isEmpty() ? null : fares)); + fares.isEmpty() ? null : fares, null)); XmlPullUtil.exit(pp, "itdRoute"); } diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index d21728eb..6d183c9b 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -623,7 +623,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider throws IOException { // System.out.println(request); - // ParserUtils.printXml(ParserUtils.scrape(apiUri, true, wrap(request), null, false)); + // ParserUtils.printXml(ParserUtils.scrape(apiUri, true, wrap(request), null, null)); InputStream is = null; @@ -697,6 +697,35 @@ public abstract class AbstractHafasProvider implements NetworkProvider while (pp.getName().equals("StAttrList")) XmlPullUtil.next(pp); final Location departure = parseLocation(pp); + XmlPullUtil.enter(pp, "Dep"); + XmlPullUtil.exit(pp, "Dep"); + final int[] capacity; + if (XmlPullUtil.test(pp, "StopPrognosis")) + { + XmlPullUtil.enter(pp, "StopPrognosis"); + if (XmlPullUtil.test(pp, "Arr")) + XmlPullUtil.next(pp); + if (XmlPullUtil.test(pp, "Dep")) + XmlPullUtil.next(pp); + XmlPullUtil.enter(pp, "Status"); + XmlPullUtil.exit(pp, "Status"); + if (XmlPullUtil.test(pp, "Capacity1st")) + { + final int capacity1st = Integer.parseInt(XmlPullUtil.text(pp)); + XmlPullUtil.require(pp, "Capacity2nd"); + final int capacity2nd = Integer.parseInt(XmlPullUtil.text(pp)); + capacity = new int[] { capacity1st, capacity2nd }; + } + else + { + capacity = null; + } + XmlPullUtil.exit(pp, "StopPrognosis"); + } + else + { + capacity = null; + } XmlPullUtil.exit(pp, "BasicStop"); XmlPullUtil.exit(pp, "Departure"); @@ -893,7 +922,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider XmlPullUtil.exit(pp, "Connection"); - connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null)); + connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null, capacity)); } XmlPullUtil.exit(pp); diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index bc7119a5..79ad88a9 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -336,7 +336,7 @@ public final class BahnProvider extends AbstractHafasProvider if (departureTime.after(arrivalTime)) arrivalTime.add(Calendar.DAY_OF_YEAR, 1); final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime.getTime(), - arrivalTime.getTime(), from, to, null, null); + arrivalTime.getTime(), from, to, null, null, null); connections.add(connection); } else @@ -486,7 +486,7 @@ public final class BahnProvider extends AbstractHafasProvider return new GetConnectionDetailsResult(new GregorianCalendar(timeZone()).getTime(), new Connection( AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts, - null)); + null, null)); } else { diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index a2417f5b..8bbe6503 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -850,7 +850,7 @@ public final class BvgProvider extends AbstractHafasProvider } } - connections.add(new Connection(id, firstUri, firstDepartureTime, lastArrivalTime, from, to, parts, null)); + connections.add(new Connection(id, firstUri, firstDepartureTime, lastArrivalTime, from, to, parts, null, null)); } else { diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index f1182965..03d24114 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -402,7 +402,7 @@ public class OebbProvider extends AbstractHafasProvider final String link = allDetailsUri; // TODO use print link? final Connection connection = new Connection(id, link, overviewDepartureTime.getTime(), overviewArrivalTime.getTime(), from, to, - new ArrayList(1), null); + new ArrayList(1), null, null); connections.add(connection); final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(details); diff --git a/src/de/schildbach/pte/dto/Connection.java b/src/de/schildbach/pte/dto/Connection.java index cced6ca7..878ac900 100644 --- a/src/de/schildbach/pte/dto/Connection.java +++ b/src/de/schildbach/pte/dto/Connection.java @@ -27,6 +27,8 @@ import java.util.List; */ public final class Connection implements Serializable { + private static final long serialVersionUID = 2508466068307110312L; + public final String id; public final String link; public final Date departureTime; @@ -35,9 +37,10 @@ public final class Connection implements Serializable public final Location to; public final List parts; public final List fares; + public final int[] capacity; public Connection(final String id, final String link, final Date departureTime, final Date arrivalTime, final Location from, final Location to, - final List parts, final List fares) + final List parts, final List fares, final int[] capacity) { this.id = id; this.link = link; @@ -47,6 +50,7 @@ public final class Connection implements Serializable this.to = to; this.parts = parts; this.fares = fares; + this.capacity = capacity; } @Override