diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java
index 2967e587..3393ed81 100644
--- a/src/de/schildbach/pte/AbstractEfaProvider.java
+++ b/src/de/schildbach/pte/AbstractEfaProvider.java
@@ -624,11 +624,10 @@ public abstract class AbstractEfaProvider implements NetworkProvider
return (double) value / 1000000;
}
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep, products, walkSpeed) + "&sessionID=0";
+ final String uri = connectionsQueryUri(from, via, to, date, dep, products, walkSpeed) + "&sessionID=0";
final CharSequence page = ParserUtils.scrape(uri);
@@ -799,22 +798,46 @@ public abstract class AbstractEfaProvider implements NetworkProvider
throw new UnsupportedOperationException();
}
- protected abstract String connectionsQueryUri(LocationType fromType, String from, LocationType viaType, String via, LocationType toType,
- String to, Date date, boolean dep, String products, WalkSpeed walkSpeed);
+ protected abstract String connectionsQueryUri(Location from, Location via, Location to, Date date, boolean dep, String products,
+ WalkSpeed walkSpeed);
protected abstract String commandLink(String sessionId, String command);
- protected static final String locationTypeValue(final LocationType locationType)
+ protected static final void appendLocation(final StringBuilder uri, final Location location, final String paramSuffix)
{
- if (locationType == LocationType.STATION)
+ if (location.type == LocationType.ADDRESS && location.lat != 0 && location.lon != 0)
+ {
+ uri.append("&nameInfo_").append(paramSuffix).append("=").append(String.format("%2.6f:%2.6f", location.lon / 1E6, location.lat / 1E6))
+ .append(":WGS84[DD.dddddd]");
+ uri.append("&typeInfo_").append(paramSuffix).append("=coord");
+ }
+ else
+ {
+ uri.append("&type_").append(paramSuffix).append("=").append(locationTypeValue(location));
+ uri.append("&name_").append(paramSuffix).append("=").append(ParserUtils.urlEncode(locationValue(location), "ISO-8859-1"));
+ }
+ }
+
+ protected static final String locationTypeValue(final Location location)
+ {
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return "stop";
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return "any"; // strange, matches with anyObjFilter
- if (locationType == LocationType.POI)
+ if (type == LocationType.POI)
return "any";
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return "any";
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ protected static final String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
protected static final String productParams(final String products)
diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java
index c9a8bf2c..0e5f6540 100644
--- a/src/de/schildbach/pte/BahnProvider.java
+++ b/src/de/schildbach/pte/BahnProvider.java
@@ -30,10 +30,10 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
@@ -54,10 +54,6 @@ public final class BahnProvider implements NetworkProvider
public boolean hasCapabilities(final Capability... capabilities)
{
- for (final Capability capability : capabilities)
- if (capability == Capability.LOCATION_WGS84)
- return false;
-
return true;
}
@@ -123,8 +119,7 @@ public final class BahnProvider implements NetworkProvider
return new NearbyStationsResult(uri, stations.subList(0, maxStations));
}
- 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)
+ private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@@ -132,15 +127,15 @@ public final class BahnProvider implements NetworkProvider
uri.append(API_BASE).append("query.exe/dox");
uri.append("?REQ0HafasOptimize1=0:1");
- uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from));
- uri.append("&REQ0JourneyStopsS0A=").append(locationType(fromType));
+ uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(locationValue(from)));
+ uri.append("&REQ0JourneyStopsS0A=").append(locationTypeValue(from));
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(locationValue(via)));
+ uri.append("&REQ0JourneyStops1.0A=").append(locationTypeValue(via));
}
- uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to));
- uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType));
+ uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(locationValue(to)));
+ uri.append("&REQ0JourneyStopsZ0A=").append(locationTypeValue(to));
uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0");
uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
@@ -154,15 +149,24 @@ public final class BahnProvider implements NetworkProvider
return uri.toString();
}
- private static int locationType(final LocationType locationType)
+ private static final int locationTypeValue(final Location location)
{
- if (locationType == LocationType.STATION)
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 1;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 2;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 255;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ private static final String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
@@ -171,11 +175,10 @@ public final class BahnProvider implements NetworkProvider
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
.compile("(zu dicht beieinander|mehrfach vorhanden oder identisch)|(leider konnte zu Ihrer Anfrage keine Verbindung gefunden werden)|(derzeit nur Auskünfte vom)");
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep);
+ final String uri = connectionsQueryUri(from, via, to, date, dep);
final CharSequence page = ParserUtils.scrape(uri);
final Matcher mError = P_CHECK_CONNECTIONS_ERROR.matcher(page);
diff --git a/src/de/schildbach/pte/GvhProvider.java b/src/de/schildbach/pte/GvhProvider.java
index 3c5d9bd0..72c729fa 100644
--- a/src/de/schildbach/pte/GvhProvider.java
+++ b/src/de/schildbach/pte/GvhProvider.java
@@ -21,7 +21,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.util.ParserUtils;
/**
@@ -35,8 +35,7 @@ public class GvhProvider extends AbstractEfaProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS || capability == Capability.LOCATION_STATION_ID
- || capability == Capability.LOCATION_WGS84)
+ if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS)
return true;
return false;
@@ -79,8 +78,8 @@ public class GvhProvider extends AbstractEfaProvider
}
@Override
- protected 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 String products, final WalkSpeed walkSpeed)
+ protected String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm");
@@ -93,50 +92,10 @@ public class GvhProvider extends AbstractEfaProvider
uri.append("&outputFormat=XML");
uri.append("&coordOutputFormat=WGS84");
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_origin=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_origin=coord");
- }
- else
- {
- uri.append("&type_origin=").append(locationTypeValue(fromType));
- uri.append("&name_origin=").append(ParserUtils.urlEncode(from, "ISO-8859-1")); // fine-grained location
- }
-
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_destination=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_destination=coord");
- }
- else
- {
- uri.append("&type_destination=").append(locationTypeValue(toType));
- uri.append("&name_destination=").append(ParserUtils.urlEncode(to, "ISO-8859-1")); // fine-grained location
- }
-
+ appendLocation(uri, from, "origin");
+ appendLocation(uri, to, "destination");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- final String[] parts = via.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_via=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_via=coord");
- }
- else
- {
- uri.append("&type_via=").append(locationTypeValue(viaType));
- uri.append("&name_via=").append(ParserUtils.urlEncode(via, "ISO-8859-1"));
- }
- }
+ appendLocation(uri, via, "via");
uri.append("&itdDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&itdTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
diff --git a/src/de/schildbach/pte/LinzProvider.java b/src/de/schildbach/pte/LinzProvider.java
index 8d3eada6..b476c2d6 100644
--- a/src/de/schildbach/pte/LinzProvider.java
+++ b/src/de/schildbach/pte/LinzProvider.java
@@ -21,7 +21,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.util.ParserUtils;
/**
@@ -35,8 +35,7 @@ public class LinzProvider extends AbstractEfaProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS || capability == Capability.LOCATION_STATION_ID
- || capability == Capability.LOCATION_WGS84)
+ if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS)
return true;
return false;
@@ -71,8 +70,8 @@ public class LinzProvider extends AbstractEfaProvider
}
@Override
- protected 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 String products, final WalkSpeed walkSpeed)
+ protected String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm");
@@ -85,56 +84,10 @@ public class LinzProvider extends AbstractEfaProvider
uri.append("&outputFormat=XML");
uri.append("&coordOutputFormat=WGS84");
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_origin=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_origin=coord");
- }
- else
- {
- uri.append("&place_origin="); // coarse-grained location, e.g. city
- uri.append("&placeState_origin=empty"); // empty|identified
- uri.append("&type_origin=").append(locationTypeValue(fromType));
- uri.append("&name_origin=").append(ParserUtils.urlEncode(from, "ISO-8859-1")); // fine-grained location
- }
-
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_destination=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_destination=coord");
- }
- else
- {
- uri.append("&place_destination="); // coarse-grained location, e.g. city
- uri.append("&placeState_destination=empty"); // empty|identified
- uri.append("&type_destination=").append(locationTypeValue(toType));
- uri.append("&name_destination=").append(ParserUtils.urlEncode(to, "ISO-8859-1")); // fine-grained location
- }
-
+ appendLocation(uri, from, "origin");
+ appendLocation(uri, to, "destination");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- final String[] parts = via.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_via=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_via=coord");
- }
- else
- {
- uri.append("&place_via=");
- uri.append("&placeState_via=empty");
- uri.append("&type_via=").append(locationTypeValue(viaType));
- uri.append("&name_via=").append(ParserUtils.urlEncode(via, "ISO-8859-1"));
- }
- }
+ appendLocation(uri, via, "via");
uri.append("&itdDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&itdTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
diff --git a/src/de/schildbach/pte/MvvProvider.java b/src/de/schildbach/pte/MvvProvider.java
index e7c8f710..e88167e4 100644
--- a/src/de/schildbach/pte/MvvProvider.java
+++ b/src/de/schildbach/pte/MvvProvider.java
@@ -30,9 +30,9 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
@@ -176,8 +176,8 @@ public class MvvProvider extends AbstractEfaProvider
}
@Override
- protected 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 String products, final WalkSpeed walkSpeed)
+ protected String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
final DateFormat YEAR_FORMAT = new SimpleDateFormat("yyyy");
@@ -210,83 +210,10 @@ public class MvvProvider extends AbstractEfaProvider
uri.append("&anySigWhenPerfectNoOtherMatches=1");
// uri.append("&lineRestriction=403");
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_origin=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_origin=coord");
- }
- else
- {
- uri.append("&useHouseNumberList_origin=1");
- uri.append("&place_origin="); // coarse-grained location, e.g. city
- uri.append("&placeState_origin=empty"); // empty|identified
- uri.append("&nameState_origin=empty"); // empty|identified|list|notidentified
- uri.append("&placeInfo_origin=invalid"); // invalid
- uri.append("&nameInfo_origin=invalid"); // invalid
- uri.append("&typeInfo_origin=invalid"); // invalid
- uri.append("&reducedAnyWithoutAddressObjFilter_origin=102");
- uri.append("&reducedAnyPostcodeObjFilter_origin=64");
- uri.append("&reducedAnyTooManyObjFilter_origin=2");
- uri.append("&type_origin=").append(locationType(fromType));
- uri.append("&name_origin=").append(ParserUtils.urlEncode(from, ENCODING)); // fine-grained location
- uri.append("&anyObjFilter_origin=").append(locationAnyObjFilter(fromType));
- }
-
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_destination=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_destination=coord");
- }
- else
- {
- uri.append("&useHouseNumberList_destination=1");
- uri.append("&place_destination="); // coarse-grained location, e.g. city
- uri.append("&placeState_destination=empty"); // empty|identified
- uri.append("&nameState_destination=empty"); // empty|identified|list|notidentified
- uri.append("&placeInfo_destination=invalid"); // invalid
- uri.append("&nameInfo_destination=invalid"); // invalid
- uri.append("&typeInfo_destination=invalid"); // invalid
- uri.append("&reducedAnyWithoutAddressObjFilter_destination=102");
- uri.append("&reducedAnyPostcodeObjFilter_destination=64");
- uri.append("&reducedAnyTooManyObjFilter_destination=2");
- uri.append("&type_destination=").append(locationType(toType));
- uri.append("&name_destination=").append(ParserUtils.urlEncode(to, ENCODING)); // fine-grained location
- uri.append("&anyObjFilter_destination=").append(locationAnyObjFilter(toType));
- }
-
+ appendLocationMvv(uri, from, "origin");
+ appendLocationMvv(uri, to, "destination");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- final String[] parts = via.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_via=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_via=coord");
- }
- else
- {
- uri.append("&useHouseNumberList_via=1");
- uri.append("&place_via=");
- uri.append("&placeState_via=empty");
- uri.append("&nameState_via=empty");
- uri.append("&placeInfo_via=invalid");
- uri.append("&nameInfo_via=invalid");
- uri.append("&typeInfo_via=invalid");
- uri.append("&reducedAnyWithoutAddressObjFilter_via=102");
- uri.append("&reducedAnyPostcodeObjFilter_via=64");
- uri.append("&reducedAnyTooManyObjFilter_via=2");
- uri.append("&type_via=").append(locationType(viaType));
- uri.append("&name_via=").append(ParserUtils.urlEncode(via, ENCODING));
- uri.append("&anyObjFilter_via=").append(locationAnyObjFilter(viaType));
- }
- }
+ appendLocationMvv(uri, via, "via");
uri.append("&itdTripDateTimeDepArr=").append(dep ? "dep" : "arr");
uri.append("&itdTimeHour=").append(ParserUtils.urlEncode(HOUR_FORMAT.format(date)));
@@ -298,30 +225,44 @@ public class MvvProvider extends AbstractEfaProvider
return uri.toString();
}
- private static String locationType(final LocationType locationType)
+ private static final void appendLocationMvv(final StringBuilder uri, final Location location, final String paramSuffix)
{
- if (locationType == LocationType.STATION)
- return "stop";
- if (locationType == LocationType.ADDRESS)
- return "any"; // strange, matches with anyObjFilter
- if (locationType == LocationType.POI)
- return "any";
- if (locationType == LocationType.ANY)
- return "any";
- throw new IllegalArgumentException(locationType.toString());
+ if (location.type == LocationType.ADDRESS && location.lat != 0 && location.lon != 0)
+ {
+ uri.append("&nameInfo_").append(paramSuffix).append("=").append(String.format("%2.6f:%2.6f", location.lon / 1E6, location.lat / 1E6))
+ .append(":WGS84[DD.dddddd]");
+ uri.append("&typeInfo_").append(paramSuffix).append("=coord");
+ }
+ else
+ {
+ uri.append("&useHouseNumberList_").append(paramSuffix).append("=1");
+ uri.append("&place_").append(paramSuffix).append("="); // coarse-grained location, e.g. city
+ uri.append("&placeState_").append(paramSuffix).append("=empty"); // empty|identified
+ uri.append("&nameState_").append(paramSuffix).append("=empty"); // empty|identified|list|notidentified
+ uri.append("&placeInfo_").append(paramSuffix).append("=invalid"); // invalid
+ uri.append("&nameInfo_").append(paramSuffix).append("=invalid"); // invalid
+ uri.append("&typeInfo_").append(paramSuffix).append("=invalid"); // invalid
+ uri.append("&reducedAnyWithoutAddressObjFilter_").append(paramSuffix).append("=102");
+ uri.append("&reducedAnyPostcodeObjFilter_").append(paramSuffix).append("=64");
+ uri.append("&reducedAnyTooManyObjFilter_").append(paramSuffix).append("=2");
+ uri.append("&type_").append(paramSuffix).append("=").append(locationTypeValue(location));
+ uri.append("&name_").append(paramSuffix).append("=").append(ParserUtils.urlEncode(locationValue(location), ENCODING));
+ uri.append("&anyObjFilter_").append(paramSuffix).append("=").append(locationAnyObjFilterMvv(location));
+ }
}
- private static int locationAnyObjFilter(final LocationType locationType)
+ private static final int locationAnyObjFilterMvv(final Location location)
{
- if (locationType == LocationType.STATION)
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 2;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 12;
- if (locationType == LocationType.POI)
+ if (type == LocationType.POI)
return 32;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 0;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
}
private static final Pattern P_PRE_ADDRESS = Pattern.compile("",
@@ -331,11 +272,10 @@ public class MvvProvider extends AbstractEfaProvider
"(Start und Ziel sind identisch)|(konnte keine Verbindung gefunden werden)", Pattern.CASE_INSENSITIVE);
@Override
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep, products, walkSpeed);
+ final String uri = connectionsQueryUri(from, via, to, date, dep, products, walkSpeed);
System.out.println(uri);
final CharSequence page = ParserUtils.scrape(uri);
diff --git a/src/de/schildbach/pte/NasaProvider.java b/src/de/schildbach/pte/NasaProvider.java
index 3d20f754..70628ae7 100644
--- a/src/de/schildbach/pte/NasaProvider.java
+++ b/src/de/schildbach/pte/NasaProvider.java
@@ -28,10 +28,9 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
@@ -245,8 +244,8 @@ public class NasaProvider extends AbstractHafasProvider
return 0;
}
- public QueryConnectionsResult queryConnections(LocationType fromType, String from, LocationType viaType, String via, LocationType toType,
- String to, Date date, boolean dep, String products, WalkSpeed walkSpeed) throws IOException
+ 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
{
throw new UnsupportedOperationException();
}
diff --git a/src/de/schildbach/pte/NetworkProvider.java b/src/de/schildbach/pte/NetworkProvider.java
index 4bf82042..dbb0ee3e 100644
--- a/src/de/schildbach/pte/NetworkProvider.java
+++ b/src/de/schildbach/pte/NetworkProvider.java
@@ -23,7 +23,6 @@ import java.util.List;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
import de.schildbach.pte.dto.Location;
-import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -37,7 +36,7 @@ public interface NetworkProvider
{
public enum Capability
{
- NEARBY_STATIONS, DEPARTURES, CONNECTIONS, LOCATION_WGS84, LOCATION_STATION_ID
+ NEARBY_STATIONS, DEPARTURES, CONNECTIONS
}
public enum WalkSpeed
@@ -78,16 +77,10 @@ public interface NetworkProvider
/**
* Query connections, asking for any ambiguousnesses
*
- * @param fromType
- * type of location to route from, mandatory
* @param from
* location to route from, mandatory
- * @param viaType
- * type of location to route via, may be {@code null}
* @param via
* location to route via, may be {@code null}
- * @param toType
- * type of location to route to, mandatory
* @param to
* location to route to, mandatory
* @param date
@@ -103,8 +96,8 @@ public interface NetworkProvider
* @return result object that can contain alternatives to clear up ambiguousnesses, or contains possible connections
* @throws IOException
*/
- QueryConnectionsResult queryConnections(LocationType fromType, String from, LocationType viaType, String via, LocationType toType, String to,
- Date date, boolean dep, String products, WalkSpeed walkSpeed) throws IOException;
+ QueryConnectionsResult queryConnections(Location from, Location via, Location to, Date date, boolean dep, String products, WalkSpeed walkSpeed)
+ throws IOException;
/**
* Query more connections (e.g. earlier or later)
diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java
index d0e33769..f3a82776 100644
--- a/src/de/schildbach/pte/OebbProvider.java
+++ b/src/de/schildbach/pte/OebbProvider.java
@@ -32,10 +32,10 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -51,7 +51,7 @@ public class OebbProvider extends AbstractHafasProvider
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)
return true;
return false;
@@ -146,9 +146,8 @@ public class OebbProvider extends AbstractHafasProvider
WALKSPEED_MAP.put(WalkSpeed.FAST, "85");
}
- 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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ private String connectionsQuery(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed) throws IOException
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@@ -158,17 +157,17 @@ public class OebbProvider extends AbstractHafasProvider
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("&REQ0JourneyStopsS0A=").append(locationTypeValue(from));
+ uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(locationValue(from)));
uri.append("&REQ0JourneyStopsS0ID="); // "tupel"?
if (via != null)
{
- uri.append("&REQ0JourneyStops1.0A=").append(locationType(viaType));
- uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via));
+ uri.append("&REQ0JourneyStops1.0A=").append(locationTypeValue(via));
+ uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(locationValue(via)));
uri.append("&REQ0JourneyStops1.0ID=");
}
- uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType));
- uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to));
+ uri.append("&REQ0JourneyStopsZ0A=").append(locationTypeValue(to));
+ uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(locationValue(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"));
@@ -195,22 +194,30 @@ public class OebbProvider extends AbstractHafasProvider
uri.append("&REQ0JourneyProduct_prod_section_0_6=1&REQ0JourneyProduct_prod_section_0_11=1");
if (p == 'F')
uri.append("&REQ0JourneyProduct_prod_section_0_7=1");
- if (p == 'C')
- ; // FIXME
+ // FIXME if (p == 'C')
}
return uri.toString();
}
- private static int locationType(final LocationType locationType)
+ private static int locationTypeValue(final Location location)
{
- if (locationType == LocationType.STATION)
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 1;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 2;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 255;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ private static String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
private static final String QUERY_CONNECTIONS_FORM_URL = API_BASE + "query.exe/dn?";
@@ -222,9 +229,8 @@ public class OebbProvider extends AbstractHafasProvider
"]*>\n(.*?)", Pattern.DOTALL);
private static final Pattern P_ADDRESSES = Pattern.compile("", Pattern.DOTALL);
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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
{
// get base url and cookies from form
final CharSequence form = ParserUtils.scrape(QUERY_CONNECTIONS_FORM_URL, false, null, null, true);
@@ -234,7 +240,7 @@ public class OebbProvider extends AbstractHafasProvider
final String baseUri = m.group(1);
// query
- final String query = connectionsQuery(fromType, from, viaType, via, toType, to, date, dep, products, walkSpeed);
+ final String query = connectionsQuery(from, via, to, date, dep, products, walkSpeed);
final CharSequence page = ParserUtils.scrape(baseUri, true, query, null, true);
final Matcher mError = P_QUERY_CONNECTIONS_ERROR.matcher(page);
diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java
index 82d6ef06..0562b639 100644
--- a/src/de/schildbach/pte/RmvProvider.java
+++ b/src/de/schildbach/pte/RmvProvider.java
@@ -30,10 +30,10 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -53,10 +53,6 @@ public class RmvProvider extends AbstractHafasProvider
public boolean hasCapabilities(final Capability... capabilities)
{
- for (final Capability capability : capabilities)
- if (capability == Capability.LOCATION_WGS84)
- return false;
-
return true;
}
@@ -104,8 +100,8 @@ public class RmvProvider extends AbstractHafasProvider
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 String products, final WalkSpeed walkSpeed)
+ private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@@ -116,14 +112,14 @@ public class RmvProvider extends AbstractHafasProvider
uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0");
uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
- uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from));
- uri.append("&REQ0JourneyStopsS0A=").append(locationType(fromType));
- uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to));
- uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType));
+ uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(locationValue(from)));
+ uri.append("&REQ0JourneyStopsS0A=").append(locationTypeValue(from));
+ uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(locationValue(to)));
+ uri.append("&REQ0JourneyStopsZ0A=").append(locationTypeValue(to));
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(locationValue(via)));
+ uri.append("&REQ0JourneyStops1.0A=").append(locationTypeValue(via));
}
uri.append("&REQ0JourneyDep_Foot_speed=").append(WALKSPEED_MAP.get(walkSpeed));
@@ -143,8 +139,7 @@ public class RmvProvider extends AbstractHafasProvider
uri.append("&REQ0JourneyProduct_prod_list_6=0000001101000000");
if (p == 'F')
uri.append("&REQ0JourneyProduct_prod_list_7=0000000010000000");
- if (p == 'C')
- ; // FIXME
+ // FIXME if (p == 'C')
}
uri.append("&start=Suchen");
@@ -152,15 +147,24 @@ public class RmvProvider extends AbstractHafasProvider
return uri.toString();
}
- private static int locationType(final LocationType locationType)
+ private static int locationTypeValue(final Location location)
{
- if (locationType == LocationType.STATION)
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 1;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 2;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 255;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ private static String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
private static final Pattern P_PRE_ADDRESS = Pattern.compile("(?:Geben Sie einen (Startort|Zielort) an.*?)?Bitte wählen Sie aus der Liste",
@@ -170,11 +174,10 @@ public class RmvProvider extends AbstractHafasProvider
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern.compile(
"(mehrfach vorhanden oder identisch)|(keine Verbindung gefunden werden)|(derzeit nur Auskünfte vom)", Pattern.CASE_INSENSITIVE);
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep, products, walkSpeed);
+ final String uri = connectionsQueryUri(from, via, to, date, dep, products, walkSpeed);
final CharSequence page = ParserUtils.scrape(uri);
final Matcher mError = P_CHECK_CONNECTIONS_ERROR.matcher(page);
diff --git a/src/de/schildbach/pte/SbbProvider.java b/src/de/schildbach/pte/SbbProvider.java
index 2fb005fa..bc26f32e 100644
--- a/src/de/schildbach/pte/SbbProvider.java
+++ b/src/de/schildbach/pte/SbbProvider.java
@@ -28,10 +28,10 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -50,7 +50,7 @@ public class SbbProvider extends AbstractHafasProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.NEARBY_STATIONS || capability == Capability.LOCATION_WGS84)
+ if (capability == Capability.NEARBY_STATIONS)
return false;
return true;
@@ -93,8 +93,7 @@ public class SbbProvider extends AbstractHafasProvider
return String.format(NEARBY_URI, stationId);
}
- 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)
+ private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@@ -107,17 +106,17 @@ public class SbbProvider extends AbstractHafasProvider
uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0");
uri.append("&REQ0HafasSkipLongChanges=1");
uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
- uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from));
- uri.append("&REQ0JourneyStopsS0A=").append(locationType(fromType));
+ uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(locationValue(from)));
+ uri.append("&REQ0JourneyStopsS0A=").append(locationTypeValue(from));
uri.append("&REQ0JourneyStopsS0ID=");
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(locationValue(via)));
+ uri.append("&REQ0JourneyStops1.0A=").append(locationTypeValue(via));
uri.append("&REQ0JourneyStops1.0ID=");
}
- uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to));
- uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType));
+ uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(locationValue(to)));
+ uri.append("&REQ0JourneyStopsZ0A=").append(locationTypeValue(to));
uri.append("&REQ0JourneyStopsZ0ID=");
uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
uri.append("&queryPageDisplayed=yes");
@@ -129,15 +128,24 @@ public class SbbProvider extends AbstractHafasProvider
return uri.toString();
}
- private static int locationType(final LocationType locationType)
+ private static int locationTypeValue(final Location location)
{
- if (locationType == LocationType.STATION)
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 1;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 2;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 7;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ private static String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
private static final Pattern P_PRE_ADDRESS = Pattern.compile(
@@ -146,11 +154,10 @@ public class SbbProvider extends AbstractHafasProvider
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
.compile("(mehrfach vorhanden oder identisch)|(keine Verbindung gefunden werden)|(liegt nach dem Ende der Fahrplanperiode|liegt vor Beginn der Fahrplanperiode)");
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep);
+ final String uri = connectionsQueryUri(from, via, to, date, dep);
final CharSequence page = ParserUtils.scrape(uri);
final Matcher mError = P_CHECK_CONNECTIONS_ERROR.matcher(page);
diff --git a/src/de/schildbach/pte/SncbProvider.java b/src/de/schildbach/pte/SncbProvider.java
index b7e64f9c..83593896 100644
--- a/src/de/schildbach/pte/SncbProvider.java
+++ b/src/de/schildbach/pte/SncbProvider.java
@@ -26,10 +26,9 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
@@ -66,9 +65,8 @@ public class SncbProvider extends AbstractHafasProvider
return String.format(NEARBY_URI, stationId);
}
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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
{
throw new UnsupportedOperationException();
}
diff --git a/src/de/schildbach/pte/TflProvider.java b/src/de/schildbach/pte/TflProvider.java
index edd0801e..1a082714 100644
--- a/src/de/schildbach/pte/TflProvider.java
+++ b/src/de/schildbach/pte/TflProvider.java
@@ -26,10 +26,9 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -60,9 +59,8 @@ public class TflProvider implements NetworkProvider
throw new UnsupportedOperationException();
}
- public QueryConnectionsResult queryConnections(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 String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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
{
throw new UnsupportedOperationException();
}
diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java
index 1c6fc1f8..c47ae180 100644
--- a/src/de/schildbach/pte/VbbProvider.java
+++ b/src/de/schildbach/pte/VbbProvider.java
@@ -31,10 +31,10 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
@@ -58,7 +58,7 @@ public final class VbbProvider implements NetworkProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.NEARBY_STATIONS || capability == Capability.LOCATION_STATION_ID)
+ if (capability == Capability.NEARBY_STATIONS)
return false;
return true;
@@ -115,8 +115,8 @@ public final class VbbProvider implements NetworkProvider
public static final String STATION_URL_CONNECTION = "http://mobil.bvg.de/Fahrinfo/bin/query.bin/dox";
- 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 String products)
+ private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@@ -125,54 +125,10 @@ public final class VbbProvider implements NetworkProvider
uri.append("http://mobil.bvg.de/Fahrinfo/bin/query.bin/dox");
uri.append("?REQ0HafasInitialSelection=0");
- // from
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&SID=").append(ParserUtils.urlEncode("A=16@X=" + lon + "@Y=" + lat));
- }
- else
- {
- uri.append("&REQ0JourneyStopsS0A=").append(locationType(fromType));
- uri.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(from));
- if (fromType == LocationType.STATION)
- uri.append(ParserUtils.urlEncode("!"));
- }
-
- // via
+ appendLocationVbb(uri, from, "S0", "SID");
+ appendLocationVbb(uri, to, "Z0", "ZID");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- // FIXME
- throw new UnsupportedOperationException();
- }
- else
- {
- uri.append("&REQ0JourneyStops1A=").append(locationType(viaType));
- uri.append("&REQ0JourneyStops1G=").append(ParserUtils.urlEncode(via));
- if (viaType == LocationType.STATION)
- uri.append(ParserUtils.urlEncode("!"));
- }
- }
-
- // to
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&ZID=").append(ParserUtils.urlEncode("A=16@X=" + lon + "@Y=" + lat));
- }
- else
- {
- uri.append("&REQ0JourneyStopsZ0A=").append(locationType(toType));
- uri.append("&REQ0JourneyStopsZ0G=").append(ParserUtils.urlEncode(to));
- if (toType == LocationType.STATION)
- uri.append(ParserUtils.urlEncode("!"));
- }
+ appendLocationVbb(uri, via, "1", null);
uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0");
uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
@@ -194,23 +150,44 @@ public final class VbbProvider implements NetworkProvider
uri.append("&vw=3");
if (p == 'F')
uri.append("&vw=7");
- if (p == 'C')
- ; // FIXME
+ // FIXME if (p == 'C')
}
uri.append("&start=Suchen");
return uri.toString();
}
- private static int locationType(final LocationType locationType)
+ private static final void appendLocationVbb(final StringBuilder uri, final Location location, final String paramSuffix, final String paramWgs)
{
- if (locationType == LocationType.STATION)
+ if (location.type == LocationType.ADDRESS && location.lat != 0 && location.lon != 0 && paramWgs != null)
+ {
+ uri.append("&").append(paramWgs).append("=").append(ParserUtils.urlEncode("A=16@X=" + location.lon + "@Y=" + location.lat));
+ }
+ else
+ {
+ uri.append("&REQ0JourneyStops").append(paramSuffix).append("A=").append(locationTypeValue(location));
+ uri.append("&REQ0JourneyStops").append(paramSuffix).append("G=").append(ParserUtils.urlEncode(locationValue(location)));
+ }
+ }
+
+ private static final int locationTypeValue(final Location location)
+ {
+ final LocationType type = location.type;
+ if (type == LocationType.STATION)
return 1;
- if (locationType == LocationType.ADDRESS)
+ if (type == LocationType.ADDRESS)
return 2;
- if (locationType == LocationType.ANY)
+ if (type == LocationType.ANY)
return 255;
- throw new IllegalArgumentException(locationType.toString());
+ throw new IllegalArgumentException(type.toString());
+ }
+
+ private static final String locationValue(final Location location)
+ {
+ if (location.type == LocationType.STATION && location.id != 0)
+ return Integer.toString(location.id);
+ else
+ return location.name;
}
private static final Pattern P_CHECK_ADDRESS = Pattern.compile("", Pattern.DOTALL);
@@ -219,11 +196,11 @@ public final class VbbProvider implements NetworkProvider
private static final Pattern P_CHECK_CONNECTIONS_ERROR = Pattern
.compile("(zu dicht beieinander|mehrfach vorhanden oder identisch)|(keine Verbindung gefunden)|(derzeit nur Auskünfte vom)");
- public QueryConnectionsResult queryConnections(final LocationType fromType, final String from, final LocationType viaType, final String via,
- final LocationType toType, final String to, final Date date, final boolean dep, String products, final WalkSpeed walkSpeed)
- throws IOException
+ 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(fromType, from, viaType, via, toType, to, date, dep, products);
+ final String uri = connectionsQueryUri(from, via, to, date, dep, products);
+ System.out.println(uri);
final CharSequence page = ParserUtils.scrape(uri);
final Matcher mError = P_CHECK_CONNECTIONS_ERROR.matcher(page);
diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java
index 30662bb6..e3846df4 100644
--- a/src/de/schildbach/pte/VgsProvider.java
+++ b/src/de/schildbach/pte/VgsProvider.java
@@ -28,10 +28,9 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
@@ -242,8 +241,8 @@ public class VgsProvider extends AbstractHafasProvider
return 0;
}
- public QueryConnectionsResult queryConnections(LocationType fromType, String from, LocationType viaType, String via, LocationType toType,
- String to, Date date, boolean dep, String products, WalkSpeed walkSpeed) throws IOException
+ 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
{
throw new UnsupportedOperationException();
}
diff --git a/src/de/schildbach/pte/VrnProvider.java b/src/de/schildbach/pte/VrnProvider.java
index 8bc6b8d5..f5289a71 100644
--- a/src/de/schildbach/pte/VrnProvider.java
+++ b/src/de/schildbach/pte/VrnProvider.java
@@ -20,7 +20,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.util.ParserUtils;
/**
@@ -34,8 +34,7 @@ public class VrnProvider extends AbstractEfaProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS || capability == Capability.LOCATION_STATION_ID
- || capability == Capability.LOCATION_WGS84)
+ if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS)
return true;
return false;
@@ -79,8 +78,8 @@ public class VrnProvider extends AbstractEfaProvider
}
@Override
- protected 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 String products, final WalkSpeed walkSpeed)
+ protected String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm");
@@ -93,50 +92,10 @@ public class VrnProvider extends AbstractEfaProvider
uri.append("&outputFormat=XML");
uri.append("&coordOutputFormat=WGS84");
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_origin=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_origin=coord");
- }
- else
- {
- uri.append("&type_origin=").append(locationTypeValue(fromType));
- uri.append("&name_origin=").append(ParserUtils.urlEncode(from, "ISO-8859-1")); // fine-grained location
- }
-
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_destination=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_destination=coord");
- }
- else
- {
- uri.append("&type_destination=").append(locationTypeValue(toType));
- uri.append("&name_destination=").append(ParserUtils.urlEncode(to, "ISO-8859-1")); // fine-grained location
- }
-
+ appendLocation(uri, from, "origin");
+ appendLocation(uri, to, "destination");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- final String[] parts = via.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_via=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_via=coord");
- }
- else
- {
- uri.append("&type_via=").append(locationTypeValue(viaType));
- uri.append("&name_via=").append(ParserUtils.urlEncode(via, "ISO-8859-1"));
- }
- }
+ appendLocation(uri, via, "via");
uri.append("&itdDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&itdTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
diff --git a/src/de/schildbach/pte/VrrProvider.java b/src/de/schildbach/pte/VrrProvider.java
index 75dd5570..957d44d4 100644
--- a/src/de/schildbach/pte/VrrProvider.java
+++ b/src/de/schildbach/pte/VrrProvider.java
@@ -20,7 +20,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import de.schildbach.pte.dto.LocationType;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.util.ParserUtils;
/**
@@ -34,8 +34,7 @@ public class VrrProvider extends AbstractEfaProvider
public boolean hasCapabilities(final Capability... capabilities)
{
for (final Capability capability : capabilities)
- if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS || capability == Capability.LOCATION_STATION_ID
- || capability == Capability.LOCATION_WGS84)
+ if (capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS)
return true;
return false;
@@ -78,8 +77,8 @@ public class VrrProvider extends AbstractEfaProvider
}
@Override
- protected 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 String products, final WalkSpeed walkSpeed)
+ protected String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep,
+ final String products, final WalkSpeed walkSpeed)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm");
@@ -92,50 +91,10 @@ public class VrrProvider extends AbstractEfaProvider
uri.append("&outputFormat=XML");
uri.append("&coordOutputFormat=WGS84");
- if (fromType == LocationType.WGS84)
- {
- final String[] parts = from.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_origin=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_origin=coord");
- }
- else
- {
- uri.append("&type_origin=").append(locationTypeValue(fromType));
- uri.append("&name_origin=").append(ParserUtils.urlEncode(from, "ISO-8859-1")); // fine-grained location
- }
-
- if (toType == LocationType.WGS84)
- {
- final String[] parts = to.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_destination=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_destination=coord");
- }
- else
- {
- uri.append("&type_destination=").append(locationTypeValue(toType));
- uri.append("&name_destination=").append(ParserUtils.urlEncode(to, "ISO-8859-1")); // fine-grained location
- }
-
+ appendLocation(uri, from, "origin");
+ appendLocation(uri, to, "destination");
if (via != null)
- {
- if (viaType == LocationType.WGS84)
- {
- final String[] parts = via.split(",\\s*", 2);
- final int lat = Integer.parseInt(parts[0]);
- final int lon = Integer.parseInt(parts[1]);
- uri.append("&nameInfo_via=").append(String.format("%2.6f:%2.6f", lon / 1E6, lat / 1E6)).append(":WGS84[DD.dddddd]");
- uri.append("&typeInfo_via=coord");
- }
- else
- {
- uri.append("&type_via=").append(locationTypeValue(viaType));
- uri.append("&name_via=").append(ParserUtils.urlEncode(via, "ISO-8859-1"));
- }
- }
+ appendLocation(uri, via, "via");
uri.append("&itdDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date)));
uri.append("&itdTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date)));
diff --git a/src/de/schildbach/pte/dto/Location.java b/src/de/schildbach/pte/dto/Location.java
index 4b944bca..ef339cf5 100644
--- a/src/de/schildbach/pte/dto/Location.java
+++ b/src/de/schildbach/pte/dto/Location.java
@@ -43,7 +43,7 @@ public final class Location
public String toDebugString()
{
- return "[" + type + " " + id + " '" + name + "']";
+ return "[" + type + " " + id + " " + lat + "/" + lon + " '" + name + "']";
}
@Override
diff --git a/src/de/schildbach/pte/dto/LocationType.java b/src/de/schildbach/pte/dto/LocationType.java
index 33454060..ce6e4ec8 100644
--- a/src/de/schildbach/pte/dto/LocationType.java
+++ b/src/de/schildbach/pte/dto/LocationType.java
@@ -21,5 +21,5 @@ package de.schildbach.pte.dto;
*/
public enum LocationType
{
- ANY, STATION, WGS84, ADDRESS, POI
+ ANY, STATION, POI, ADDRESS
}
diff --git a/test/de/schildbach/pte/live/BahnProviderLiveTest.java b/test/de/schildbach/pte/live/BahnProviderLiveTest.java
index 12a4da37..d61a728d 100644
--- a/test/de/schildbach/pte/live/BahnProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/BahnProviderLiveTest.java
@@ -24,6 +24,7 @@ import org.junit.Test;
import de.schildbach.pte.BahnProvider;
import de.schildbach.pte.NetworkProvider.WalkSpeed;
import de.schildbach.pte.dto.Connection;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult;
@@ -34,7 +35,7 @@ import de.schildbach.pte.dto.QueryDeparturesResult;
public class BahnProviderLiveTest
{
private BahnProvider provider = new BahnProvider();
- private static final String ALL_PRODUCTS = "IRSUTBFC";
+ protected static final String ALL_PRODUCTS = "IRSUTBFC";
@Test
public void departures() throws Exception
@@ -46,8 +47,8 @@ public class BahnProviderLiveTest
@Test
public void shortConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Berlin", null, null, LocationType.ANY, "Leipzig",
- new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Berlin"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "Leipzig"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
for (final Connection connection : result.connections)
@@ -58,8 +59,8 @@ public class BahnProviderLiveTest
@Test
public void slowConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Marienburger Str., Berlin ", null, null, LocationType.ANY,
- "Tutzinger-Hof-Platz, Starnberg", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Marienburger Str., Berlin"), null,
+ new Location(LocationType.ANY, 0, 0, 0, "Tutzinger-Hof-Platz, Starnberg"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
for (final Connection connection : result.connections)
@@ -70,8 +71,9 @@ public class BahnProviderLiveTest
@Test
public void connectionWithFootway() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ADDRESS, "Berlin - Mitte, Unter den Linden 24", null, null,
- LocationType.ADDRESS, "Starnberg, Possenhofener Straße 13", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ADDRESS, 0, 0, 0,
+ "Berlin - Mitte, Unter den Linden 24"), null, new Location(LocationType.ADDRESS, 0, 0, 0, "Starnberg, Possenhofener Straße 13"),
+ new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
diff --git a/test/de/schildbach/pte/live/GvhProviderLiveTest.java b/test/de/schildbach/pte/live/GvhProviderLiveTest.java
index f3e4c9d4..a6be0bcf 100644
--- a/test/de/schildbach/pte/live/GvhProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/GvhProviderLiveTest.java
@@ -87,8 +87,8 @@ public class GvhProviderLiveTest
@Test
public void incompleteConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "hann", null, null, LocationType.ANY, "laat", new Date(),
- true, ALL_PRODUCTS, WalkSpeed.FAST);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "hann"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "laat"), new Date(), true, ALL_PRODUCTS, WalkSpeed.FAST);
System.out.println(result);
}
}
diff --git a/test/de/schildbach/pte/live/LinzProviderLiveTest.java b/test/de/schildbach/pte/live/LinzProviderLiveTest.java
index 24ea4fdf..061a60eb 100644
--- a/test/de/schildbach/pte/live/LinzProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/LinzProviderLiveTest.java
@@ -79,16 +79,16 @@ public class LinzProviderLiveTest
@Test
public void incompleteConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "linz", null, null, LocationType.ANY, "gel", new Date(),
- true, ALL_PRODUCTS, WalkSpeed.FAST);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "linz"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "gel"), new Date(), true, ALL_PRODUCTS, WalkSpeed.FAST);
System.out.println(result);
}
@Test
public void shortConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.STATION, "Linz Hauptbahnhof", null, null, LocationType.STATION,
- "Linz Auwiesen", new Date(), true, ALL_PRODUCTS, WalkSpeed.FAST);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.STATION, 0, 0, 0, "Linz Hauptbahnhof"), null,
+ new Location(LocationType.STATION, 0, 0, 0, "Linz Auwiesen"), new Date(), true, ALL_PRODUCTS, WalkSpeed.FAST);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -97,38 +97,8 @@ public class LinzProviderLiveTest
@Test
public void longConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.STATION, "Linz Auwiesen", null, null, LocationType.STATION,
- "Linz Hafen", new Date(), true, ALL_PRODUCTS, WalkSpeed.SLOW);
- System.out.println(result);
- // final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
- // System.out.println(moreResult);
- }
-
- @Test
- public void connectionBetweenCoordinates() throws Exception
- {
- final QueryConnectionsResult result = provider.queryConnections(LocationType.WGS84, "48165238,11577473", null, null, LocationType.WGS84,
- "47987199,11326532", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
- System.out.println(result);
- // final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
- // System.out.println(moreResult);
- }
-
- @Test
- public void connectionBetweenCoordinateAndStation() throws Exception
- {
- final QueryConnectionsResult result = provider.queryConnections(LocationType.WGS84, "48238341,11478230", null, null, LocationType.ANY,
- "Ostbahnhof", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
- System.out.println(result);
- // final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
- // System.out.println(moreResult);
- }
-
- @Test
- public void connectionBetweenAddresses() throws Exception
- {
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ADDRESS, "München, Maximilianstr. 1", null, null,
- LocationType.ADDRESS, "Starnberg, Jahnstraße 50", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.STATION, 0, 0, 0, "Linz Auwiesen"), null,
+ new Location(LocationType.STATION, 0, 0, 0, "Linz Hafen"), new Date(), true, ALL_PRODUCTS, WalkSpeed.SLOW);
System.out.println(result);
// final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
// System.out.println(moreResult);
diff --git a/test/de/schildbach/pte/live/MvvProviderLiveTest.java b/test/de/schildbach/pte/live/MvvProviderLiveTest.java
index 77239f39..717357cb 100644
--- a/test/de/schildbach/pte/live/MvvProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/MvvProviderLiveTest.java
@@ -23,6 +23,7 @@ import org.junit.Test;
import de.schildbach.pte.MvvProvider;
import de.schildbach.pte.NetworkProvider.WalkSpeed;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryConnectionsResult;
@@ -37,8 +38,8 @@ public class MvvProviderLiveTest
@Test
public void shortConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Marienplatz", null, null, LocationType.ANY, "Pasing",
- new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Marienplatz"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "Pasing"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -47,8 +48,8 @@ public class MvvProviderLiveTest
@Test
public void longConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Starnberg, Arbeitsamt", null, null, LocationType.ANY,
- "Ackermannstraße", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Starnberg, Arbeitsamt"), null,
+ new Location(LocationType.STATION, 0, 0, 0, "Ackermannstraße"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
// seems like there are no more connections all the time
}
@@ -56,8 +57,8 @@ public class MvvProviderLiveTest
@Test
public void connectionBetweenCoordinates() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.WGS84, "48165238,11577473", null, null, LocationType.WGS84,
- "47987199,11326532", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ADDRESS, 0, 48165238, 11577473, null), null,
+ new Location(LocationType.ADDRESS, 0, 47987199, 11326532, null), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -66,8 +67,8 @@ public class MvvProviderLiveTest
@Test
public void connectionBetweenCoordinateAndStation() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.WGS84, "48238341,11478230", null, null, LocationType.ANY,
- "Ostbahnhof", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ADDRESS, 0, 48238341, 11478230, null), null,
+ new Location(LocationType.ANY, 0, 0, 0, "Ostbahnhof"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -76,8 +77,8 @@ public class MvvProviderLiveTest
@Test
public void connectionBetweenAddresses() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ADDRESS, "München, Maximilianstr. 1", null, null,
- LocationType.ADDRESS, "Starnberg, Jahnstraße 50", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ADDRESS, 0, 0, 0, "München, Maximilianstr. 1"),
+ null, new Location(LocationType.ADDRESS, 0, 0, 0, "Starnberg, Jahnstraße 50"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
diff --git a/test/de/schildbach/pte/live/OebbProviderLiveTest.java b/test/de/schildbach/pte/live/OebbProviderLiveTest.java
index 708941a3..ea367760 100644
--- a/test/de/schildbach/pte/live/OebbProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/OebbProviderLiveTest.java
@@ -23,6 +23,7 @@ import org.junit.Test;
import de.schildbach.pte.OebbProvider;
import de.schildbach.pte.NetworkProvider.WalkSpeed;
+import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
@@ -46,8 +47,8 @@ public class OebbProviderLiveTest
@Test
public void shortConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Linz", null, null, LocationType.ANY, "Berlin", new Date(),
- true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Linz"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "Berlin"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -56,8 +57,8 @@ public class OebbProviderLiveTest
@Test
public void slowConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Ramsen, Zoll", null, null, LocationType.ANY, "Azuga",
- new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Ramsen, Zoll"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "Azuga"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -66,8 +67,8 @@ public class OebbProviderLiveTest
@Test
public void connectionWithFootway() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Graz, Haselweg", null, null, LocationType.ADDRESS,
- "Innsbruck, Gumppstraße 69", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Graz, Haselweg"), null,
+ new Location(LocationType.ADDRESS, 0, 0, 0, "Innsbruck, Gumppstraße 69"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -76,8 +77,9 @@ public class OebbProviderLiveTest
@Test
public void connectionWithFootway2() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Wien, Krottenbachstraße 110!", null, null,
- LocationType.ADDRESS, "Wien, Meidlinger Hauptstraße 1", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider
+ .queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Wien, Krottenbachstraße 110!"), null, new Location(LocationType.ADDRESS,
+ 0, 0, 0, "Wien, Meidlinger Hauptstraße 1"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
diff --git a/test/de/schildbach/pte/live/SbbProviderLiveTest.java b/test/de/schildbach/pte/live/SbbProviderLiveTest.java
index 7bb3c55f..2e8b404f 100644
--- a/test/de/schildbach/pte/live/SbbProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/SbbProviderLiveTest.java
@@ -48,8 +48,8 @@ public class SbbProviderLiveTest
@Test
public void shortConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Zürich!", null, null, LocationType.ANY, "Bern",
- new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Zürich!"), null, new Location(
+ LocationType.ANY, 0, 0, 0, "Bern"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -58,8 +58,8 @@ public class SbbProviderLiveTest
@Test
public void slowConnection() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ANY, "Schocherswil, Alte Post!", null, null, LocationType.ANY,
- "Laconnex, Mollach", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ANY, 0, 0, 0, "Schocherswil, Alte Post!"), null,
+ new Location(LocationType.ANY, 0, 0, 0, "Laconnex, Mollach"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);
@@ -68,8 +68,8 @@ public class SbbProviderLiveTest
@Test
public void connectionWithFootway() throws Exception
{
- final QueryConnectionsResult result = provider.queryConnections(LocationType.ADDRESS, "Spiez, Seestraße 62", null, null,
- LocationType.ADDRESS, "Einsiedeln, Erlenmoosweg 24", new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
+ final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.ADDRESS, 0, 0, 0, "Spiez, Seestraße 62"), null,
+ new Location(LocationType.ADDRESS, 0, 0, 0, "Einsiedeln, Erlenmoosweg 24"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.linkLater);
System.out.println(moreResult);