mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-19 00:39:58 +00:00
try to parse station ids in connections
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@15 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
8fb908bb0d
commit
d6468e32c2
5 changed files with 89 additions and 56 deletions
|
@ -257,7 +257,7 @@ public final class BahnProvider implements NetworkProvider
|
||||||
line = normalizeLine(line);
|
line = normalizeLine(line);
|
||||||
else
|
else
|
||||||
line = null;
|
line = null;
|
||||||
final Connection connection = new Connection(link, departureTime, arrivalTime, from, to, new ArrayList<Connection.Part>(1));
|
final Connection connection = new Connection(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));
|
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, line != null ? LINES.get(line.charAt(0)) : null));
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
|
@ -347,8 +347,8 @@ public final class BahnProvider implements NetworkProvider
|
||||||
|
|
||||||
final Date departureDateTime = ParserUtils.joinDateTime(departureDate, departureTime);
|
final Date departureDateTime = ParserUtils.joinDateTime(departureDate, departureTime);
|
||||||
final Date arrivalDateTime = ParserUtils.joinDateTime(arrivalDate, arrivalTime);
|
final Date arrivalDateTime = ParserUtils.joinDateTime(arrivalDate, arrivalTime);
|
||||||
lastTrip = new Connection.Trip(line, LINES.get(line.charAt(0)), null, departureDateTime, departurePosition, departure,
|
lastTrip = new Connection.Trip(line, LINES.get(line.charAt(0)), null, departureDateTime, departurePosition, 0, departure,
|
||||||
arrivalDateTime, arrivalPosition, arrival);
|
arrivalDateTime, arrivalPosition, 0, arrival);
|
||||||
parts.add(lastTrip);
|
parts.add(lastTrip);
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
|
@ -385,8 +385,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(uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival,
|
return new GetConnectionDetailsResult(new Date(), new Connection(uri, firstDepartureTime, lastArrivalTime, 0, firstDeparture, 0,
|
||||||
parts));
|
lastArrival, parts));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,17 +29,22 @@ public final class Connection
|
||||||
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 int fromId;
|
||||||
final public String from;
|
final public String from;
|
||||||
|
final public int toId;
|
||||||
final public String to;
|
final public String to;
|
||||||
final public List<Part> parts;
|
final public List<Part> parts;
|
||||||
|
|
||||||
public Connection(String link, Date departureTime, Date arrivalTime, String from, String to, List<Part> parts)
|
public Connection(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)
|
||||||
{
|
{
|
||||||
this.id = extractId(link);
|
this.id = extractId(link);
|
||||||
this.link = link;
|
this.link = link;
|
||||||
this.departureTime = departureTime;
|
this.departureTime = departureTime;
|
||||||
|
this.fromId = fromId;
|
||||||
this.from = from;
|
this.from = from;
|
||||||
this.arrivalTime = arrivalTime;
|
this.arrivalTime = arrivalTime;
|
||||||
|
this.toId = toId;
|
||||||
this.to = to;
|
this.to = to;
|
||||||
this.parts = parts;
|
this.parts = parts;
|
||||||
}
|
}
|
||||||
|
@ -89,28 +94,33 @@ public final class Connection
|
||||||
final public String destination;
|
final public String destination;
|
||||||
final public Date departureTime;
|
final public Date departureTime;
|
||||||
final public String departurePosition;
|
final public String departurePosition;
|
||||||
|
final public int departureId;
|
||||||
final public String departure;
|
final public String departure;
|
||||||
final public Date arrivalTime;
|
final public Date arrivalTime;
|
||||||
final public String arrivalPosition;
|
final public String arrivalPosition;
|
||||||
|
final public int arrivalId;
|
||||||
final public String arrival;
|
final public String arrival;
|
||||||
|
|
||||||
public Trip(final String line, final int[] lineColors, final String destination, final Date departureTime, final String departurePosition,
|
public Trip(final String line, final int[] lineColors, final String destination, final Date departureTime, final String departurePosition,
|
||||||
final String departure, final Date arrivalTime, final String arrivalPosition, final String arrival)
|
final int departureId, final String departure, final Date arrivalTime, final String arrivalPosition, final int arrivalId,
|
||||||
|
final String arrival)
|
||||||
{
|
{
|
||||||
this.line = line;
|
this.line = line;
|
||||||
this.lineColors = lineColors;
|
this.lineColors = lineColors;
|
||||||
this.destination = destination;
|
this.destination = destination;
|
||||||
this.departureTime = departureTime;
|
this.departureTime = departureTime;
|
||||||
this.departurePosition = departurePosition;
|
this.departurePosition = departurePosition;
|
||||||
|
this.departureId = departureId;
|
||||||
this.departure = departure;
|
this.departure = departure;
|
||||||
this.arrivalTime = arrivalTime;
|
this.arrivalTime = arrivalTime;
|
||||||
this.arrivalPosition = arrivalPosition;
|
this.arrivalPosition = arrivalPosition;
|
||||||
|
this.arrivalId = arrivalId;
|
||||||
this.arrival = arrival;
|
this.arrival = arrival;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Trip(final Date departureTime, final Date arrivalTime, final String line, final int[] lineColors)
|
public Trip(final Date departureTime, final Date arrivalTime, final String line, final int[] lineColors)
|
||||||
{
|
{
|
||||||
this(line, lineColors, null, departureTime, null, null, arrivalTime, null, null);
|
this(line, lineColors, null, departureTime, null, 0, null, arrivalTime, null, 0, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -121,9 +131,11 @@ public final class Connection
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("destination=").append(destination);
|
builder.append("destination=").append(destination);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("departure=").append(departureTime).append("/").append(departurePosition).append("/").append(departure);
|
builder.append("departure=").append(departureTime).append("/").append(departurePosition).append("/").append(departureId).append("/")
|
||||||
|
.append(departure);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("arrival=").append(arrivalTime).append("/").append(arrivalPosition).append("/").append(arrival);
|
builder.append("arrival=").append(arrivalTime).append("/").append(arrivalPosition).append("/").append(arrivalId).append("/").append(
|
||||||
|
arrival);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
@ -135,7 +147,7 @@ public final class Connection
|
||||||
final public String departure;
|
final public String departure;
|
||||||
final public String arrival;
|
final public String arrival;
|
||||||
|
|
||||||
public Footway(int min, String departure, String arrival)
|
public Footway(final int min, final String departure, final String arrival)
|
||||||
{
|
{
|
||||||
this.min = min;
|
this.min = min;
|
||||||
this.departure = departure;
|
this.departure = departure;
|
||||||
|
|
|
@ -290,7 +290,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(link, departureTime, arrivalTime, from, to, new ArrayList<Connection.Part>(1));
|
final Connection connection = new Connection(link, departureTime, arrivalTime, 0, from, 0, to,
|
||||||
|
new ArrayList<Connection.Part>(1));
|
||||||
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, null, null));
|
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, null, null));
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
|
@ -301,7 +302,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(link, departureTime, arrivalTime, from, to, new ArrayList<Connection.Part>(1));
|
final Connection connection = new Connection(link, departureTime, arrivalTime, 0, from, 0, to,
|
||||||
|
new ArrayList<Connection.Part>(1));
|
||||||
connection.parts.add(new Connection.Footway(min, from, to));
|
connection.parts.add(new Connection.Footway(min, from, to));
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
|
@ -386,8 +388,8 @@ public class MvvProvider implements NetworkProvider
|
||||||
|
|
||||||
final String normalizedLine = normalizeLine(product, line);
|
final String normalizedLine = normalizeLine(product, line);
|
||||||
|
|
||||||
parts.add(new Connection.Trip(normalizedLine, LINES.get(normalizedLine), destination, departureTime, null, departure,
|
parts.add(new Connection.Trip(normalizedLine, LINES.get(normalizedLine), destination, departureTime, null, 0, departure,
|
||||||
arrivalTime, null, arrival));
|
arrivalTime, null, 0, arrival));
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
firstDepartureTime = departureTime;
|
firstDepartureTime = departureTime;
|
||||||
|
@ -432,8 +434,8 @@ public class MvvProvider implements NetworkProvider
|
||||||
lastArrivalTime = calendar.getTime();
|
lastArrivalTime = calendar.getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new GetConnectionDetailsResult(new Date(), new Connection(uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival,
|
return new GetConnectionDetailsResult(new Date(), new Connection(uri, firstDepartureTime, lastArrivalTime, 0, firstDeparture, 0,
|
||||||
parts));
|
lastArrival, parts));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -215,26 +215,26 @@ public class RmvProvider implements NetworkProvider
|
||||||
if (mConFine.matches())
|
if (mConFine.matches())
|
||||||
{
|
{
|
||||||
final String link = ParserUtils.resolveEntities(mConFine.group(1));
|
final String link = ParserUtils.resolveEntities(mConFine.group(1));
|
||||||
Date departure = 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(departure,
|
final long diff = ParserUtils.timeDiff(departureTime,
|
||||||
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).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)
|
||||||
departure = ParserUtils.addDays(departure, -1);
|
departureTime = ParserUtils.addDays(departureTime, -1);
|
||||||
else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS)
|
else if (diff < -PARSER_DAY_ROLLOVER_THRESHOLD_MS)
|
||||||
departure = ParserUtils.addDays(departure, 1);
|
departureTime = ParserUtils.addDays(departureTime, 1);
|
||||||
}
|
}
|
||||||
Date arrival = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
||||||
if (departure.after(arrival))
|
if (departureTime.after(arrivalTime))
|
||||||
arrival = ParserUtils.addDays(arrival, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
String line = mConFine.group(4);
|
String line = mConFine.group(4);
|
||||||
if (line != null && !line.endsWith("Um."))
|
if (line != null && !line.endsWith("Um."))
|
||||||
line = normalizeLine(line);
|
line = normalizeLine(line);
|
||||||
else
|
else
|
||||||
line = null;
|
line = null;
|
||||||
final Connection connection = new Connection(link, departure, arrival, from, to, new ArrayList<Connection.Part>(1));
|
final Connection connection = new Connection(link, departureTime, arrivalTime, 0, from, 0, to, new ArrayList<Connection.Part>(1));
|
||||||
connection.parts.add(new Connection.Trip(departure, arrival, line, line != null ? LINES.get(line.charAt(0)) : 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
|
||||||
|
@ -321,8 +321,8 @@ public class RmvProvider implements NetworkProvider
|
||||||
|
|
||||||
final Date departureDateTime = ParserUtils.joinDateTime(currentDate, departureTime);
|
final Date departureDateTime = ParserUtils.joinDateTime(currentDate, departureTime);
|
||||||
final Date arrivalDateTime = ParserUtils.joinDateTime(currentDate, arrivalTime);
|
final Date arrivalDateTime = ParserUtils.joinDateTime(currentDate, arrivalTime);
|
||||||
lastTrip = new Connection.Trip(line, LINES.get(line.charAt(0)), destination, departureDateTime, departurePosition, departure,
|
lastTrip = new Connection.Trip(line, LINES.get(line.charAt(0)), destination, departureDateTime, departurePosition, 0,
|
||||||
arrivalDateTime, arrivalPosition, arrival);
|
departure, arrivalDateTime, arrivalPosition, 0, arrival);
|
||||||
parts.add(lastTrip);
|
parts.add(lastTrip);
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
|
@ -349,8 +349,8 @@ public class RmvProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new GetConnectionDetailsResult(currentDate, new Connection(uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival,
|
return new GetConnectionDetailsResult(currentDate, new Connection(uri, firstDepartureTime, lastArrivalTime, 0, firstDeparture, 0,
|
||||||
parts));
|
lastArrival, parts));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -193,24 +193,24 @@ public final class VbbProvider implements NetworkProvider
|
||||||
if (mConFine.matches())
|
if (mConFine.matches())
|
||||||
{
|
{
|
||||||
final String link = BVG_BASE_URL + ParserUtils.resolveEntities(mConFine.group(1));
|
final String link = BVG_BASE_URL + ParserUtils.resolveEntities(mConFine.group(1));
|
||||||
Date departure = 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(departure,
|
final long diff = ParserUtils.timeDiff(departureTime,
|
||||||
((Connection.Trip) connections.get(connections.size() - 1).parts.get(0)).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)
|
||||||
departure = ParserUtils.addDays(departure, -1);
|
departureTime = ParserUtils.addDays(departureTime, -1);
|
||||||
else if (diff < -PARSER_DAY_ROLLDOWN_THRESHOLD_MS)
|
else if (diff < -PARSER_DAY_ROLLDOWN_THRESHOLD_MS)
|
||||||
departure = ParserUtils.addDays(departure, 1);
|
departureTime = ParserUtils.addDays(departureTime, 1);
|
||||||
}
|
}
|
||||||
Date arrival = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
||||||
if (departure.after(arrival))
|
if (departureTime.after(arrivalTime))
|
||||||
arrival = ParserUtils.addDays(arrival, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
String line = mConFine.group(4);
|
String line = mConFine.group(4);
|
||||||
if (line != null)
|
if (line != null)
|
||||||
line = normalizeLine(ParserUtils.resolveEntities(line));
|
line = normalizeLine(ParserUtils.resolveEntities(line));
|
||||||
final Connection connection = new Connection(link, departure, arrival, from, to, new ArrayList<Connection.Part>(1));
|
final Connection connection = new Connection(link, departureTime, arrivalTime, 0, from, 0, to, new ArrayList<Connection.Part>(1));
|
||||||
connection.parts.add(new Connection.Trip(departure, arrival, line, LINES.get(line)));
|
connection.parts.add(new Connection.Trip(departureTime, arrivalTime, line, LINES.get(line)));
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -229,7 +229,8 @@ public final class VbbProvider implements NetworkProvider
|
||||||
|
|
||||||
private static final Pattern P_CONNECTION_DETAILS_HEAD = Pattern.compile(".*(?:Datum|Abfahrt): (\\d\\d\\.\\d\\d\\.\\d\\d).*", Pattern.DOTALL);
|
private static final Pattern P_CONNECTION_DETAILS_HEAD = Pattern.compile(".*(?:Datum|Abfahrt): (\\d\\d\\.\\d\\d\\.\\d\\d).*", Pattern.DOTALL);
|
||||||
private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("<p class=\"con\\w\">\n?(.+?)\n?</p>", Pattern.DOTALL);
|
private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("<p class=\"con\\w\">\n?(.+?)\n?</p>", Pattern.DOTALL);
|
||||||
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:<a href=\".+?\">(?:\\n?<strong>)?(.+?)(?:</strong>\\n?)?</a>)?.*?" // departure
|
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:<a href=\".*?input=(\\d+).*?\">(?:\\n?<strong>)?" // departureId
|
||||||
|
+ "(.+?)(?:</strong>\\n?)?</a>)?.*?" // departure
|
||||||
+ "(?:" //
|
+ "(?:" //
|
||||||
+ "ab (\\d+:\\d+)\n?" // departureTime
|
+ "ab (\\d+:\\d+)\n?" // departureTime
|
||||||
+ "(Gl\\. \\d+)?.*?" // departurePosition
|
+ "(Gl\\. \\d+)?.*?" // departurePosition
|
||||||
|
@ -237,6 +238,7 @@ public final class VbbProvider implements NetworkProvider
|
||||||
+ "Ri\\. (.*?)[\n\\.]*<.*?" // destination
|
+ "Ri\\. (.*?)[\n\\.]*<.*?" // destination
|
||||||
+ "an (\\d+:\\d+)\n?" // arrivalTime
|
+ "an (\\d+:\\d+)\n?" // arrivalTime
|
||||||
+ "(Gl\\. \\d+)?.*?" // arrivalPosition
|
+ "(Gl\\. \\d+)?.*?" // arrivalPosition
|
||||||
|
+ "<a href=\".*?input=(\\d+).*?\">\n?" // arrivalId
|
||||||
+ "<strong>(.*?)</strong>" // arrival
|
+ "<strong>(.*?)</strong>" // arrival
|
||||||
+ "|" //
|
+ "|" //
|
||||||
+ "(\\d+) Min\\.[\n\\s]?" // footway
|
+ "(\\d+) Min\\.[\n\\s]?" // footway
|
||||||
|
@ -256,8 +258,10 @@ public final class VbbProvider implements NetworkProvider
|
||||||
|
|
||||||
Date firstDepartureTime = null;
|
Date firstDepartureTime = null;
|
||||||
String firstDeparture = null;
|
String firstDeparture = null;
|
||||||
|
int firstDepartureId = 0;
|
||||||
Date lastArrivalTime = null;
|
Date lastArrivalTime = null;
|
||||||
String lastArrival = null;
|
String lastArrival = null;
|
||||||
|
int lastArrivalId = 0;
|
||||||
|
|
||||||
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(page);
|
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(page);
|
||||||
while (mDetCoarse.find())
|
while (mDetCoarse.find())
|
||||||
|
@ -265,45 +269,60 @@ public final class VbbProvider implements NetworkProvider
|
||||||
final Matcher mDetFine = P_CONNECTION_DETAILS_FINE.matcher(mDetCoarse.group(1));
|
final Matcher mDetFine = P_CONNECTION_DETAILS_FINE.matcher(mDetCoarse.group(1));
|
||||||
if (mDetFine.matches())
|
if (mDetFine.matches())
|
||||||
{
|
{
|
||||||
String departure = ParserUtils.resolveEntities(mDetFine.group(1));
|
int departureId = 0;
|
||||||
|
String departure = ParserUtils.resolveEntities(mDetFine.group(2));
|
||||||
if (departure == null)
|
if (departure == null)
|
||||||
|
{
|
||||||
departure = lastArrival;
|
departure = lastArrival;
|
||||||
if (departure != null && firstDeparture == null)
|
departureId = lastArrivalId;
|
||||||
firstDeparture = departure;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
departureId = Integer.parseInt(mDetFine.group(1));
|
||||||
|
}
|
||||||
|
|
||||||
final String min = mDetFine.group(9);
|
if (departure != null && firstDeparture == null)
|
||||||
|
{
|
||||||
|
firstDeparture = departure;
|
||||||
|
firstDepartureId = departureId;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String min = mDetFine.group(11);
|
||||||
if (min == null)
|
if (min == null)
|
||||||
{
|
{
|
||||||
Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mDetFine.group(2)));
|
Date departureTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mDetFine.group(3)));
|
||||||
if (lastArrivalTime != null && departureTime.before(lastArrivalTime))
|
if (lastArrivalTime != null && departureTime.before(lastArrivalTime))
|
||||||
departureTime = ParserUtils.addDays(departureTime, 1);
|
departureTime = ParserUtils.addDays(departureTime, 1);
|
||||||
|
|
||||||
final String departurePosition = mDetFine.group(3);
|
final String departurePosition = mDetFine.group(4);
|
||||||
|
|
||||||
final String line = normalizeLine(ParserUtils.resolveEntities(mDetFine.group(4)));
|
final String line = normalizeLine(ParserUtils.resolveEntities(mDetFine.group(5)));
|
||||||
|
|
||||||
final String destination = ParserUtils.resolveEntities(mDetFine.group(5));
|
final String destination = ParserUtils.resolveEntities(mDetFine.group(6));
|
||||||
|
|
||||||
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mDetFine.group(6)));
|
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mDetFine.group(7)));
|
||||||
if (departureTime.after(arrivalTime))
|
if (departureTime.after(arrivalTime))
|
||||||
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
|
|
||||||
final String arrivalPosition = mDetFine.group(7);
|
final String arrivalPosition = mDetFine.group(8);
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(8));
|
final int arrivalId = Integer.parseInt(mDetFine.group(9));
|
||||||
|
|
||||||
parts.add(new Connection.Trip(line, LINES.get(line), destination, departureTime, departurePosition, departure, arrivalTime,
|
final String arrival = ParserUtils.resolveEntities(mDetFine.group(10));
|
||||||
arrivalPosition, arrival));
|
|
||||||
|
parts.add(new Connection.Trip(line, LINES.get(line), destination, departureTime, departurePosition, departureId, departure,
|
||||||
|
arrivalTime, arrivalPosition, arrivalId, arrival));
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
firstDepartureTime = departureTime;
|
firstDepartureTime = departureTime;
|
||||||
|
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
|
lastArrivalId = arrivalId;
|
||||||
lastArrivalTime = arrivalTime;
|
lastArrivalTime = arrivalTime;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(10), mDetFine.group(11)));
|
final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(12), mDetFine.group(13)));
|
||||||
|
|
||||||
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
||||||
{
|
{
|
||||||
|
@ -325,8 +344,8 @@ public final class VbbProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firstDepartureTime != null && lastArrivalTime != null)
|
if (firstDepartureTime != null && lastArrivalTime != null)
|
||||||
return new GetConnectionDetailsResult(currentDate, new Connection(uri, firstDepartureTime, lastArrivalTime, firstDeparture,
|
return new GetConnectionDetailsResult(currentDate, new Connection(uri, firstDepartureTime, lastArrivalTime, firstDepartureId,
|
||||||
lastArrival, parts));
|
firstDeparture, lastArrivalId, lastArrival, parts));
|
||||||
else
|
else
|
||||||
return new GetConnectionDetailsResult(currentDate, null);
|
return new GetConnectionDetailsResult(currentDate, null);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue