diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 43369788..3c814a87 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1731,9 +1731,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.enter(pp, "itdPartialRouteList"); final List parts = new LinkedList(); Location firstDeparture = null; - Date firstDepartureTime = null; Location lastArrival = null; - Date lastArrivalTime = null; while (XmlPullUtil.test(pp, "itdPartialRoute")) { @@ -1753,8 +1751,6 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.require(pp, "itdDateTime"); processItdDateTime(pp, time); final Date departureTime = time.getTime(); - if (firstDepartureTime == null) - firstDepartureTime = departureTime; final Date departureTargetTime; if (XmlPullUtil.test(pp, "itdDateTimeTarget")) { @@ -1780,7 +1776,6 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.require(pp, "itdDateTime"); processItdDateTime(pp, time); final Date arrivalTime = time.getTime(); - lastArrivalTime = arrivalTime; final Date arrivalTargetTime; if (XmlPullUtil.test(pp, "itdDateTimeTarget")) { @@ -1970,8 +1965,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider } XmlPullUtil.exit(pp, "itdFare"); } - connections.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts, - fares.isEmpty() ? null : fares, null)); + connections.add(new Connection(id, uri, firstDeparture, lastArrival, parts, 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 b4299b95..4ab582fc 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -832,8 +832,6 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "Overview"); final List parts = new ArrayList(4); - Date firstDepartureTime = null; - Date lastArrivalTime = null; XmlPullUtil.enter(pp, "ConSectionList"); @@ -1009,17 +1007,13 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider parts.add(new Connection.Footway(min, sectionDeparture, sectionArrival, null)); } } - - if (firstDepartureTime == null) - firstDepartureTime = departureTime; - lastArrivalTime = arrivalTime; } XmlPullUtil.exit(pp, "ConSectionList"); XmlPullUtil.exit(pp, "Connection"); - connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null, capacity)); + connections.add(new Connection(id, null, 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 7509ff94..73284513 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -48,8 +48,6 @@ public final class BahnProvider extends AbstractHafasProvider public static final String OLD_NETWORK_ID = "mobile.bahn.de"; private static final String API_BASE = "http://mobile.bahn.de/bin/mobil/"; - private static final long PARSER_DAY_ROLLOVER_THRESHOLD_MS = 12 * 60 * 60 * 1000; - public BahnProvider() { super("http://reiseauskunft.bahn.de/bin/extxml.exe", 14, null); @@ -353,24 +351,7 @@ public final class BahnProvider extends AbstractHafasProvider if (mConFine.matches()) { final String link = ParserUtils.resolveEntities(mConFine.group(1)); - final Calendar departureTime = new GregorianCalendar(timeZone()); - departureTime.setTimeInMillis(currentDate.getTimeInMillis()); - ParserUtils.parseEuropeanTime(departureTime, mConFine.group(2)); - if (!connections.isEmpty()) - { - final long diff = departureTime.getTimeInMillis() - connections.get(connections.size() - 1).departureTime.getTime(); - if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS) - departureTime.add(Calendar.DAY_OF_YEAR, -1); - else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS) - departureTime.add(Calendar.DAY_OF_YEAR, 1); - } - final Calendar arrivalTime = new GregorianCalendar(timeZone()); - arrivalTime.setTimeInMillis(currentDate.getTimeInMillis()); - ParserUtils.parseEuropeanTime(arrivalTime, mConFine.group(3)); - 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, null); + final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, from, to, null, null, null); connections.add(connection); } else @@ -429,9 +410,7 @@ public final class BahnProvider extends AbstractHafasProvider { final List parts = new ArrayList(4); - Date firstDepartureTime = null; Location firstDeparture = null; - Date lastArrivalTime = null; Location lastArrival = null; final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(mHead.group(1)); @@ -474,11 +453,7 @@ public final class BahnProvider extends AbstractHafasProvider 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(); - lastArrival = arrival; - lastArrivalTime = arrivalTime.getTime(); } else if (mDetFine.group(10) != null) { @@ -512,13 +487,8 @@ public final class BahnProvider extends AbstractHafasProvider } } - // verify - if (firstDepartureTime == null || lastArrivalTime == null) - throw new IllegalStateException("could not parse all parts of:\n" + mHead.group(1) + "\n" + parts); - return new GetConnectionDetailsResult(new GregorianCalendar(timeZone()).getTime(), new Connection( - AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts, - null, null)); + AbstractHafasProvider.extractConnectionId(uri), uri, firstDeparture, lastArrival, parts, null, null)); } else { diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index 0b7d13ea..89bb9315 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -741,9 +741,6 @@ public final class BvgProvider extends AbstractHafasProvider ParserUtils.parseGermanDate(time, mConFine.group(1)); Date lastTime = null; - Date firstDepartureTime = null; - Date lastArrivalTime = null; - final String id = mConFine.group(2); final String[] trackParts = mConFine.group(3).split("\\*"); @@ -788,8 +785,6 @@ public final class BvgProvider extends AbstractHafasProvider time.add(Calendar.DAY_OF_YEAR, 1); lastTime = time.getTime(); final Date departureTime = time.getTime(); - if (firstDepartureTime == null) - firstDepartureTime = departureTime; final String[] tArr2 = track.size() == 1 ? tracks.get(iTrack + 1).get(0) : tArr; @@ -800,7 +795,6 @@ public final class BvgProvider extends AbstractHafasProvider time.add(Calendar.DAY_OF_YEAR, 1); lastTime = time.getTime(); final Date arrivalTime = time.getTime(); - lastArrivalTime = arrivalTime; final int mins = (int) ((arrivalTime.getTime() - departureTime.getTime()) / 1000 / 60); @@ -813,8 +807,6 @@ public final class BvgProvider extends AbstractHafasProvider time.add(Calendar.DAY_OF_YEAR, 1); lastTime = time.getTime(); final Date departureTime = time.getTime(); - if (firstDepartureTime == null) - firstDepartureTime = departureTime; final List intermediateStops = new LinkedList(); for (final String[] tStop : track.subList(1, track.size() - 1)) @@ -833,7 +825,6 @@ public final class BvgProvider extends AbstractHafasProvider time.add(Calendar.DAY_OF_YEAR, 1); lastTime = time.getTime(); final Date arrivalTime = time.getTime(); - lastArrivalTime = arrivalTime; final String arrivalPosition = !mDetails.group(4).equals(" ") ? ParserUtils.resolveEntities(mDetails.group(4)) : null; @@ -857,7 +848,7 @@ public final class BvgProvider extends AbstractHafasProvider } } - connections.add(new Connection(id, firstUri, firstDepartureTime, lastArrivalTime, from, to, parts, null, null)); + connections.add(new Connection(id, firstUri, from, to, parts, null, null)); } else { diff --git a/src/de/schildbach/pte/dto/Connection.java b/src/de/schildbach/pte/dto/Connection.java index 80850e7e..3979c294 100644 --- a/src/de/schildbach/pte/dto/Connection.java +++ b/src/de/schildbach/pte/dto/Connection.java @@ -31,21 +31,17 @@ public final class Connection implements Serializable public final String id; public final String link; - public final Date departureTime; - public final Date arrivalTime; public final Location from; 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 int[] capacity) + public Connection(final String id, final String link, final Location from, final Location to, final List parts, final List fares, + final int[] capacity) { this.id = id; this.link = link; - this.departureTime = departureTime; - this.arrivalTime = arrivalTime; this.from = from; this.to = to; this.parts = parts; @@ -53,11 +49,36 @@ public final class Connection implements Serializable this.capacity = capacity; } + public Date getFirstTripDepartureTime() + { + if (parts != null) + for (final Part part : parts) + if (part instanceof Trip) + return ((Trip) part).getDepartureTime(); + + return null; + } + + public Date getFirstTripArrivalTime() + { + if (parts != null) + { + for (int i = parts.size() - 1; i >= 0; i--) + { + final Part part = parts.get(i); + if (part instanceof Trip) + return ((Trip) part).getArrivalTime(); + } + } + + return null; + } + @Override public String toString() { final SimpleDateFormat FORMAT = new SimpleDateFormat("E HH:mm"); - return id + " " + FORMAT.format(departureTime) + "-" + FORMAT.format(arrivalTime); + return id + " " + FORMAT.format(getFirstTripDepartureTime()) + "-" + FORMAT.format(getFirstTripArrivalTime()); } @Override