diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 888259ab..17c8e58c 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1184,7 +1184,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final Departure departure = new Departure(plannedDepartureTime.getTime(), predictedDepartureTime.isSet(Calendar.HOUR_OF_DAY) ? predictedDepartureTime.getTime() : null, line, lineColors(line), - null, position, destinationId, destination, null); + null, position, destinationId, destination, null, null); assignedStationDepartures.departures.add(departure); XmlPullUtil.exit(pp, "itdDeparture"); diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 8cc6edc3..03a73213 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -428,7 +428,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider + "prod\\s*=\"([^\"]*)\"\\s*" // line + "(?:class\\s*=\"([^\"]*)\"\\s*)?" // class + "(?:dir\\s*=\"([^\"]*)\"\\s*)?" // destination - + "(?:capacity\\s*=\"[^\"]*\"\\s*)?" // (???) + + "(?:capacity\\s*=\"([^\"]*)\"\\s*)?" // capacity 1st class|2nd class + "(?:depStation\\s*=\"(.*?)\"\\s*)?" // + "(?:delayReason\\s*=\"([^\"]*)\"\\s*)?" // message + "(?:is_reachable\\s*=\"[^\"]*\"\\s*)?" // (???) @@ -471,7 +471,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider final Matcher mFine = P_XML_QUERY_DEPARTURES_FINE.matcher(mCoarse.group(1)); if (mFine.matches()) { - if (mFine.group(11) == null) + if (mFine.group(12) == null) { final Calendar plannedTime = new GregorianCalendar(timeZone()); plannedTime.clear(); @@ -517,10 +517,23 @@ public abstract class AbstractHafasProvider implements NetworkProvider final String line = product != 0 ? product + prod : normalizeLine(prod); - final String message; - if (mFine.group(12) != null) + final String capacityStr = mFine.group(11); + final int[] capacity; + if (capacityStr != null && !"0|0".equals(capacityStr)) { - final String msg = ParserUtils.resolveEntities(mFine.group(12)).trim(); + final String[] capacityParts = capacityStr.split("\\|"); + capacity = new int[] { Integer.parseInt(capacityParts[0]), Integer.parseInt(capacityParts[1]) }; + } + else + { + capacity = null; + } + + final String messageStr = mFine.group(13); + final String message; + if (messageStr != null) + { + final String msg = ParserUtils.resolveEntities(messageStr).trim(); message = msg.length() > 0 ? msg : null; } else @@ -529,7 +542,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider } departures.add(new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, 0, destination, message)); + line != null ? lineColors(line) : null, null, position, 0, destination, capacity, message)); } } else diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index 8c6bdff1..a2417f5b 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -322,7 +322,7 @@ public final class BvgProvider extends AbstractHafasProvider final String destination = ParserUtils.resolveEntities(mDepFine.group(4)); final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? lineColors(line) : null, null, position, - destinationId, destination, messages.get(line)); + destinationId, destination, null, messages.get(line)); if (!departures.contains(dep)) departures.add(dep); } @@ -392,7 +392,7 @@ public final class BvgProvider extends AbstractHafasProvider final String destination = ParserUtils.resolveEntities(mDepFine.group(5)); final Departure dep = new Departure(plannedTime, null, line, line != null ? lineColors(line) : null, null, position, - destinationId, destination, null); + destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); } diff --git a/src/de/schildbach/pte/InvgProvider.java b/src/de/schildbach/pte/InvgProvider.java index 098dbc65..9dd0e26e 100644 --- a/src/de/schildbach/pte/InvgProvider.java +++ b/src/de/schildbach/pte/InvgProvider.java @@ -235,7 +235,7 @@ public class InvgProvider extends AbstractHafasProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, destinationId, destination, null); + line != null ? lineColors(line) : null, null, position, destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/NasaProvider.java b/src/de/schildbach/pte/NasaProvider.java index ec9d6b87..6667fe6b 100644 --- a/src/de/schildbach/pte/NasaProvider.java +++ b/src/de/schildbach/pte/NasaProvider.java @@ -212,7 +212,7 @@ public class NasaProvider extends AbstractHafasProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, destinationId, destination, null); + line != null ? lineColors(line) : null, null, position, destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index eeb4c8e0..07d383f6 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -220,7 +220,7 @@ public class RmvProvider extends AbstractHafasProvider final String position = ParserUtils.resolveEntities(ParserUtils.selectNotNull(mDepFine.group(5), mDepFine.group(6))); final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, 0, destination, null); + line != null ? lineColors(line) : null, null, position, 0, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/SeptaProvider.java b/src/de/schildbach/pte/SeptaProvider.java index 44961111..6e92052f 100644 --- a/src/de/schildbach/pte/SeptaProvider.java +++ b/src/de/schildbach/pte/SeptaProvider.java @@ -220,7 +220,7 @@ public class SeptaProvider extends AbstractHafasProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, destinationId, destination, null); + line != null ? lineColors(line) : null, null, position, destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/ShProvider.java b/src/de/schildbach/pte/ShProvider.java index 4290b252..df7aa155 100644 --- a/src/de/schildbach/pte/ShProvider.java +++ b/src/de/schildbach/pte/ShProvider.java @@ -211,7 +211,7 @@ public class ShProvider extends AbstractHafasProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, destinationId, destination, null); + line != null ? lineColors(line) : null, null, position, destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java index b3f4b74f..516366c9 100644 --- a/src/de/schildbach/pte/VgsProvider.java +++ b/src/de/schildbach/pte/VgsProvider.java @@ -223,7 +223,7 @@ public class VgsProvider extends AbstractHafasProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line, - line != null ? lineColors(line) : null, null, position, destinationId, destination, null); + line != null ? lineColors(line) : null, null, position, destinationId, destination, null, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/src/de/schildbach/pte/dto/Departure.java b/src/de/schildbach/pte/dto/Departure.java index c40652e5..9dc7dbd0 100644 --- a/src/de/schildbach/pte/dto/Departure.java +++ b/src/de/schildbach/pte/dto/Departure.java @@ -32,10 +32,11 @@ public final class Departure final public String position; final public int destinationId; final public String destination; + final public int[] capacity; final public String message; public Departure(final Date plannedTime, final Date predictedTime, final String line, final int[] lineColors, final String lineLink, - final String position, final int destinationId, final String destination, final String message) + final String position, final int destinationId, final String destination, final int[] capacity, final String message) { this.plannedTime = plannedTime; this.predictedTime = predictedTime; @@ -45,6 +46,7 @@ public final class Departure this.position = position; this.destinationId = destinationId; this.destination = destination; + this.capacity = capacity; this.message = message; } @@ -59,6 +61,7 @@ public final class Departure this.position = position; this.destinationId = destinationId; this.destination = destination; + this.capacity = null; this.message = null; }