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

View file

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

View file

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

View file

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

View file

@ -234,7 +234,7 @@ public class SbbProvider implements NetworkProvider
.parseTime(mConFine.group(5))); .parseTime(mConFine.group(5)));
final String link = uri + "#" + id; // TODO use print link? 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)); new ArrayList<Connection.Part>(1));
connections.add(connection); connections.add(connection);
} }
@ -437,6 +437,8 @@ public class SbbProvider implements NetworkProvider
else else
strippedLine = line; strippedLine = line;
if (type.equals("ec")) // EuroCity
return "I" + strippedLine;
if (type.equals("ice")) // InterCityExpress if (type.equals("ice")) // InterCityExpress
return "I" + strippedLine; return "I" + strippedLine;
if (type.equals("ic")) // InterCity 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))); Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(2)));
if (!connections.isEmpty()) if (!connections.isEmpty())
{ {
final long diff = ParserUtils.timeDiff(departureTime, final long diff = ParserUtils.timeDiff(departureTime, connections.get(connections.size() - 1).departureTime);
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).departureTime);
if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS) if (diff > PARSER_DAY_ROLLOVER_THRESHOLD_MS)
departureTime = ParserUtils.addDays(departureTime, -1); departureTime = ParserUtils.addDays(departureTime, -1);
else if (diff < -PARSER_DAY_ROLLDOWN_THRESHOLD_MS) else if (diff < -PARSER_DAY_ROLLDOWN_THRESHOLD_MS)
@ -271,9 +270,8 @@ public final class VbbProvider implements NetworkProvider
if (departureTime.after(arrivalTime)) if (departureTime.after(arrivalTime))
arrivalTime = ParserUtils.addDays(arrivalTime, 1); arrivalTime = ParserUtils.addDays(arrivalTime, 1);
final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4))); final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4)));
final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, 0, from, 0, to, final Connection connection = new Connection(ParserUtils.extractId(link), link, departureTime, arrivalTime, line,
new ArrayList<Connection.Part>(1)); line != null ? LINES.get(line.charAt(0)) : null, 0, from, 0, to, null);
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, line != null ? LINES.get(line) : null));
connections.add(connection); connections.add(connection);
} }
else else
@ -412,7 +410,7 @@ public final class VbbProvider implements NetworkProvider
if (firstDepartureTime != null && lastArrivalTime != null) if (firstDepartureTime != null && lastArrivalTime != null)
return new GetConnectionDetailsResult(currentDate, new Connection(ParserUtils.extractId(uri), uri, firstDepartureTime, 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 else
return new GetConnectionDetailsResult(currentDate, null); return new GetConnectionDetailsResult(currentDate, null);
} }