mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-15 00:50:31 +00:00
finalized migration to Location objects
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@511 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
943f1c6016
commit
23a10a4de2
7 changed files with 87 additions and 127 deletions
|
@ -1263,9 +1263,9 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
|
|
||||||
XmlPullUtil.enter(pp, "itdPartialRouteList");
|
XmlPullUtil.enter(pp, "itdPartialRouteList");
|
||||||
final List<Connection.Part> parts = new LinkedList<Connection.Part>();
|
final List<Connection.Part> parts = new LinkedList<Connection.Part>();
|
||||||
String firstDeparture = null;
|
Location firstDeparture = null;
|
||||||
Date firstDepartureTime = null;
|
Date firstDepartureTime = null;
|
||||||
String lastArrival = null;
|
Location lastArrival = null;
|
||||||
Date lastArrivalTime = null;
|
Date lastArrivalTime = null;
|
||||||
|
|
||||||
while (XmlPullUtil.test(pp, "itdPartialRoute"))
|
while (XmlPullUtil.test(pp, "itdPartialRoute"))
|
||||||
|
@ -1276,7 +1276,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
if (!"departure".equals(pp.getAttributeValue(null, "usage")))
|
if (!"departure".equals(pp.getAttributeValue(null, "usage")))
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
final int departureId = Integer.parseInt(pp.getAttributeValue(null, "stopID"));
|
final int departureId = Integer.parseInt(pp.getAttributeValue(null, "stopID"));
|
||||||
final String departure = normalizeLocationName(pp.getAttributeValue(null, "name"));
|
final String departureName = normalizeLocationName(pp.getAttributeValue(null, "name"));
|
||||||
|
final Location departure = new Location(LocationType.STATION, departureId, null, departureName);
|
||||||
if (firstDeparture == null)
|
if (firstDeparture == null)
|
||||||
firstDeparture = departure;
|
firstDeparture = departure;
|
||||||
final String departurePosition = normalizePlatform(pp.getAttributeValue(null, "platform"),
|
final String departurePosition = normalizePlatform(pp.getAttributeValue(null, "platform"),
|
||||||
|
@ -1294,7 +1295,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
if (!"arrival".equals(pp.getAttributeValue(null, "usage")))
|
if (!"arrival".equals(pp.getAttributeValue(null, "usage")))
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
final int arrivalId = Integer.parseInt(pp.getAttributeValue(null, "stopID"));
|
final int arrivalId = Integer.parseInt(pp.getAttributeValue(null, "stopID"));
|
||||||
final String arrival = normalizeLocationName(pp.getAttributeValue(null, "name"));
|
final String arrivalName = normalizeLocationName(pp.getAttributeValue(null, "name"));
|
||||||
|
final Location arrival = new Location(LocationType.STATION, arrivalId, null, arrivalName);
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
final String arrivalPosition = normalizePlatform(pp.getAttributeValue(null, "platform"),
|
final String arrivalPosition = normalizePlatform(pp.getAttributeValue(null, "platform"),
|
||||||
pp.getAttributeValue(null, "platformName"));
|
pp.getAttributeValue(null, "platformName"));
|
||||||
|
@ -1327,12 +1329,11 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
||||||
if (path != null && lastFootway.path != null)
|
if (path != null && lastFootway.path != null)
|
||||||
path.addAll(0, lastFootway.path);
|
path.addAll(0, lastFootway.path);
|
||||||
parts.add(new Connection.Footway(lastFootway.min + min, lastFootway.departureId, lastFootway.departure, arrivalId,
|
parts.add(new Connection.Footway(lastFootway.min + min, lastFootway.departure, arrival, path));
|
||||||
arrival, path));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Footway(min, departureId, departure, arrivalId, arrival, path));
|
parts.add(new Connection.Footway(min, departure, arrival, path));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ("gesicherter Anschluss".equals(productName) || "nicht umsteigen".equals(productName)) // type97
|
else if ("gesicherter Anschluss".equals(productName) || "nicht umsteigen".equals(productName)) // type97
|
||||||
|
@ -1401,8 +1402,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
if (XmlPullUtil.test(pp, "itdPathCoordinates"))
|
if (XmlPullUtil.test(pp, "itdPathCoordinates"))
|
||||||
path = processItdPathCoordinates(pp);
|
path = processItdPathCoordinates(pp);
|
||||||
|
|
||||||
parts.add(new Connection.Trip(line, destination, departureTime.getTime(), departurePosition, departureId, departure,
|
parts.add(new Connection.Trip(line, destination, departureTime.getTime(), departurePosition, departure, arrivalTime
|
||||||
arrivalTime.getTime(), arrivalPosition, arrivalId, arrival, intermediateStops, path));
|
.getTime(), arrivalPosition, arrival, intermediateStops, path));
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "itdPartialRoute");
|
XmlPullUtil.exit(pp, "itdPartialRoute");
|
||||||
|
@ -1447,8 +1448,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
XmlPullUtil.exit(pp, "itdFare");
|
XmlPullUtil.exit(pp, "itdFare");
|
||||||
}
|
}
|
||||||
connections.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, 0, firstDeparture, 0, lastArrival, parts, fares
|
connections.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts,
|
||||||
.isEmpty() ? null : fares));
|
fares.isEmpty() ? null : fares));
|
||||||
XmlPullUtil.exit(pp, "itdRoute");
|
XmlPullUtil.exit(pp, "itdRoute");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -447,21 +447,19 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
|
|
||||||
if (min == 0 || line != null)
|
if (min == 0 || line != null)
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Trip(line, destination, departureTime, departurePos, sectionDeparture.id, sectionDeparture.name,
|
parts.add(new Connection.Trip(line, destination, departureTime, departurePos, sectionDeparture, arrivalTime, arrivalPos,
|
||||||
arrivalTime, arrivalPos, sectionArrival.id, sectionArrival.name, null, null));
|
sectionArrival, null, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
||||||
{
|
{
|
||||||
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
||||||
parts.add(new Connection.Footway(lastFootway.min + min, lastFootway.departureId, lastFootway.departure,
|
parts.add(new Connection.Footway(lastFootway.min + min, lastFootway.departure, sectionArrival, null));
|
||||||
sectionArrival.id, sectionArrival.name, null));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Footway(min, sectionDeparture.id, sectionDeparture.name, sectionArrival.id, sectionArrival.name,
|
parts.add(new Connection.Footway(min, sectionDeparture, sectionArrival, null));
|
||||||
null));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,8 +472,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
|
|
||||||
XmlPullUtil.exit(pp);
|
XmlPullUtil.exit(pp);
|
||||||
|
|
||||||
connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure.id, departure.name, arrival.id, arrival.name,
|
connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null));
|
||||||
parts, null));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlPullUtil.exit(pp);
|
XmlPullUtil.exit(pp);
|
||||||
|
|
|
@ -266,7 +266,7 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
if (departureTime.after(arrivalTime))
|
if (departureTime.after(arrivalTime))
|
||||||
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
|
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
|
||||||
0, from.name, 0, to.name, null, null);
|
from, to, null, null);
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -325,9 +325,9 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
||||||
|
|
||||||
Date firstDepartureTime = null;
|
Date firstDepartureTime = null;
|
||||||
String firstDeparture = null;
|
Location firstDeparture = null;
|
||||||
Date lastArrivalTime = null;
|
Date lastArrivalTime = null;
|
||||||
String lastArrival = null;
|
Location lastArrival = null;
|
||||||
Connection.Trip lastTrip = null;
|
Connection.Trip lastTrip = null;
|
||||||
|
|
||||||
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(mHead.group(1));
|
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(mHead.group(1));
|
||||||
|
@ -343,7 +343,7 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
final Matcher mDetFine = P_CONNECTION_DETAILS_FINE.matcher(section);
|
final Matcher mDetFine = P_CONNECTION_DETAILS_FINE.matcher(section);
|
||||||
if (mDetFine.matches())
|
if (mDetFine.matches())
|
||||||
{
|
{
|
||||||
final String departure = ParserUtils.resolveEntities(mDetFine.group(1));
|
final Location departure = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mDetFine.group(1)));
|
||||||
if (departure != null && firstDeparture == null)
|
if (departure != null && firstDeparture == null)
|
||||||
firstDeparture = departure;
|
firstDeparture = departure;
|
||||||
|
|
||||||
|
@ -357,7 +357,7 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
final Date departureDate = ParserUtils.parseDate(mDetFine.group(5));
|
final Date departureDate = ParserUtils.parseDate(mDetFine.group(5));
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(6));
|
final Location arrival = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mDetFine.group(6)));
|
||||||
|
|
||||||
final Date arrivalTime = ParserUtils.parseTime(mDetFine.group(7));
|
final Date arrivalTime = ParserUtils.parseTime(mDetFine.group(7));
|
||||||
|
|
||||||
|
@ -367,8 +367,8 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
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, null, departureDateTime, departurePosition, 0, departure, arrivalDateTime,
|
lastTrip = new Connection.Trip(line, null, departureDateTime, departurePosition, departure, arrivalDateTime,
|
||||||
arrivalPosition, 0, arrival, null, null);
|
arrivalPosition, arrival, null, null);
|
||||||
parts.add(lastTrip);
|
parts.add(lastTrip);
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
|
@ -381,25 +381,25 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
{
|
{
|
||||||
final String min = mDetFine.group(10);
|
final String min = mDetFine.group(10);
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(11));
|
final Location arrival = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mDetFine.group(11)));
|
||||||
|
|
||||||
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
||||||
{
|
{
|
||||||
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
||||||
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), 0, lastFootway.departure, 0, arrival, null));
|
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), lastFootway.departure, arrival, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Footway(Integer.parseInt(min), 0, departure, 0, arrival, null));
|
parts.add(new Connection.Footway(Integer.parseInt(min), departure, arrival, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(12));
|
final Location arrival = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mDetFine.group(12)));
|
||||||
|
|
||||||
parts.add(new Connection.Footway(0, 0, departure, 0, arrival, null));
|
parts.add(new Connection.Footway(0, departure, arrival, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -414,7 +414,7 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
throw new IllegalStateException("could not parse all parts of:\n" + mHead.group(1) + "\n" + parts);
|
throw new IllegalStateException("could not parse all parts of:\n" + mHead.group(1) + "\n" + parts);
|
||||||
|
|
||||||
return new GetConnectionDetailsResult(new Date(), new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime,
|
return new GetConnectionDetailsResult(new Date(), new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime,
|
||||||
lastArrivalTime, 0, firstDeparture, 0, lastArrival, parts, null));
|
lastArrivalTime, firstDeparture, lastArrival, parts, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -421,7 +421,7 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
if (departureTime.after(arrivalTime))
|
if (departureTime.after(arrivalTime))
|
||||||
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
|
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
|
||||||
0, from.name, 0, to.name, null, null);
|
from, to, null, null);
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -471,11 +471,9 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
||||||
|
|
||||||
Date firstDepartureTime = null;
|
Date firstDepartureTime = null;
|
||||||
String firstDeparture = null;
|
Location firstDeparture = null;
|
||||||
int firstDepartureId = 0;
|
|
||||||
Date lastArrivalTime = null;
|
Date lastArrivalTime = null;
|
||||||
String lastArrival = null;
|
Location 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())
|
||||||
|
@ -483,23 +481,20 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
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())
|
||||||
{
|
{
|
||||||
int departureId = 0;
|
final String departureName = ParserUtils.resolveEntities(mDetFine.group(2));
|
||||||
String departure = ParserUtils.resolveEntities(mDetFine.group(2));
|
final Location departure;
|
||||||
if (departure == null)
|
if (departureName != null)
|
||||||
{
|
{
|
||||||
departure = lastArrival;
|
final int departureId = Integer.parseInt(mDetFine.group(1));
|
||||||
departureId = lastArrivalId;
|
departure = new Location(departureId != 0 ? LocationType.STATION : LocationType.ANY, departureId, null, departureName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
departureId = Integer.parseInt(mDetFine.group(1));
|
departure = lastArrival;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (departure != null && firstDeparture == null)
|
if (departure != null && firstDeparture == null)
|
||||||
{
|
|
||||||
firstDeparture = departure;
|
firstDeparture = departure;
|
||||||
firstDepartureId = departureId;
|
|
||||||
}
|
|
||||||
|
|
||||||
final String min = mDetFine.group(11);
|
final String min = mDetFine.group(11);
|
||||||
if (min == null)
|
if (min == null)
|
||||||
|
@ -522,43 +517,42 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
final int arrivalId = Integer.parseInt(mDetFine.group(9));
|
final int arrivalId = Integer.parseInt(mDetFine.group(9));
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(10));
|
final Location arrival = new Location(LocationType.STATION, arrivalId, null, ParserUtils.resolveEntities(mDetFine.group(10)));
|
||||||
|
|
||||||
parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departureId, departure, arrivalTime,
|
parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, arrivalPosition,
|
||||||
arrivalPosition, arrivalId, arrival, null, null));
|
arrival, null, null));
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
firstDepartureTime = departureTime;
|
firstDepartureTime = departureTime;
|
||||||
|
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
lastArrivalId = arrivalId;
|
|
||||||
lastArrivalTime = arrivalTime;
|
lastArrivalTime = arrivalTime;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final int arrivalId = mDetFine.group(12) != null ? Integer.parseInt(mDetFine.group(12)) : 0;
|
final int arrivalId = mDetFine.group(12) != null ? Integer.parseInt(mDetFine.group(12)) : 0;
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(ParserUtils.selectNotNull(mDetFine.group(13), mDetFine.group(16),
|
|
||||||
mDetFine.group(17)));
|
|
||||||
|
|
||||||
final int arrivalLon = mDetFine.group(14) != null ? Integer.parseInt(mDetFine.group(14)) : 0;
|
final int arrivalLon = mDetFine.group(14) != null ? Integer.parseInt(mDetFine.group(14)) : 0;
|
||||||
|
|
||||||
final int arrivalLat = mDetFine.group(15) != null ? Integer.parseInt(mDetFine.group(15)) : 0;
|
final int arrivalLat = mDetFine.group(15) != null ? Integer.parseInt(mDetFine.group(15)) : 0;
|
||||||
|
|
||||||
|
final String arrivalName = ParserUtils.resolveEntities(ParserUtils.selectNotNull(mDetFine.group(13), mDetFine.group(16),
|
||||||
|
mDetFine.group(17)));
|
||||||
|
|
||||||
|
final Location arrival = new Location(arrivalId != 0 ? LocationType.STATION : LocationType.ANY, arrivalId, arrivalLat,
|
||||||
|
arrivalLon, null, arrivalName);
|
||||||
|
|
||||||
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
||||||
{
|
{
|
||||||
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
||||||
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), lastFootway.departureId, lastFootway.departure,
|
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), lastFootway.departure, arrival, null));
|
||||||
arrivalId, arrival, arrivalLat, arrivalLon, null));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Footway(Integer.parseInt(min), departureId, departure, arrivalId, arrival, arrivalLat,
|
parts.add(new Connection.Footway(Integer.parseInt(min), departure, arrival, null));
|
||||||
arrivalLon, null));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
lastArrivalId = arrivalId;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -569,7 +563,7 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
if (firstDepartureTime != null && lastArrivalTime != null)
|
if (firstDepartureTime != null && lastArrivalTime != null)
|
||||||
return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri,
|
return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri,
|
||||||
firstDepartureTime, lastArrivalTime, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts, null));
|
firstDepartureTime, lastArrivalTime, firstDeparture, lastArrival, parts, null));
|
||||||
else
|
else
|
||||||
return new GetConnectionDetailsResult(currentDate, null);
|
return new GetConnectionDetailsResult(currentDate, null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -410,7 +410,7 @@ public class OebbProvider extends AbstractHafasProvider
|
||||||
: overviewDepartureDate, ParserUtils.parseTime(mConFine.group(4)));
|
: overviewDepartureDate, ParserUtils.parseTime(mConFine.group(4)));
|
||||||
final String link = allDetailsUri; // TODO use print link?
|
final String link = allDetailsUri; // TODO use print link?
|
||||||
|
|
||||||
final Connection connection = new Connection(id, link, overviewDepartureTime, overviewArrivalTime, 0, from.name, 0, to.name,
|
final Connection connection = new Connection(id, link, overviewDepartureTime, overviewArrivalTime, from, to,
|
||||||
new ArrayList<Connection.Part>(1), null);
|
new ArrayList<Connection.Part>(1), null);
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
|
|
||||||
|
@ -424,7 +424,8 @@ public class OebbProvider extends AbstractHafasProvider
|
||||||
{
|
{
|
||||||
final int departureId = mDetFine.group(1) != null ? Integer.parseInt(mDetFine.group(1)) : 0;
|
final int departureId = mDetFine.group(1) != null ? Integer.parseInt(mDetFine.group(1)) : 0;
|
||||||
|
|
||||||
final String departure = ParserUtils.resolveEntities(mDetFine.group(2));
|
final Location departure = new Location(departureId != 0 ? LocationType.STATION : LocationType.ANY, departureId, null,
|
||||||
|
ParserUtils.resolveEntities(mDetFine.group(2)));
|
||||||
|
|
||||||
Date detailsDepartureDate = mDetFine.group(3) != null ? ParserUtils.parseDate(mDetFine.group(3)) : lastDate;
|
Date detailsDepartureDate = mDetFine.group(3) != null ? ParserUtils.parseDate(mDetFine.group(3)) : lastDate;
|
||||||
if (detailsDepartureDate != null)
|
if (detailsDepartureDate != null)
|
||||||
|
@ -437,7 +438,8 @@ public class OebbProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
final int arrivalId = mDetFine.group(8) != null ? Integer.parseInt(mDetFine.group(8)) : 0;
|
final int arrivalId = mDetFine.group(8) != null ? Integer.parseInt(mDetFine.group(8)) : 0;
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(9));
|
final Location arrival = new Location(arrivalId != 0 ? LocationType.STATION : LocationType.ANY, arrivalId, null,
|
||||||
|
ParserUtils.resolveEntities(mDetFine.group(9)));
|
||||||
|
|
||||||
Date detailsArrivalDate = mDetFine.group(10) != null ? ParserUtils.parseDate(mDetFine.group(10)) : lastDate;
|
Date detailsArrivalDate = mDetFine.group(10) != null ? ParserUtils.parseDate(mDetFine.group(10)) : lastDate;
|
||||||
if (detailsArrivalDate != null)
|
if (detailsArrivalDate != null)
|
||||||
|
@ -464,14 +466,14 @@ public class OebbProvider extends AbstractHafasProvider
|
||||||
ParserUtils.resolveEntities(mDetFine.group(13))) : null;
|
ParserUtils.resolveEntities(mDetFine.group(13))) : null;
|
||||||
|
|
||||||
final Connection.Trip trip = new Connection.Trip(line, destination, detailsDepartureDateTime, departurePosition,
|
final Connection.Trip trip = new Connection.Trip(line, destination, detailsDepartureDateTime, departurePosition,
|
||||||
departureId, departure, detailsArrivalDateTime, arrivalPosition, arrivalId, arrival, null, null);
|
departure, detailsArrivalDateTime, arrivalPosition, arrival, null, null);
|
||||||
connection.parts.add(trip);
|
connection.parts.add(trip);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final int min = (int) (detailsArrivalDateTime.getTime() - detailsDepartureDateTime.getTime()) / 1000 / 60;
|
final int min = (int) (detailsArrivalDateTime.getTime() - detailsDepartureDateTime.getTime()) / 1000 / 60;
|
||||||
|
|
||||||
final Connection.Footway footway = new Connection.Footway(min, departureId, departure, arrivalId, arrival, null);
|
final Connection.Footway footway = new Connection.Footway(min, departure, arrival, null);
|
||||||
connection.parts.add(footway);
|
connection.parts.add(footway);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,8 +285,7 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
Date arrivalTime = ParserUtils.joinDateTime(currentDate, ParserUtils.parseTime(mConFine.group(3)));
|
||||||
if (departureTime.after(arrivalTime))
|
if (departureTime.after(arrivalTime))
|
||||||
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||||
final Connection connection = new Connection(extractConnectionId(link), link, departureTime, arrivalTime, 0, from.name, 0,
|
final Connection connection = new Connection(extractConnectionId(link), link, departureTime, arrivalTime, from, to, null, null);
|
||||||
to.name, null, null);
|
|
||||||
connections.add(connection);
|
connections.add(connection);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -334,7 +333,7 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
final Matcher mHead = P_CONNECTION_DETAILS_HEAD.matcher(page);
|
final Matcher mHead = P_CONNECTION_DETAILS_HEAD.matcher(page);
|
||||||
if (mHead.matches())
|
if (mHead.matches())
|
||||||
{
|
{
|
||||||
final String firstDeparture = ParserUtils.resolveEntities(mHead.group(1));
|
final Location firstDeparture = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mHead.group(1)));
|
||||||
final Date currentDate = ParserUtils.parseDate(mHead.group(2));
|
final Date currentDate = ParserUtils.parseDate(mHead.group(2));
|
||||||
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
|
||||||
|
|
||||||
|
@ -342,7 +341,7 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
Date firstDepartureTime = null;
|
Date firstDepartureTime = null;
|
||||||
Date lastArrivalTime = null;
|
Date lastArrivalTime = null;
|
||||||
String lastArrival = null;
|
Location lastArrival = null;
|
||||||
Connection.Trip lastTrip = null;
|
Connection.Trip lastTrip = null;
|
||||||
|
|
||||||
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(page);
|
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(page);
|
||||||
|
@ -351,9 +350,9 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
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())
|
||||||
{
|
{
|
||||||
final String departure = lastArrival != null ? lastArrival : firstDeparture;
|
final Location departure = lastArrival != null ? lastArrival : firstDeparture;
|
||||||
|
|
||||||
final String arrival = ParserUtils.resolveEntities(mDetFine.group(8));
|
final Location arrival = new Location(LocationType.ANY, 0, null, ParserUtils.resolveEntities(mDetFine.group(8)));
|
||||||
lastArrival = arrival;
|
lastArrival = arrival;
|
||||||
|
|
||||||
final String min = mDetFine.group(7);
|
final String min = mDetFine.group(7);
|
||||||
|
@ -371,8 +370,8 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
|
|
||||||
final String arrivalPosition = ParserUtils.resolveEntities(mDetFine.group(6));
|
final String arrivalPosition = ParserUtils.resolveEntities(mDetFine.group(6));
|
||||||
|
|
||||||
lastTrip = new Connection.Trip(line, destination, departureTime, departurePosition, 0, departure, arrivalTime,
|
lastTrip = new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, arrivalPosition,
|
||||||
arrivalPosition, 0, arrival, null, null);
|
arrival, null, null);
|
||||||
parts.add(lastTrip);
|
parts.add(lastTrip);
|
||||||
|
|
||||||
if (firstDepartureTime == null)
|
if (firstDepartureTime == null)
|
||||||
|
@ -385,11 +384,11 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
|
||||||
{
|
{
|
||||||
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
|
||||||
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), 0, lastFootway.departure, 0, arrival, null));
|
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), lastFootway.departure, arrival, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parts.add(new Connection.Footway(Integer.parseInt(min), 0, departure, 0, arrival, null));
|
parts.add(new Connection.Footway(Integer.parseInt(min), departure, arrival, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -399,8 +398,8 @@ public class RmvProvider extends AbstractHafasProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new GetConnectionDetailsResult(currentDate, new Connection(extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime, 0,
|
return new GetConnectionDetailsResult(currentDate, new Connection(extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime,
|
||||||
firstDeparture, 0, lastArrival, parts, null));
|
firstDeparture, lastArrival, parts, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,23 +31,19 @@ public final class Connection implements Serializable
|
||||||
public final String link;
|
public final String link;
|
||||||
public final Date departureTime;
|
public final Date departureTime;
|
||||||
public final Date arrivalTime;
|
public final Date arrivalTime;
|
||||||
public final int fromId;
|
public final Location from;
|
||||||
public final String from;
|
public final Location to;
|
||||||
public final int toId;
|
|
||||||
public final String to;
|
|
||||||
public final List<Part> parts;
|
public final List<Part> parts;
|
||||||
public final List<Fare> fares;
|
public final List<Fare> fares;
|
||||||
|
|
||||||
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 Location from, final Location to,
|
||||||
final int toId, final String to, final List<Part> parts, final List<Fare> fares)
|
final List<Part> parts, final List<Fare> fares)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.link = link;
|
this.link = link;
|
||||||
this.departureTime = departureTime;
|
this.departureTime = departureTime;
|
||||||
this.arrivalTime = arrivalTime;
|
this.arrivalTime = arrivalTime;
|
||||||
this.fromId = fromId;
|
|
||||||
this.from = from;
|
this.from = from;
|
||||||
this.toId = toId;
|
|
||||||
this.to = to;
|
this.to = to;
|
||||||
this.parts = parts;
|
this.parts = parts;
|
||||||
this.fares = fares;
|
this.fares = fares;
|
||||||
|
@ -79,10 +75,14 @@ public final class Connection implements Serializable
|
||||||
|
|
||||||
public static class Part implements Serializable
|
public static class Part implements Serializable
|
||||||
{
|
{
|
||||||
|
public final Location departure;
|
||||||
|
public final Location arrival;
|
||||||
public final List<Point> path;
|
public final List<Point> path;
|
||||||
|
|
||||||
public Part(final List<Point> path)
|
public Part(final Location departure, final Location arrival, final List<Point> path)
|
||||||
{
|
{
|
||||||
|
this.departure = departure;
|
||||||
|
this.arrival = arrival;
|
||||||
this.path = path;
|
this.path = path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -93,30 +93,22 @@ public final class Connection implements Serializable
|
||||||
public final Location destination;
|
public final Location destination;
|
||||||
public final Date departureTime;
|
public final Date departureTime;
|
||||||
public final String departurePosition;
|
public final String departurePosition;
|
||||||
public final int departureId;
|
|
||||||
public final String departure;
|
|
||||||
public final Date arrivalTime;
|
public final Date arrivalTime;
|
||||||
public final String arrivalPosition;
|
public final String arrivalPosition;
|
||||||
public final int arrivalId;
|
|
||||||
public final String arrival;
|
|
||||||
public final List<Stop> intermediateStops;
|
public final List<Stop> intermediateStops;
|
||||||
|
|
||||||
public Trip(final String line, final Location destination, final Date departureTime, final String departurePosition, final int departureId,
|
public Trip(final String line, final Location destination, final Date departureTime, final String departurePosition,
|
||||||
final String departure, final Date arrivalTime, final String arrivalPosition, final int arrivalId, final String arrival,
|
final Location departure, final Date arrivalTime, final String arrivalPosition, final Location arrival,
|
||||||
final List<Stop> intermediateStops, final List<Point> path)
|
final List<Stop> intermediateStops, final List<Point> path)
|
||||||
{
|
{
|
||||||
super(path);
|
super(departure, arrival, path);
|
||||||
|
|
||||||
this.line = line;
|
this.line = line;
|
||||||
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.arrivalTime = arrivalTime;
|
this.arrivalTime = arrivalTime;
|
||||||
this.arrivalPosition = arrivalPosition;
|
this.arrivalPosition = arrivalPosition;
|
||||||
this.arrivalId = arrivalId;
|
|
||||||
this.arrival = arrival;
|
|
||||||
this.intermediateStops = intermediateStops;
|
this.intermediateStops = intermediateStops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,10 +120,10 @@ public final class Connection implements Serializable
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("destination=").append(destination).append("/").append(destination.id);
|
builder.append("destination=").append(destination).append("/").append(destination.id);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("departure=").append(departureTime).append("/").append(departurePosition).append("/").append(departureId).append("/")
|
builder.append("departure=").append(departureTime).append("/").append(departurePosition).append("/").append(departure).append("/")
|
||||||
.append(departure);
|
.append(departure);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("arrival=").append(arrivalTime).append("/").append(arrivalPosition).append("/").append(arrivalId).append("/")
|
builder.append("arrival=").append(arrivalTime).append("/").append(arrivalPosition).append("/").append(arrival).append("/")
|
||||||
.append(arrival);
|
.append(arrival);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
|
@ -141,37 +133,12 @@ public final class Connection implements Serializable
|
||||||
public final static class Footway extends Part
|
public final static class Footway extends Part
|
||||||
{
|
{
|
||||||
public final int min;
|
public final int min;
|
||||||
public final int departureId;
|
|
||||||
public final String departure;
|
|
||||||
public final int arrivalId;
|
|
||||||
public final String arrival;
|
|
||||||
public final int arrivalLat, arrivalLon;
|
|
||||||
|
|
||||||
public Footway(final int min, final int departureId, final String departure, final int arrivalId, final String arrival, final int arrivalLat,
|
public Footway(final int min, final Location departure, final Location arrival, final List<Point> path)
|
||||||
final int arrivalLon, final List<Point> path)
|
|
||||||
{
|
{
|
||||||
super(path);
|
super(departure, arrival, path);
|
||||||
|
|
||||||
this.min = min;
|
this.min = min;
|
||||||
this.departureId = departureId;
|
|
||||||
this.departure = departure;
|
|
||||||
this.arrivalId = arrivalId;
|
|
||||||
this.arrival = arrival;
|
|
||||||
this.arrivalLat = arrivalLat;
|
|
||||||
this.arrivalLon = arrivalLon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Footway(final int min, final int departureId, final String departure, final int arrivalId, final String arrival, final List<Point> path)
|
|
||||||
{
|
|
||||||
super(path);
|
|
||||||
|
|
||||||
this.min = min;
|
|
||||||
this.departureId = departureId;
|
|
||||||
this.departure = departure;
|
|
||||||
this.arrivalId = arrivalId;
|
|
||||||
this.arrival = arrival;
|
|
||||||
this.arrivalLat = 0;
|
|
||||||
this.arrivalLon = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -180,9 +147,9 @@ public final class Connection implements Serializable
|
||||||
final StringBuilder builder = new StringBuilder(getClass().getName() + "[");
|
final StringBuilder builder = new StringBuilder(getClass().getName() + "[");
|
||||||
builder.append("min=").append(min);
|
builder.append("min=").append(min);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("departure=").append(departureId).append("/").append(departure);
|
builder.append("departure=").append(departure);
|
||||||
builder.append(",");
|
builder.append(",");
|
||||||
builder.append("arrival=").append(arrivalId).append("/").append(arrival).append("/").append(arrivalLat).append(",").append(arrivalLon);
|
builder.append("arrival=").append(arrival);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue