arrival positions and predicted positions

This commit is contained in:
Andreas Schildbach 2012-08-01 13:33:19 +02:00
parent b37c63c333
commit 3b01c1a941
6 changed files with 129 additions and 33 deletions

View file

@ -2046,7 +2046,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
XmlPullUtil.exit(pp, "itdPoint");
if (success1 || success2)
intermediateStops.add(new Stop(stopLocation, stopPosition, null, null, stopTime, null));
intermediateStops.add(new Stop(stopLocation, null, null, stopTime, stopPosition));
}
XmlPullUtil.exit(pp, "itdStopSeq");
@ -2094,8 +2094,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
final Line line = new Line(lineId, lineLabel, lineStyle(lineLabel), lineAttrs);
parts.add(new Connection.Trip(line, destination, departureTargetTime != null ? departureTargetTime : departureTime,
departureTargetTime, departurePosition, departure, arrivalTargetTime != null ? arrivalTargetTime : arrivalTime,
arrivalTargetTime, arrivalPosition, arrival, intermediateStops, path));
departureTargetTime, departurePosition, null, departure, arrivalTargetTime != null ? arrivalTargetTime : arrivalTime,
arrivalTargetTime, arrivalPosition, null, arrival, intermediateStops, path));
}
XmlPullUtil.exit(pp, "itdPartialRoute");

View file

@ -1161,7 +1161,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
{
Date stopArrivalTime = null;
Date stopDepartureTime = null;
String stopPosition = null;
String stopArrivalPosition = null;
String stopDeparturePosition = null;
if (XmlPullUtil.test(pp, "Arr"))
{
@ -1170,7 +1171,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
time.setTimeInMillis(currentDate.getTimeInMillis());
parseTime(time, XmlPullUtil.text(pp));
stopArrivalTime = time.getTime();
stopPosition = parsePlatform(pp);
stopArrivalPosition = parsePlatform(pp);
XmlPullUtil.exit(pp, "Arr");
}
@ -1181,11 +1182,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
time.setTimeInMillis(currentDate.getTimeInMillis());
parseTime(time, XmlPullUtil.text(pp));
stopDepartureTime = time.getTime();
stopPosition = parsePlatform(pp);
stopDeparturePosition = parsePlatform(pp);
XmlPullUtil.exit(pp, "Dep");
}
intermediateStops.add(new Stop(location, stopPosition, stopArrivalTime, null, stopDepartureTime, null));
intermediateStops.add(new Stop(location, stopArrivalTime, stopArrivalPosition, stopDepartureTime,
stopDeparturePosition));
}
XmlPullUtil.exit(pp, "BasicStop");
}
@ -1263,8 +1265,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
if (min == 0 || line != null)
{
parts.add(new Connection.Trip(line, destination, departureTime, null, departurePos, sectionDeparture, arrivalTime, null,
arrivalPos, sectionArrival, intermediateStops, path));
parts.add(new Connection.Trip(line, destination, departureTime, null, departurePos, null, sectionDeparture, arrivalTime,
null, arrivalPos, null, sectionArrival, intermediateStops, path));
}
else
{
@ -1753,8 +1755,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
/* final long predictedDepartureTime = */time(is, resDate, connectionDayOffset);
/* final long predictedArrivalTime = */time(is, resDate, connectionDayOffset);
/* final String predictedDeparturePosition = */normalizePosition(strings.read(is));
/* final String predictedArrivalPosition = */normalizePosition(strings.read(is));
final String predictedDeparturePosition = normalizePosition(strings.read(is));
final String predictedArrivalPosition = normalizePosition(strings.read(is));
is.readInt();
@ -1781,7 +1783,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
final long plannedStopArrivalTime = time(is, resDate, connectionDayOffset);
final Date plannedStopArrivalDate = plannedStopArrivalTime != 0 ? new Date(plannedStopArrivalTime) : null;
final String plannedStopDeparturePosition = normalizePosition(strings.read(is));
/* final String plannedStopArrivalPosition = */normalizePosition(strings.read(is));
final String plannedStopArrivalPosition = normalizePosition(strings.read(is));
is.readInt();
@ -1789,15 +1791,16 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
final Date predictedStopDepartureDate = predictedStopDepartureTime != 0 ? new Date(predictedStopDepartureTime) : null;
final long predictedStopArrivalTime = time(is, resDate, connectionDayOffset);
final Date predictedStopArrivalDate = predictedStopArrivalTime != 0 ? new Date(predictedStopArrivalTime) : null;
/* final String predictedStopDeparturePosition = */normalizePosition(strings.read(is));
/* final String predictedStopArrivalPosition = */normalizePosition(strings.read(is));
final String predictedStopDeparturePosition = normalizePosition(strings.read(is));
final String predictedStopArrivalPosition = normalizePosition(strings.read(is));
is.readInt();
final Location stopLocation = stations.read(is);
final Stop stop = new Stop(stopLocation, plannedStopDeparturePosition, plannedStopArrivalDate, predictedStopArrivalDate,
plannedStopDepartureDate, predictedStopDepartureDate);
final Stop stop = new Stop(stopLocation, plannedStopArrivalDate, predictedStopArrivalDate, plannedStopArrivalPosition,
predictedStopArrivalPosition, plannedStopDepartureDate, predictedStopDepartureDate, plannedStopDeparturePosition,
predictedStopDeparturePosition);
intermediateStops.add(stop);
}
@ -1825,8 +1828,9 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
final Location direction = directionStr != null ? new Location(LocationType.ANY, 0, null, directionStr) : null;
part = new Connection.Trip(line, direction, plannedDepartureTime != 0 ? new Date(plannedDepartureTime) : null, null,
plannedDeparturePosition, departure, plannedArrivalTime != 0 ? new Date(plannedArrivalTime) : null, null,
plannedArrivalPosition, arrival, intermediateStops, null);
plannedDeparturePosition, predictedDeparturePosition, departure, plannedArrivalTime != 0 ? new Date(
plannedArrivalTime) : null, null, plannedArrivalPosition, predictedArrivalPosition, arrival,
intermediateStops, null);
}
else
{

View file

@ -793,7 +793,7 @@ public final class BvgProvider extends AbstractHafasProvider
if (lastTime != null && time.getTime().before(lastTime))
time.add(Calendar.DAY_OF_YEAR, 1);
lastTime = time.getTime();
intermediateStops.add(new Stop(location(tStop), null, null, null, time.getTime(), null));
intermediateStops.add(new Stop(location(tStop), null, null, time.getTime(), null));
}
final Location arrival = location(tArr);
@ -821,8 +821,8 @@ public final class BvgProvider extends AbstractHafasProvider
destination = null;
}
parts.add(new Connection.Trip(line, destination, departureTime, null, departurePosition, departure, arrivalTime, null,
arrivalPosition, arrival, intermediateStops, null));
parts.add(new Connection.Trip(line, destination, departureTime, null, departurePosition, null, departure, arrivalTime,
null, arrivalPosition, null, arrival, intermediateStops, null));
numTrips++;
}
}

View file

@ -433,8 +433,8 @@ public class SadProvider extends AbstractNetworkProvider {
// predictedDepartureTime, departurePosition,
// predictedArrivalTime, arrivalPosition,
// intermediateStops, path
parts.add(new Trip(new Line(lineId, lineId, DEFAULT_STYLE), null, responseDate.get(0), null, null,
soapToLocation((SoapObject) tratto.getProperty("nodo_partenza")), responseDate.get(1), null, null,
parts.add(new Trip(new Line(lineId, lineId, DEFAULT_STYLE), null, responseDate.get(0), null, null, null,
soapToLocation((SoapObject) tratto.getProperty("nodo_partenza")), responseDate.get(1), null, null, null,
soapToLocation((SoapObject) tratto.getProperty("nodo_arrivo")), null, null));
} catch (ParseException e) {
e.printStackTrace();

View file

@ -185,15 +185,18 @@ public final class Connection implements Serializable
public final Location destination;
public final Date departureTime; // TODO rename to plannedDepartureTime
public final Date predictedDepartureTime;
public final String departurePosition;
public final String departurePosition; // TODO rename to plannedDeparturePosition
public final String predictedDeparturePosition;
public final Date arrivalTime; // TODO rename to plannedArrivalTime
public final Date predictedArrivalTime;
public final String arrivalPosition;
public final String arrivalPosition; // TODO rename to plannedArrivalPosition
public final String predictedArrivalPosition;
public final List<Stop> intermediateStops;
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<Stop> intermediateStops, final List<Point> path)
final String departurePosition, final String predictedDeparturePosition, final Location departure, final Date plannedArrivalTime,
final Date predictedArrivalTime, final String arrivalPosition, final String predictedArrivalPosition, final Location arrival,
final List<Stop> intermediateStops, final List<Point> path)
{
super(departure, arrival, path);
@ -202,9 +205,11 @@ public final class Connection implements Serializable
this.departureTime = plannedDepartureTime;
this.predictedDepartureTime = predictedDepartureTime;
this.departurePosition = departurePosition;
this.predictedDeparturePosition = predictedDeparturePosition;
this.arrivalTime = plannedArrivalTime;
this.predictedArrivalTime = predictedArrivalTime;
this.arrivalPosition = arrivalPosition;
this.predictedArrivalPosition = predictedArrivalPosition;
this.intermediateStops = intermediateStops;
}
@ -223,6 +228,21 @@ public final class Connection implements Serializable
return predictedDepartureTime != null;
}
public String getDeparturePosition()
{
if (predictedDeparturePosition != null)
return predictedDeparturePosition;
else if (departurePosition != null)
return departurePosition;
else
return null;
}
public boolean isDeparturePositionPredicted()
{
return predictedDeparturePosition != null;
}
public Date getArrivalTime()
{
if (predictedArrivalTime != null)
@ -238,6 +258,21 @@ public final class Connection implements Serializable
return predictedArrivalTime != null;
}
public String getArrivalPosition()
{
if (predictedArrivalPosition != null)
return predictedArrivalPosition;
else if (arrivalPosition != null)
return arrivalPosition;
else
return null;
}
public boolean isArrivalPositionPredicted()
{
return predictedArrivalPosition != null;
}
@Override
public String toString()
{

View file

@ -26,21 +26,42 @@ import java.util.Date;
public final class Stop implements Serializable
{
public final Location location;
public final String position;
public final Date plannedArrivalTime;
public final Date predictedArrivalTime;
public final String plannedArrivalPosition;
public final String predictedArrivalPosition;
public final Date time; // TODO rename to plannedDepartureTime
public final Date predictedDepartureTime;
public final String position; // TODO rename to plannedPosition
public final String predictedDeparturePosition;
public Stop(final Location location, final String position, final Date plannedArrivalTime, final Date predictedArrivalTime,
final Date plannedDepartureTime, final Date predictedDepartureTime)
public Stop(final Location location, final Date plannedArrivalTime, final Date predictedArrivalTime, final String plannedArrivalPosition,
final String predictedArrivalPosition, final Date plannedDepartureTime, final Date predictedDepartureTime,
final String plannedDeparturePosition, final String predictedDeparturePosition)
{
this.location = location;
this.position = position;
this.plannedArrivalTime = plannedArrivalTime;
this.predictedArrivalTime = predictedArrivalTime;
this.plannedArrivalPosition = plannedArrivalPosition;
this.predictedArrivalPosition = predictedArrivalPosition;
this.time = plannedDepartureTime;
this.predictedDepartureTime = predictedDepartureTime;
this.position = plannedDeparturePosition;
this.predictedDeparturePosition = predictedDeparturePosition;
}
public Stop(final Location location, final Date plannedArrivalTime, final String plannedArrivalPosition, final Date plannedDepartureTime,
final String plannedDeparturePosition)
{
this.location = location;
this.plannedArrivalTime = plannedArrivalTime;
this.predictedArrivalTime = null;
this.plannedArrivalPosition = plannedArrivalPosition;
this.predictedArrivalPosition = null;
this.time = plannedDepartureTime;
this.predictedDepartureTime = null;
this.position = plannedDeparturePosition;
this.predictedDeparturePosition = null;
}
public Date getArrivalTime()
@ -58,6 +79,21 @@ public final class Stop implements Serializable
return predictedArrivalTime != null;
}
public String getArrivalPosition()
{
if (predictedArrivalPosition != null)
return predictedArrivalPosition;
else if (plannedArrivalPosition != null)
return plannedArrivalPosition;
else
return null;
}
public boolean isArrivalPositionPredicted()
{
return predictedArrivalPosition != null;
}
public Date getDepartureTime()
{
if (predictedDepartureTime != null)
@ -73,21 +109,42 @@ public final class Stop implements Serializable
return predictedDepartureTime != null;
}
public String getDeparturePosition()
{
if (predictedDeparturePosition != null)
return predictedDeparturePosition;
else if (position != null)
return position;
else
return null;
}
public boolean isDeparturePositionPredicted()
{
return predictedDeparturePosition != null;
}
@Override
public String toString()
{
StringBuilder builder = new StringBuilder("Stop(");
builder.append(location);
builder.append(",");
builder.append(position != null ? position : "null");
builder.append(",");
builder.append(plannedArrivalTime != null ? plannedArrivalTime : "null");
builder.append(",");
builder.append(predictedArrivalTime != null ? predictedArrivalTime : "null");
builder.append(",");
builder.append(plannedArrivalPosition != null ? plannedArrivalPosition : "null");
builder.append(",");
builder.append(predictedArrivalPosition != null ? predictedArrivalPosition : "null");
builder.append(",");
builder.append(time != null ? time : "null");
builder.append(",");
builder.append(predictedDepartureTime != null ? predictedDepartureTime : "null");
builder.append(",");
builder.append(position != null ? position : "null");
builder.append(",");
builder.append(predictedDeparturePosition != null ? predictedDeparturePosition : "null");
builder.append(")");
return builder.toString();
}