do not pre-populate connections with half-baked parts

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@62 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-08-10 15:55:26 +00:00
parent 9abab75816
commit ea85db9851
6 changed files with 30 additions and 33 deletions

View file

@ -250,8 +250,7 @@ public final class BahnProvider implements NetworkProvider
Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(2)));
if (!connections.isEmpty())
{
final long diff = ParserUtils.timeDiff(departureTime,
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).departureTime);
final long diff = ParserUtils.timeDiff(departureTime, connections.get(connections.size() - 1).departureTime);
if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS)
departureTime = ParserUtils.addDays(departureTime, -1);
else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS)
@ -265,9 +264,8 @@ public final class BahnProvider implements NetworkProvider
line = normalizeLine(line);
else
line = null;
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, line != null ? LINES.get(line.charAt(0)) : null));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, line,
line != null ? LINES.get(line.charAt(0)) : null, 0, from, 0, to, null);
connections.add(connection);
}
else
@ -394,8 +392,8 @@ public final class BahnProvider implements NetworkProvider
if (firstDepartureTime == null || lastArrivalTime == null)
throw new IllegalStateException("could not parse all parts of:\n" + page + "\n" + parts);
return new GetConnectionDetailsResult(new Date(), new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, lastArrivalTime, 0,
firstDeparture, 0, lastArrival, parts));
return new GetConnectionDetailsResult(new Date(), new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, lastArrivalTime,
null, null, 0, firstDeparture, 0, lastArrival, parts));
}
else
{

View file

@ -30,21 +30,25 @@ public final class Connection implements Serializable
final public String link;
final public Date departureTime;
final public Date arrivalTime;
final public String line;
final public int[] lineColors;
final public int fromId;
final public String from;
final public int toId;
final public String to;
final public List<Part> parts;
public Connection(final String id, final String link, final Date departureTime, final Date arrivalTime, final int fromId, final String from,
final int toId, final String to, final List<Part> parts)
public Connection(final String id, final String link, final Date departureTime, final Date arrivalTime, final String line,
final int[] lineColors, final int fromId, final String from, final int toId, final String to, final List<Part> parts)
{
this.id = id;
this.link = link;
this.departureTime = departureTime;
this.arrivalTime = arrivalTime;
this.line = line;
this.lineColors = lineColors;
this.fromId = fromId;
this.from = from;
this.arrivalTime = arrivalTime;
this.toId = toId;
this.to = to;
this.parts = parts;

View file

@ -289,8 +289,7 @@ public class MvvProvider implements NetworkProvider
Date departureTime = ParserUtils.joinDateTime(date, ParserUtils.parseTime(mConFine.group(4)));
if (!connections.isEmpty())
{
final long diff = ParserUtils.timeDiff(departureTime, ((Connection.Trip) connections.get(connections.size() - 1).parts
.get(0)).departureTime);
final long diff = ParserUtils.timeDiff(departureTime, connections.get(connections.size() - 1).departureTime);
if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS)
departureTime = ParserUtils.addDays(departureTime, -1);
else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS)
@ -299,9 +298,8 @@ public class MvvProvider implements NetworkProvider
Date arrivalTime = ParserUtils.joinDateTime(date, ParserUtils.parseTime(mConFine.group(5)));
if (departureTime.after(arrivalTime))
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, null, null));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, null, null, 0,
from, 0, to, null);
connections.add(connection);
}
else
@ -311,9 +309,8 @@ public class MvvProvider implements NetworkProvider
final Date departureTime = calendar.getTime();
calendar.add(Calendar.MINUTE, min);
final Date arrivalTime = calendar.getTime();
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connection.parts.add(new Connection.Footway(min, from, to));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, null, null, 0,
from, 0, to, null);
connections.add(connection);
}
}
@ -448,8 +445,8 @@ public class MvvProvider implements NetworkProvider
lastArrivalTime = calendar.getTime();
}
return new GetConnectionDetailsResult(new Date(), new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, lastArrivalTime, 0,
firstDeparture, 0, lastArrival, parts));
return new GetConnectionDetailsResult(new Date(), new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, lastArrivalTime,
null, null, 0, firstDeparture, 0, lastArrival, parts));
}
else
{

View file

@ -249,8 +249,7 @@ public class RmvProvider implements NetworkProvider
Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(2)));
if (!connections.isEmpty())
{
final long diff = ParserUtils.timeDiff(departureTime,
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).departureTime);
final long diff = ParserUtils.timeDiff(departureTime, connections.get(connections.size() - 1).departureTime);
if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS)
departureTime = ParserUtils.addDays(departureTime, -1);
else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS)
@ -264,9 +263,8 @@ public class RmvProvider implements NetworkProvider
line = normalizeLine(line);
else
line = null;
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, line != null ? LINES.get(line.charAt(0)) : null));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, line,
line != null ? LINES.get(line.charAt(0)) : null, 0, from, 0, to, null);
connections.add(connection);
}
else
@ -382,7 +380,7 @@ public class RmvProvider implements NetworkProvider
}
return new GetConnectionDetailsResult(currentDate, new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, lastArrivalTime,
0, firstDeparture, 0, lastArrival, parts));
null, null, 0, firstDeparture, 0, lastArrival, parts));
}
else
{

View file

@ -234,7 +234,7 @@ public class SbbProvider implements NetworkProvider
.parseTime(mConFine.group(5)));
final String link = uri + "#" + id; // TODO use print link?
final Connection connection = new Connection(id, link, departureTime, arrivalTime, 0, from, 0, to,
final Connection connection = new Connection(id, link, departureTime, arrivalTime, null, null, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connections.add(connection);
}
@ -437,6 +437,8 @@ public class SbbProvider implements NetworkProvider
else
strippedLine = line;
if (type.equals("ec")) // EuroCity
return "I" + strippedLine;
if (type.equals("ice")) // InterCityExpress
return "I" + strippedLine;
if (type.equals("ic")) // InterCity

View file

@ -260,8 +260,7 @@ public final class VbbProvider implements NetworkProvider
Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(2)));
if (!connections.isEmpty())
{
final long diff = ParserUtils.timeDiff(departureTime,
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).departureTime);
final long diff = ParserUtils.timeDiff(departureTime, connections.get(connections.size() - 1).departureTime);
if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS)
departureTime = ParserUtils.addDays(departureTime, -1);
else if (diff < -PARSER_DAY_ROLLDOWN_THRESHOLD_MS)
@ -271,9 +270,8 @@ public final class VbbProvider implements NetworkProvider
if (departureTime.after(arrivalTime))
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4)));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to,
new ArrayList<Connection.Part>(1));
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, line != null ? LINES.get(line) : null));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, line,
line != null ? LINES.get(line.charAt(0)) : null, 0, from, 0, to, null);
connections.add(connection);
}
else
@ -412,7 +410,7 @@ public final class VbbProvider implements NetworkProvider
if (firstDepartureTime != null && lastArrivalTime != null)
return new GetConnectionDetailsResult(currentDate, new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime,
lastArrivalTime, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts));
lastArrivalTime, null, null, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts));
else
return new GetConnectionDetailsResult(currentDate, null);
}