mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-17 17:09:51 +00:00
individual legs have departure and arrival times, too
This commit is contained in:
parent
3aab4006d5
commit
871b08f13a
4 changed files with 51 additions and 62 deletions
|
@ -1937,7 +1937,6 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
final String productName = pp.getAttributeValue(null, "productName");
|
||||
if ("IT".equals(partialRouteType) || "Fussweg".equals(productName) || "Taxi".equals(productName))
|
||||
{
|
||||
final int min = (int) (arrivalTime.getTime() - departureTime.getTime()) / 1000 / 60;
|
||||
final Trip.Individual.Type type = "Taxi".equals(productName) ? Trip.Individual.Type.TRANSFER : Trip.Individual.Type.WALK;
|
||||
|
||||
XmlPullUtil.enter(pp, "itdMeansOfTransport");
|
||||
|
@ -1959,11 +1958,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
final Trip.Individual lastIndividual = (Trip.Individual) legs.remove(legs.size() - 1);
|
||||
if (path != null && lastIndividual.path != null)
|
||||
path.addAll(0, lastIndividual.path);
|
||||
legs.add(new Trip.Individual(lastIndividual.min + min, distance, type, lastIndividual.departure, arrivalLocation, path));
|
||||
legs.add(new Trip.Individual(type, lastIndividual.departure, lastIndividual.departureTime, arrivalLocation, arrivalTime,
|
||||
path, distance));
|
||||
}
|
||||
else
|
||||
{
|
||||
legs.add(new Trip.Individual(min, distance, type, departureLocation, arrivalLocation, path));
|
||||
legs.add(new Trip.Individual(type, departureLocation, departureTime, arrivalLocation, arrivalTime, path, distance));
|
||||
}
|
||||
}
|
||||
else if ("gesicherter Anschluss".equals(productName) || "nicht umsteigen".equals(productName)) // type97
|
||||
|
|
|
@ -1145,7 +1145,6 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
// journey
|
||||
final Line line;
|
||||
Location destination = null;
|
||||
int min = 0;
|
||||
|
||||
List<Stop> intermediateStops = null;
|
||||
|
||||
|
@ -1253,9 +1252,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
{
|
||||
XmlPullUtil.enter(pp);
|
||||
XmlPullUtil.enter(pp, "Duration");
|
||||
XmlPullUtil.require(pp, "Time");
|
||||
min = parseDuration(XmlPullUtil.text(pp).substring(3, 8));
|
||||
XmlPullUtil.exit(pp);
|
||||
XmlPullUtil.exit(pp, "Duration");
|
||||
XmlPullUtil.exit(pp);
|
||||
|
||||
line = null;
|
||||
|
@ -1310,7 +1307,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
|
||||
XmlPullUtil.exit(pp, "ConSection");
|
||||
|
||||
if (min == 0 || line != null)
|
||||
if (line != null)
|
||||
{
|
||||
final Stop departure = new Stop(sectionDepartureLocation, true, departureTime, null, departurePos, null);
|
||||
final Stop arrival = new Stop(sectionArrivalLocation, false, arrivalTime, null, arrivalPos, null);
|
||||
|
@ -1322,12 +1319,13 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
if (legs.size() > 0 && legs.get(legs.size() - 1) instanceof Trip.Individual)
|
||||
{
|
||||
final Trip.Individual lastIndividualLeg = (Trip.Individual) legs.remove(legs.size() - 1);
|
||||
legs.add(new Trip.Individual(lastIndividualLeg.min + min, 0, Trip.Individual.Type.WALK, lastIndividualLeg.departure,
|
||||
sectionArrivalLocation, null));
|
||||
legs.add(new Trip.Individual(Trip.Individual.Type.WALK, lastIndividualLeg.departure, lastIndividualLeg.departureTime,
|
||||
sectionArrivalLocation, arrivalTime, null, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
legs.add(new Trip.Individual(min, 0, Trip.Individual.Type.WALK, sectionDepartureLocation, sectionArrivalLocation, null));
|
||||
legs.add(new Trip.Individual(Trip.Individual.Type.WALK, sectionDepartureLocation, departureTime, sectionArrivalLocation,
|
||||
arrivalTime, null, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1900,7 +1898,6 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
final Trip.Leg leg;
|
||||
if (type == 1 /* Fussweg */|| type == 3 /* Uebergang */|| type == 4 /* Uebergang */)
|
||||
{
|
||||
final int min = (int) ((plannedArrivalTime - plannedDepartureTime) / 1000 / 60);
|
||||
final Trip.Individual.Type individualType;
|
||||
if (routingType == null)
|
||||
individualType = type == 1 ? Trip.Individual.Type.WALK : Trip.Individual.Type.TRANSFER;
|
||||
|
@ -1917,12 +1914,13 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
|
|||
if (lastLeg != null && lastLeg instanceof Trip.Individual && ((Trip.Individual) lastLeg).type == individualType)
|
||||
{
|
||||
final Trip.Individual lastIndividualLeg = (Trip.Individual) legs.remove(legs.size() - 1);
|
||||
leg = new Trip.Individual(lastIndividualLeg.min + min, 0, individualType, lastIndividualLeg.departure,
|
||||
arrivalLocation, null);
|
||||
leg = new Trip.Individual(individualType, lastIndividualLeg.departure, lastIndividualLeg.departureTime,
|
||||
arrivalLocation, new Date(plannedArrivalTime), null, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
leg = new Trip.Individual(min, 0, individualType, departureLocation, arrivalLocation, null);
|
||||
leg = new Trip.Individual(individualType, departureLocation, new Date(plannedDepartureTime), arrivalLocation,
|
||||
new Date(plannedArrivalTime), null, 0);
|
||||
}
|
||||
}
|
||||
else if (type == 2)
|
||||
|
|
|
@ -416,9 +416,10 @@ public class SadProvider extends AbstractNetworkProvider {
|
|||
// Add footway to legs list
|
||||
if (isFootway) {
|
||||
// NOTE: path is set to null
|
||||
legs.add(new Trip.Individual(Integer.parseInt(tratto.getPropertyAsString("durata").split(":")[1]), 0, Trip.Individual.Type.WALK,
|
||||
soapToLocation((SoapObject) tratto.getProperty("nodo_partenza")), soapToLocation((SoapObject) tratto
|
||||
.getProperty("nodo_arrivo")), null));
|
||||
throw new UnsupportedOperationException();
|
||||
// legs.add(new Trip.Individual(Integer.parseInt(tratto.getPropertyAsString("durata").split(":")[1]), 0, Trip.Individual.Type.WALK,
|
||||
// soapToLocation((SoapObject) tratto.getProperty("nodo_partenza")), soapToLocation((SoapObject) tratto
|
||||
// .getProperty("nodo_arrivo")), null));
|
||||
}
|
||||
|
||||
// Add trip to legs list
|
||||
|
|
|
@ -52,19 +52,10 @@ public final class Trip implements Serializable
|
|||
|
||||
public Date getFirstDepartureTime()
|
||||
{
|
||||
if (legs != null)
|
||||
{
|
||||
int mins = 0;
|
||||
for (final Leg leg : legs)
|
||||
{
|
||||
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;
|
||||
if (legs != null && !legs.isEmpty())
|
||||
return legs.get(0).departureTime;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public Public getFirstPublicLeg()
|
||||
|
@ -88,20 +79,10 @@ public final class Trip implements Serializable
|
|||
|
||||
public Date getLastArrivalTime()
|
||||
{
|
||||
if (legs != null)
|
||||
{
|
||||
int mins = 0;
|
||||
for (int i = legs.size() - 1; i >= 0; i--)
|
||||
{
|
||||
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;
|
||||
if (legs != null && !legs.isEmpty())
|
||||
return legs.get(legs.size() - 1).arrivalTime;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
public Public getLastPublicLeg()
|
||||
|
@ -207,14 +188,24 @@ public final class Trip implements Serializable
|
|||
private static final long serialVersionUID = 8498461220084523265L;
|
||||
|
||||
public final Location departure;
|
||||
public final Date departureTime;
|
||||
public final Location arrival;
|
||||
public final Date arrivalTime;
|
||||
public List<Point> path;
|
||||
public final int min;
|
||||
|
||||
public Leg(final Location departure, final Location arrival, final List<Point> path)
|
||||
public Leg(final Location departure, final Date departureTime, final Location arrival, final Date arrivalTime, final List<Point> path)
|
||||
{
|
||||
this.departure = departure;
|
||||
this.departureTime = departureTime;
|
||||
this.arrival = arrival;
|
||||
this.arrivalTime = arrivalTime;
|
||||
this.path = path;
|
||||
|
||||
if (arrivalTime != null && departureTime != null)
|
||||
this.min = (int) ((arrivalTime.getTime() - departureTime.getTime()) / 1000 / 60);
|
||||
else
|
||||
this.min = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -232,7 +223,7 @@ public final class Trip implements Serializable
|
|||
public Public(final Line line, final Location destination, final Stop departureStop, final Stop arrivalStop,
|
||||
final List<Stop> intermediateStops, final List<Point> path, final String message)
|
||||
{
|
||||
super(departureStop != null ? departureStop.location : null, arrivalStop != null ? arrivalStop.location : null, path);
|
||||
super(departureStop.location, departureStop.getDepartureTime(), arrivalStop.location, arrivalStop.getArrivalTime(), path);
|
||||
|
||||
this.line = line;
|
||||
this.destination = destination;
|
||||
|
@ -323,39 +314,38 @@ public final class Trip implements Serializable
|
|||
|
||||
public final static class Individual extends Leg
|
||||
{
|
||||
private static final long serialVersionUID = -6651381862837233925L;
|
||||
|
||||
public final int min;
|
||||
public final int distance;
|
||||
public final Type type;
|
||||
|
||||
public enum Type
|
||||
{
|
||||
WALK, BIKE, CAR, TRANSFER
|
||||
}
|
||||
|
||||
public Individual(final int min, final int distance, final Type type, final Location departure, final Location arrival, final List<Point> path)
|
||||
{
|
||||
super(departure, arrival, path);
|
||||
private static final long serialVersionUID = -6651381862837233925L;
|
||||
|
||||
public final Type type;
|
||||
public final int distance;
|
||||
|
||||
public Individual(final Type type, final Location departure, final Date departureTime, final Location arrival, final Date arrivalTime,
|
||||
final List<Point> path, final int distance)
|
||||
{
|
||||
super(departure, departureTime, arrival, arrivalTime, path);
|
||||
|
||||
this.min = min;
|
||||
this.distance = distance;
|
||||
this.type = type;
|
||||
this.distance = distance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
final StringBuilder builder = new StringBuilder(getClass().getName() + "[");
|
||||
builder.append("min=").append(min);
|
||||
builder.append(",");
|
||||
builder.append("distance=").append(distance);
|
||||
builder.append(",");
|
||||
builder.append("type=").append(type);
|
||||
builder.append(",");
|
||||
builder.append("departure=").append(departure.toDebugString());
|
||||
builder.append(",");
|
||||
builder.append("arrival=").append(arrival.toDebugString());
|
||||
builder.append(",");
|
||||
builder.append("distance=").append(distance);
|
||||
builder.append(",");
|
||||
builder.append("min=").append(min);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue