diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index fb398b4b..54e850f0 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -1865,7 +1865,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.next(pp); XmlPullUtil.enter(pp, "itdPartialRouteList"); - final List parts = new LinkedList(); + final List legs = new LinkedList(); Location firstDepartureLocation = null; Location lastArrivalLocation = null; @@ -1954,17 +1954,17 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider if (XmlPullUtil.test(pp, "itdPathCoordinates")) path = processItdPathCoordinates(pp); - if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway) + if (legs.size() > 0 && legs.get(legs.size() - 1) instanceof Connection.Individual) { - final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1); - if (path != null && lastFootway.path != null) - path.addAll(0, lastFootway.path); - parts.add(new Connection.Footway(lastFootway.min + min, distance, lastFootway.transfer || transfer, - lastFootway.departure, arrivalLocation, path)); + final Connection.Individual lastIndividualLeg = (Connection.Individual) legs.remove(legs.size() - 1); + if (path != null && lastIndividualLeg.path != null) + path.addAll(0, lastIndividualLeg.path); + legs.add(new Connection.Individual(lastIndividualLeg.min + min, distance, lastIndividualLeg.transfer || transfer, + lastIndividualLeg.departure, arrivalLocation, path)); } else { - parts.add(new Connection.Footway(min, distance, transfer, departureLocation, arrivalLocation, path)); + legs.add(new Connection.Individual(min, distance, transfer, departureLocation, arrivalLocation, path)); } } else if ("gesicherter Anschluss".equals(productName) || "nicht umsteigen".equals(productName)) // type97 @@ -2184,7 +2184,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider final Stop arrival = new Stop(arrivalLocation, false, arrivalTargetTime != null ? arrivalTargetTime : arrivalTime, arrivalTime != null ? arrivalTime : null, arrivalPosition, null); - parts.add(new Connection.Trip(line, destination, departure, arrival, intermediateStops, path, message)); + legs.add(new Connection.Public(line, destination, departure, arrival, intermediateStops, path, message)); } else { @@ -2253,7 +2253,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "itdRoute"); - final Connection connection = new Connection(id, firstDepartureLocation, lastArrivalLocation, parts, fares.isEmpty() ? null : fares, + final Connection connection = new Connection(id, firstDepartureLocation, lastArrivalLocation, legs, fares.isEmpty() ? null : fares, null, numChanges); if (!cancelled) diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 71b3280f..7fd8246c 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -1116,7 +1116,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "Overview"); - final List parts = new ArrayList(4); + final List legs = new ArrayList(4); XmlPullUtil.enter(pp, "ConSectionList"); @@ -1316,18 +1316,19 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final Stop departure = new Stop(sectionDepartureLocation, true, departureTime, null, departurePos, null); final Stop arrival = new Stop(sectionArrivalLocation, false, arrivalTime, null, arrivalPos, null); - parts.add(new Connection.Trip(line, destination, departure, arrival, intermediateStops, path, null)); + legs.add(new Connection.Public(line, destination, departure, arrival, intermediateStops, path, null)); } else { - if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway) + if (legs.size() > 0 && legs.get(legs.size() - 1) instanceof Connection.Individual) { - final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1); - parts.add(new Connection.Footway(lastFootway.min + min, 0, false, lastFootway.departure, sectionArrivalLocation, null)); + final Connection.Individual lastIndividualLeg = (Connection.Individual) legs.remove(legs.size() - 1); + legs.add(new Connection.Individual(lastIndividualLeg.min + min, 0, false, lastIndividualLeg.departure, + sectionArrivalLocation, null)); } else { - parts.add(new Connection.Footway(min, 0, false, sectionDepartureLocation, sectionArrivalLocation, null)); + legs.add(new Connection.Individual(min, 0, false, sectionDepartureLocation, sectionArrivalLocation, null)); } } } @@ -1336,7 +1337,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.exit(pp, "Connection"); - connections.add(new Connection(id, departureLocation, arrivalLocation, parts, null, capacity, numTransfers)); + connections.add(new Connection(id, departureLocation, arrivalLocation, legs, null, capacity, numTransfers)); } XmlPullUtil.exit(pp); @@ -1664,8 +1665,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider is.skipBytes(0x02); final int connectionDetailsIndexOffset = is.readShortReverse(); - final int connectionDetailsPartOffset = is.readShortReverse(); - final int connectionDetailsPartSize = is.readShortReverse(); + final int connectionDetailsLegOffset = is.readShortReverse(); + final int connectionDetailsLegSize = is.readShortReverse(); final int stopsSize = is.readShortReverse(); final int stopsOffset = is.readShortReverse(); @@ -1700,9 +1701,9 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final int serviceDaysTableOffset = is.readShortReverse(); - final int partsOffset = is.readIntReverse(); + final int legsOffset = is.readIntReverse(); - final int numParts = is.readShortReverse(); + final int numLegs = is.readShortReverse(); final int numChanges = is.readShortReverse(); @@ -1764,12 +1765,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } } - final List parts = new ArrayList(numParts); + final List legs = new ArrayList(numLegs); - for (int iPart = 0; iPart < numParts; iPart++) + for (int iLegs = 0; iLegs < numLegs; iLegs++) { is.reset(); - is.skipBytes(0x4a + partsOffset + iPart * 20); + is.skipBytes(0x4a + legsOffset + iLegs * 20); final long plannedDepartureTime = time(is, resDate, connectionDayOffset); final Location departureLocation = stations.read(is); @@ -1784,7 +1785,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final String plannedDeparturePosition = normalizePosition(strings.read(is)); final String plannedArrivalPosition = normalizePosition(strings.read(is)); - final int partAttrIndex = is.readShortReverse(); + final int legAttrIndex = is.readShortReverse(); final List lineAttrs = new ArrayList(); String lineComment = null; @@ -1807,7 +1808,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } is.reset(); - is.skipBytes(attrsOffset + partAttrIndex * 4); + is.skipBytes(attrsOffset + legAttrIndex * 4); String directionStr = null; int lineClass = 0; String lineCategory = null; @@ -1833,10 +1834,10 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider lineCategory = categoryFromName(lineName); is.reset(); - is.skipBytes(connectionDetailsPtr + connectionDetailsOffset + connectionDetailsPartOffset + iPart * connectionDetailsPartSize); + is.skipBytes(connectionDetailsPtr + connectionDetailsOffset + connectionDetailsLegOffset + iLegs * connectionDetailsLegSize); - if (connectionDetailsPartSize != 16) - throw new IllegalStateException("unhandled connection details part size: " + connectionDetailsPartSize); + if (connectionDetailsLegSize != 16) + throw new IllegalStateException("unhandled connection details leg size: " + connectionDetailsLegSize); final long predictedDepartureTime = time(is, resDate, connectionDayOffset); final long predictedArrivalTime = time(is, resDate, connectionDayOffset); @@ -1895,21 +1896,21 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } } - final Connection.Part part; + final Connection.Leg leg; if (type == 1 /* Fussweg */|| type == 3 /* Uebergang */|| type == 4 /* Uebergang */) { final int min = (int) ((plannedArrivalTime - plannedDepartureTime) / 1000 / 60); final boolean transfer = type != 1; - if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway) + if (legs.size() > 0 && legs.get(legs.size() - 1) instanceof Connection.Individual) { - final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1); - part = new Connection.Footway(lastFootway.min + min, 0, lastFootway.transfer || transfer, lastFootway.departure, - arrivalLocation, null); + final Connection.Individual lastIndividualLeg = (Connection.Individual) legs.remove(legs.size() - 1); + leg = new Connection.Individual(lastIndividualLeg.min + min, 0, lastIndividualLeg.transfer || transfer, + lastIndividualLeg.departure, arrivalLocation, null); } else { - part = new Connection.Footway(min, 0, transfer, departureLocation, arrivalLocation, null); + leg = new Connection.Individual(min, 0, transfer, departureLocation, arrivalLocation, null); } } else if (type == 2) @@ -1932,16 +1933,16 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider predictedArrivalTime != 0 ? new Date(predictedArrivalTime) : null, plannedArrivalPosition, predictedArrivalPosition); - part = new Connection.Trip(line, direction, departure, arrival, intermediateStops, null, null); + leg = new Connection.Public(line, direction, departure, arrival, intermediateStops, null, null); } else { throw new IllegalStateException("unhandled type: " + type); } - parts.add(part); + legs.add(leg); } - final Connection connection = new Connection(connectionId, resDeparture, resArrival, parts, null, null, (int) numChanges); + final Connection connection = new Connection(connectionId, resDeparture, resArrival, legs, null, null, (int) numChanges); if (realtimeStatus != 2) // Verbindung fällt aus connections.add(connection); diff --git a/enabler/src/de/schildbach/pte/SadProvider.java b/enabler/src/de/schildbach/pte/SadProvider.java index 99aaef6a..473585c9 100644 --- a/enabler/src/de/schildbach/pte/SadProvider.java +++ b/enabler/src/de/schildbach/pte/SadProvider.java @@ -24,9 +24,6 @@ import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import de.schildbach.pte.dto.Connection; -import de.schildbach.pte.dto.Connection.Footway; -import de.schildbach.pte.dto.Connection.Part; -import de.schildbach.pte.dto.Connection.Trip; import de.schildbach.pte.dto.Fare; import de.schildbach.pte.dto.Fare.Type; import de.schildbach.pte.dto.Line; @@ -393,13 +390,13 @@ public class SadProvider extends AbstractNetworkProvider { } } - // Get parts of the current connection - List parts = new ArrayList(); + // Get legs of the current connection + List legs = new ArrayList(); Object temp = connection.getProperty("tratti"); String networkName = null; if (temp instanceof SoapObject) { SoapObject tratti = (SoapObject) temp; - // Go through all connection parts + // Go through all connection legs for (int j = 0; j < tratti.getPropertyCount(); j++) { boolean isFootway = false; SoapObject tratto = (SoapObject) tratti.getProperty(j); @@ -416,15 +413,15 @@ public class SadProvider extends AbstractNetworkProvider { } } - // Add footway to parts list + // Add footway to legs list if (isFootway) { // NOTE: path is set to null - parts.add(new Footway(Integer.parseInt(tratto.getPropertyAsString("durata").split(":")[1]), 0, false, + legs.add(new Connection.Individual(Integer.parseInt(tratto.getPropertyAsString("durata").split(":")[1]), 0, false, soapToLocation((SoapObject) tratto.getProperty("nodo_partenza")), soapToLocation((SoapObject) tratto .getProperty("nodo_arrivo")), null)); } - // Add trip to parts list + // Add trip to legs list else { // Get line ID String lineId = tratto.getPropertyAsString("linea"); @@ -442,7 +439,7 @@ public class SadProvider extends AbstractNetworkProvider { final Stop arrival = new Stop(soapToLocation((SoapObject) tratto.getProperty("nodo_arrivo")), false, responseDate.get(1), null, null, null); - parts.add(new Trip(new Line(lineId, lineId, DEFAULT_STYLE), null, departure, arrival, null, null, null)); + legs.add(new Connection.Public(new Line(lineId, lineId, DEFAULT_STYLE), null, departure, arrival, null, null, null)); } catch (ParseException e) { e.printStackTrace(); } @@ -471,7 +468,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(), fromToLocs.get(0), - fromToLocs.get(1), parts, fares, null, null)); + fromToLocs.get(1), legs, fares, null, null)); } } } diff --git a/enabler/src/de/schildbach/pte/dto/Connection.java b/enabler/src/de/schildbach/pte/dto/Connection.java index 19aece5e..6f3dc946 100644 --- a/enabler/src/de/schildbach/pte/dto/Connection.java +++ b/enabler/src/de/schildbach/pte/dto/Connection.java @@ -33,18 +33,18 @@ public final class Connection implements Serializable private String id; public final Location from; public final Location to; - public final List parts; + public final List legs; public final List fares; public final int[] capacity; public final Integer numChanges; - public Connection(final String id, final Location from, final Location to, final List parts, final List fares, final int[] capacity, + public Connection(final String id, final Location from, final Location to, final List legs, final List fares, final int[] capacity, final Integer numChanges) { this.id = id; this.from = from; this.to = to; - this.parts = parts; + this.legs = legs; this.fares = fares; this.capacity = capacity; this.numChanges = numChanges; @@ -52,78 +52,78 @@ public final class Connection implements Serializable public Date getFirstDepartureTime() { - if (parts != null) + if (legs != null) { int mins = 0; - for (final Part part : parts) + for (final Leg leg : legs) { - if (part instanceof Footway) - mins += ((Footway) part).min; - else if (part instanceof Trip) - return new Date(((Trip) part).getDepartureTime().getTime() - 1000 * 60 * mins); + if (leg instanceof Individual) + mins += ((Individual) leg).min; + else if (leg instanceof Public) + return new Date(((Public) leg).getDepartureTime().getTime() - 1000 * 60 * mins); } } return null; } - public Trip getFirstTrip() + public Public getFirstPublicLeg() { - if (parts != null) - for (final Part part : parts) - if (part instanceof Trip) - return (Trip) part; + if (legs != null) + for (final Leg leg : legs) + if (leg instanceof Public) + return (Public) leg; return null; } - public Date getFirstTripDepartureTime() + public Date getFirstPublicLegDepartureTime() { - final Trip firstTrip = getFirstTrip(); - if (firstTrip != null) - return firstTrip.getDepartureTime(); + final Public firstPublicLeg = getFirstPublicLeg(); + if (firstPublicLeg != null) + return firstPublicLeg.getDepartureTime(); else return null; } public Date getLastArrivalTime() { - if (parts != null) + if (legs != null) { int mins = 0; - for (int i = parts.size() - 1; i >= 0; i--) + for (int i = legs.size() - 1; i >= 0; i--) { - final Part part = parts.get(i); - if (part instanceof Footway) - mins += ((Footway) part).min; - else if (part instanceof Trip) - return new Date(((Trip) part).getArrivalTime().getTime() + 1000 * 60 * mins); + final Leg leg = legs.get(i); + if (leg instanceof Individual) + mins += ((Individual) leg).min; + else if (leg instanceof Public) + return new Date(((Public) leg).getArrivalTime().getTime() + 1000 * 60 * mins); } } return null; } - public Trip getLastTrip() + public Public getLastPublicLeg() { - if (parts != null) + if (legs != null) { - for (int i = parts.size() - 1; i >= 0; i--) + for (int i = legs.size() - 1; i >= 0; i--) { - final Part part = parts.get(i); - if (part instanceof Trip) - return (Trip) part; + final Leg leg = legs.get(i); + if (leg instanceof Public) + return (Public) leg; } } return null; } - public Date getLastTripArrivalTime() + public Date getLastPublicLegArrivalTime() { - final Trip lastTrip = getLastTrip(); - if (lastTrip != null) - return lastTrip.getArrivalTime(); + final Public lastPublicLeg = getLastPublicLeg(); + if (lastPublicLeg != null) + return lastPublicLeg.getArrivalTime(); else return null; } @@ -140,23 +140,23 @@ public final class Connection implements Serializable { final StringBuilder builder = new StringBuilder(); - if (parts != null && parts.size() > 0) + if (legs != null && legs.size() > 0) { - for (final Part part : parts) + for (final Leg leg : legs) { - builder.append(part.departure.hasId() ? part.departure.id : part.departure.lat + '/' + part.departure.lon).append('-'); - builder.append(part.arrival.hasId() ? part.arrival.id : part.arrival.lat + '/' + part.arrival.lon).append('-'); + builder.append(leg.departure.hasId() ? leg.departure.id : leg.departure.lat + '/' + leg.departure.lon).append('-'); + builder.append(leg.arrival.hasId() ? leg.arrival.id : leg.arrival.lat + '/' + leg.arrival.lon).append('-'); - if (part instanceof Footway) + if (leg instanceof Individual) { - builder.append(((Footway) part).min); + builder.append(((Individual) leg).min); } - else if (part instanceof Trip) + else if (leg instanceof Public) { - final Trip trip = (Trip) part; - builder.append(trip.departureStop.plannedDepartureTime.getTime()).append('-'); - builder.append(trip.arrivalStop.plannedArrivalTime.getTime()).append('-'); - builder.append(trip.line.label); + final Public publicLeg = (Public) leg; + builder.append(publicLeg.departureStop.plannedDepartureTime.getTime()).append('-'); + builder.append(publicLeg.arrivalStop.plannedArrivalTime.getTime()).append('-'); + builder.append(publicLeg.line.label); } builder.append('|'); @@ -175,11 +175,11 @@ public final class Connection implements Serializable final StringBuilder str = new StringBuilder(getId()); str.append(' '); - final Date firstTripDepartureTime = getFirstTripDepartureTime(); - str.append(firstTripDepartureTime != null ? FORMAT.format(firstTripDepartureTime) : "null"); + final Date firstPublicLegDepartureTime = getFirstPublicLegDepartureTime(); + str.append(firstPublicLegDepartureTime != null ? FORMAT.format(firstPublicLegDepartureTime) : "null"); str.append('-'); - final Date lastTripArrivalTime = getLastTripArrivalTime(); - str.append(lastTripArrivalTime != null ? FORMAT.format(lastTripArrivalTime) : "null"); + final Date lastPublicLegArrivalTime = getLastPublicLegArrivalTime(); + str.append(lastPublicLegArrivalTime != null ? FORMAT.format(lastPublicLegArrivalTime) : "null"); str.append(' ').append(numChanges).append("ch"); return str.toString(); @@ -202,7 +202,7 @@ public final class Connection implements Serializable return getId().hashCode(); } - public static class Part implements Serializable + public static class Leg implements Serializable { private static final long serialVersionUID = 8498461220084523265L; @@ -210,7 +210,7 @@ public final class Connection implements Serializable public final Location arrival; public List path; - public Part(final Location departure, final Location arrival, final List path) + public Leg(final Location departure, final Location arrival, final List path) { this.departure = departure; this.arrival = arrival; @@ -218,7 +218,7 @@ public final class Connection implements Serializable } } - public final static class Trip extends Part + public final static class Public extends Leg { private static final long serialVersionUID = 1312066446239817422L; @@ -229,7 +229,7 @@ public final class Connection implements Serializable public final List intermediateStops; public final String message; - public Trip(final Line line, final Location destination, final Stop departureStop, final Stop arrivalStop, + public Public(final Line line, final Location destination, final Stop departureStop, final Stop arrivalStop, final List intermediateStops, final List path, final String message) { super(departureStop != null ? departureStop.location : null, arrivalStop != null ? arrivalStop.location : null, path); @@ -321,7 +321,7 @@ public final class Connection implements Serializable } } - public final static class Footway extends Part + public final static class Individual extends Leg { private static final long serialVersionUID = -6651381862837233925L; @@ -329,7 +329,7 @@ public final class Connection implements Serializable public final int distance; public final boolean transfer; - public Footway(final int min, final int distance, final boolean transfer, final Location departure, final Location arrival, + public Individual(final int min, final int distance, final boolean transfer, final Location departure, final Location arrival, final List path) { super(departure, arrival, path); diff --git a/enabler/test/de/schildbach/pte/live/SadProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/SadProviderLiveTest.java index 77e4673f..e572b77c 100644 --- a/enabler/test/de/schildbach/pte/live/SadProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/SadProviderLiveTest.java @@ -28,7 +28,7 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.SadProvider; -import de.schildbach.pte.dto.Connection.Footway; +import de.schildbach.pte.dto.Connection.Individual; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; @@ -92,7 +92,7 @@ public class SadProviderLiveTest extends AbstractProviderLiveTest { assertFalse(result.connections.isEmpty()); - assertTrue(result.connections.get(0).parts.get(0) instanceof Footway); + assertTrue(result.connections.get(0).legs.get(0) instanceof Individual); } @Test