diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index a1e35ed3..8d3981a8 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -124,7 +124,8 @@ public final class BahnProvider extends AbstractHafasProvider return new NearbyStationsResult(stations.subList(0, maxStations)); } - private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep) + private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep, + final String products) { final Calendar c = new GregorianCalendar(timeZone()); c.setTime(date); @@ -148,6 +149,53 @@ public final class BahnProvider extends AbstractHafasProvider uri.append("&existProductNahverkehr=yes"); uri.append("&start=Suchen"); + for (final char p : products.toCharArray()) + { + if (p == 'I') + { + uri.append("&REQ0JourneyProduct_prod_section_0_0=1&REQ0JourneyProduct_prod_section_0_1=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_0=1&REQ0JourneyProduct_prod_section_1_1=1"); + } + if (p == 'R') + { + uri.append("&REQ0JourneyProduct_prod_section_0_2=1&REQ0JourneyProduct_prod_section_0_3=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_2=1&REQ0JourneyProduct_prod_section_1_3=1"); + } + if (p == 'S') + { + uri.append("&REQ0JourneyProduct_prod_section_0_4=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_4=1"); + } + if (p == 'U') + { + uri.append("&REQ0JourneyProduct_prod_section_0_7=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_7=1"); + } + if (p == 'T') + { + uri.append("&REQ0JourneyProduct_prod_section_0_8=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_8=1"); + } + if (p == 'B') + { + uri.append("&REQ0JourneyProduct_prod_section_0_5=1&REQ0JourneyProduct_prod_section_0_9=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_5=1&REQ0JourneyProduct_prod_section_1_9=1"); + } + if (p == 'F') + { + uri.append("&REQ0JourneyProduct_prod_section_0_6=1"); + if (via != null) + uri.append("&REQ0JourneyProduct_prod_section_1_6=1"); + } + // FIXME if (p == 'C') + } + return uri.toString(); } @@ -161,7 +209,7 @@ public final class BahnProvider extends AbstractHafasProvider public QueryConnectionsResult queryConnections(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products, final WalkSpeed walkSpeed) throws IOException { - final String uri = connectionsQueryUri(from, via, to, date, dep); + final String uri = connectionsQueryUri(from, via, to, date, dep, products); final CharSequence page = ParserUtils.scrape(uri); List fromAddresses = null;