From 8bea0851a6bb420ca8c5f16803a9eb31860d3866 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Tue, 21 Jun 2011 12:17:03 +0000 Subject: [PATCH] workaround for REQ0JourneyStops1.0ID parameter does not seem to exist git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@715 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/BahnProvider.java | 31 +++++++++++++++++++++++-- src/de/schildbach/pte/BvgProvider.java | 27 ++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 77dec0ea..c952d920 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -23,6 +23,7 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -146,10 +147,36 @@ public final class BahnProvider extends AbstractHafasProvider uri.append(API_BASE).append("query.exe/dox"); uri.append("?REQ0HafasOptimize1=0:1"); + uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from))); - if (via != null) - uri.append("&REQ0JourneyStops1.0ID=").append(ParserUtils.urlEncode(locationId(via))); uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to))); + + if (via != null) + { + // workaround, for there does not seem to be a REQ0JourneyStops1.0ID parameter + + uri.append("&REQ0JourneyStops1.0A=").append(locationType(via)); + + if (via.type == LocationType.STATION && via.hasId() && isValidStationId(via.id)) + { + uri.append("&REQ0JourneyStops1.0L=").append(via.id); + } + else if (via.hasLocation()) + { + uri.append("&REQ0JourneyStops1.0X=").append(via.lon); + uri.append("&REQ0JourneyStops1.0Y=").append(via.lat); + if (via.name == null) + uri.append("&REQ0JourneyStops1.0O=").append( + ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%.6f, %.6f", via.lat / 1E6, via.lon / 1E6))); + } + else if (via.name != null) + { + uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via.name)); + if (via.type != LocationType.ANY) + uri.append('!'); + } + } + uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); uri.append("&REQ0JourneyDate=").append( String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index f515a26b..442033c2 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -26,6 +26,7 @@ import java.util.GregorianCalendar; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -440,8 +441,32 @@ public final class BvgProvider extends AbstractHafasProvider uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from), URL_ENCODING)); uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to), URL_ENCODING)); + if (via != null) - uri.append("&REQ0JourneyStops1.0ID=").append(ParserUtils.urlEncode(locationId(via), URL_ENCODING)); + { + // workaround, for there does not seem to be a REQ0JourneyStops1.0ID parameter + + uri.append("&REQ0JourneyStops1.0A=").append(locationType(via)); + + if (via.type == LocationType.STATION && via.hasId() && isValidStationId(via.id)) + { + uri.append("&REQ0JourneyStops1.0L=").append(via.id); + } + else if (via.hasLocation()) + { + uri.append("&REQ0JourneyStops1.0X=").append(via.lon); + uri.append("&REQ0JourneyStops1.0Y=").append(via.lat); + if (via.name == null) + uri.append("&REQ0JourneyStops1.0O=").append( + ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%.6f, %.6f", via.lat / 1E6, via.lon / 1E6), URL_ENCODING)); + } + else if (via.name != null) + { + uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via.name, URL_ENCODING)); + if (via.type != LocationType.ANY) + uri.append('!'); + } + } uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); uri.append("&REQ0JourneyDate=").append(