diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 24738af8..43369788 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1923,8 +1923,9 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider final Line line = new Line(lineId, lineLabel, lineColors(lineLabel), lineAttrs); - parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, arrivalPosition, - arrival, intermediateStops, path)); + parts.add(new Connection.Trip(line, destination, departureTargetTime != null ? departureTargetTime : departureTime, + departureTargetTime, departurePosition, departure, arrivalTargetTime != null ? arrivalTargetTime : arrivalTime, + arrivalTargetTime, arrivalPosition, arrival, intermediateStops, path)); } XmlPullUtil.exit(pp, "itdPartialRoute"); diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 1837f3a9..b4299b95 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -994,8 +994,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider if (min == 0 || line != null) { - parts.add(new Connection.Trip(line, destination, departureTime, departurePos, sectionDeparture, arrivalTime, arrivalPos, - sectionArrival, intermediateStops, null)); + parts.add(new Connection.Trip(line, destination, departureTime, null, departurePos, sectionDeparture, arrivalTime, null, + arrivalPos, sectionArrival, intermediateStops, null)); } else { diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index b45f7c6f..7509ff94 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -471,8 +471,8 @@ public final class BahnProvider extends AbstractHafasProvider final String arrivalPosition = ParserUtils.resolveEntities(mDetFine.group(8)); - parts.add(new Connection.Trip(line, null, departureTime.getTime(), departurePosition, departure, arrivalTime.getTime(), - arrivalPosition, arrival, null, null)); + parts.add(new Connection.Trip(line, null, departureTime.getTime(), null, departurePosition, departure, arrivalTime + .getTime(), null, arrivalPosition, arrival, null, null)); if (firstDepartureTime == null) firstDepartureTime = departureTime.getTime(); diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index a51df564..0b7d13ea 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -852,7 +852,7 @@ public final class BvgProvider extends AbstractHafasProvider destination = null; } - parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, + parts.add(new Connection.Trip(line, destination, departureTime, null, departurePosition, departure, arrivalTime, null, arrivalPosition, arrival, intermediateStops, null)); } } diff --git a/src/de/schildbach/pte/dto/Connection.java b/src/de/schildbach/pte/dto/Connection.java index 35825ba0..6d83726d 100644 --- a/src/de/schildbach/pte/dto/Connection.java +++ b/src/de/schildbach/pte/dto/Connection.java @@ -97,27 +97,61 @@ public final class Connection implements Serializable { public final Line line; public final Location destination; - public final Date departureTime; + public final Date departureTime; // TODO rename to plannedDepartureTime + public final Date predictedDepartureTime; public final String departurePosition; - public final Date arrivalTime; + public final Date arrivalTime; // TODO rename to plannedArrivalTime + public final Date predictedArrivalTime; public final String arrivalPosition; public final List intermediateStops; - public Trip(final Line line, final Location destination, final Date departureTime, final String departurePosition, final Location departure, - final Date arrivalTime, final String arrivalPosition, final Location arrival, final List intermediateStops, - final List path) + public Trip(final Line line, final Location destination, final Date plannedDepartureTime, final Date predictedDepartureTime, + final String departurePosition, final Location departure, final Date plannedArrivalTime, final Date predictedArrivalTime, + final String arrivalPosition, final Location arrival, final List intermediateStops, final List path) { super(departure, arrival, path); this.line = line; this.destination = destination; - this.departureTime = departureTime; + this.departureTime = plannedDepartureTime; + this.predictedDepartureTime = predictedDepartureTime; this.departurePosition = departurePosition; - this.arrivalTime = arrivalTime; + this.arrivalTime = plannedArrivalTime; + this.predictedArrivalTime = predictedArrivalTime; this.arrivalPosition = arrivalPosition; this.intermediateStops = intermediateStops; } + public Date getDepartureTime() + { + if (predictedDepartureTime != null) + return predictedDepartureTime; + else if (departureTime != null) + return departureTime; + else + throw new IllegalStateException(); + } + + public boolean isDepartureTimePredicted() + { + return predictedDepartureTime != null; + } + + public Date getArrivalTime() + { + if (predictedArrivalTime != null) + return predictedArrivalTime; + else if (arrivalTime != null) + return arrivalTime; + else + throw new IllegalStateException(); + } + + public boolean isArrivalTimePredicted() + { + return predictedArrivalTime != null; + } + @Override public String toString() {