From f3fc78f8fa4ac8bb73d2dadedb14cb2b509e3f63 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach" Date: Sun, 5 Sep 2010 15:32:09 +0000 Subject: [PATCH] link to google maps for footway arrivals if coordinate is known git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@134 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/Connection.java | 17 ++++++++++++++++- src/de/schildbach/pte/VbbProvider.java | 17 +++++++++++------ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/de/schildbach/pte/Connection.java b/src/de/schildbach/pte/Connection.java index 803f7cca..6f70c7f6 100644 --- a/src/de/schildbach/pte/Connection.java +++ b/src/de/schildbach/pte/Connection.java @@ -143,6 +143,19 @@ public final class Connection implements Serializable final public String departure; final public int arrivalId; final public String arrival; + final public double arrivalLat, arrivalLon; + + public Footway(final int min, final int departureId, final String departure, final int arrivalId, final String arrival, + final double arrivalLat, final double arrivalLon) + { + 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) { @@ -151,6 +164,8 @@ public final class Connection implements Serializable this.departure = departure; this.arrivalId = arrivalId; this.arrival = arrival; + this.arrivalLat = 0; + this.arrivalLon = 0; } @Override @@ -161,7 +176,7 @@ public final class Connection implements Serializable builder.append(","); builder.append("departure=").append(departureId).append("/").append(departure); builder.append(","); - builder.append("arrival=").append(arrivalId).append("/").append(arrival); + builder.append("arrival=").append(arrivalId).append("/").append(arrival).append("/").append(arrivalLat).append(",").append(arrivalLon); builder.append("]"); return builder.toString(); } diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java index a5bda705..ecc655cf 100644 --- a/src/de/schildbach/pte/VbbProvider.java +++ b/src/de/schildbach/pte/VbbProvider.java @@ -370,9 +370,9 @@ public final class VbbProvider implements NetworkProvider + "(.*?)" // arrival + "|" // + "(\\d+) Min\\.[\n\\s]?" // footway - + "Fussweg\n?" // - + ".*?(?:\n?" // arrivalId - + "(.*?)|(\\w.*?)|(.*?)).*?" // arrival + + "Fussweg.*?" // + + "(?:\n" // arrivalId + + "(.*?)|([^<]*)|([^<]*)).*?" // arrival + ").*?", Pattern.DOTALL); public GetConnectionDetailsResult getConnectionDetails(final String uri) throws IOException @@ -453,17 +453,22 @@ public final class VbbProvider implements NetworkProvider { final int arrivalId = mDetFine.group(12) != null ? Integer.parseInt(mDetFine.group(12)) : 0; - final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(13), mDetFine.group(14), mDetFine.group(15))); + final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(13), mDetFine.group(16), mDetFine.group(17))); + + final double arrivalLon = mDetFine.group(14) != null ? latLonToDouble(Integer.parseInt(mDetFine.group(14))) : 0; + + final double arrivalLat = mDetFine.group(15) != null ? latLonToDouble(Integer.parseInt(mDetFine.group(15))) : 0; if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway) { 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, - arrivalId, arrival)); + arrivalId, arrival, arrivalLat, arrivalLon)); } else { - parts.add(new Connection.Footway(Integer.parseInt(min), departureId, departure, arrivalId, arrival)); + parts.add(new Connection.Footway(Integer.parseInt(min), departureId, departure, arrivalId, arrival, arrivalLat, + arrivalLon)); } lastArrival = arrival;