diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index bf72bc4a..aa1432cb 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -24,7 +24,7 @@ public class OebbProvider implements NetworkProvider public boolean hasCapabilities(final Capability... capabilities) { for (final Capability capability : capabilities) - if (capability == Capability.DEPARTURES || /* capability == Capability.CONNECTIONS || */capability == Capability.LOCATION_STATION_ID) + if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS || capability == Capability.LOCATION_STATION_ID) return true; return false; @@ -108,35 +108,38 @@ public class OebbProvider implements NetworkProvider WALKSPEED_MAP.put(WalkSpeed.FAST, "85"); } - private String connectionsQueryUri(final LocationType fromType, final String from, final LocationType viaType, final String via, - final LocationType toType, final String to, final Date date, final boolean dep, final WalkSpeed walkSpeed) + private String connectionsQuery(final LocationType fromType, final String from, final LocationType viaType, final String via, + final LocationType toType, final String to, final Date date, final boolean dep, final WalkSpeed walkSpeed) throws IOException { final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); final StringBuilder uri = new StringBuilder(); - uri.append("http://fahrplan.oebb.at/bin/query.exe/dn?ld=web05&OK"); - uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); - uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); - uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from)); + uri.append("queryPageDisplayed=yes"); + uri.append("&start.x=0"); + uri.append("&start.y=0"); + uri.append("&start=Suchen"); uri.append("&REQ0JourneyStopsS0A=").append(locationType(fromType)); + uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from)); uri.append("&REQ0JourneyStopsS0ID="); // "tupel"? if (via != null) { - uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via)); uri.append("&REQ0JourneyStops1.0A=").append(locationType(viaType)); + uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via)); uri.append("&REQ0JourneyStops1.0ID="); } - uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to)); uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType)); + uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to)); uri.append("&REQ0JourneyStopsZ0ID="); + uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); + uri.append("&wDayExt0=").append(ParserUtils.urlEncode("Mo|Di|Mi|Do|Fr|Sa|So")); uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); + uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); + uri.append("&existHafasDemo3=yes"); uri.append("&REQ0JourneyProduct_list=").append(ParserUtils.urlEncode("0:1111111111010000-000000")); uri.append("&REQ0JourneyDep_Foot_speed=").append(WALKSPEED_MAP.get(walkSpeed)); + uri.append("&existBikeEverywhere=yes"); uri.append("&existHafasAttrInc=yes"); - uri.append("&existHafasDemo3=yes"); - uri.append("&queryPageDisplayed=yes"); - uri.append("&start=Suchen"); return uri.toString(); } @@ -152,25 +155,38 @@ public class OebbProvider implements NetworkProvider throw new IllegalArgumentException(locationType.toString()); } + private static final String QUERY_CONNECTIONS_FORM_URL = "http://fahrplan.oebb.at/bin/query.exe/dn?"; + private static final Pattern P_QUERY_CONNECTIONS_FORM_ACTION = Pattern + .compile("