diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java
index 43daafdc..6ec449b9 100644
--- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java
+++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java
@@ -732,6 +732,63 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
{
}
+ protected void appendConnectionsQueryUri(final StringBuilder uri, final Location from, final Location via, final Location to, final Date date,
+ final boolean dep, final String products)
+ {
+ uri.append("?start=Suchen");
+
+ uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from), ISO_8859_1));
+ uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to), ISO_8859_1));
+
+ 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), ISO_8859_1));
+ }
+ else if (via.name != null)
+ {
+ uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via.name, ISO_8859_1));
+ if (via.type != LocationType.ANY)
+ uri.append('!');
+ }
+ }
+
+ uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0");
+
+ final Calendar c = new GregorianCalendar(timeZone());
+ c.setTime(date);
+ 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));
+ uri.append("&REQ0JourneyTime=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)));
+
+ final StringBuilder productsStr = new StringBuilder(numProductBits);
+ if (products != null)
+ {
+ for (int i = 0; i < numProductBits; i++)
+ productsStr.append('0');
+ for (final char p : products.toCharArray())
+ setProductBits(productsStr, p);
+ }
+ else
+ {
+ productsStr.append(allProductsString());
+ }
+ uri.append("&REQ0JourneyProduct_prod_list_1=").append(productsStr);
+ }
+
public QueryConnectionsResult queryConnections(Location from, Location via, Location to, final Date date, final boolean dep,
final int numConnections, final String products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set