diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index d6d48cd2..eaf260c0 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -347,6 +347,18 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } } + protected StringBuilder jsonGetStopsParameters(final CharSequence constraint) + { + final StringBuilder parameters = new StringBuilder(); + parameters.append("?getstop=1"); + parameters.append("&REQ0JourneyStopsS0A=255"); + parameters.append("&REQ0JourneyStopsS0G=").append(ParserUtils.urlEncode(constraint.toString(), jsonGetStopsEncoding)).append("?"); + // parameters.append("&REQ0JourneyStopsB=12"); + parameters.append("&js=true"); + + return parameters; + } + private static final Pattern P_AJAX_GET_STOPS_JSON = Pattern.compile("SLs\\.sls\\s*=\\s*(.*?);\\s*SLs\\.showSuggestion\\(\\);", Pattern.DOTALL); private static final Pattern P_AJAX_GET_STOPS_ID = Pattern.compile(".*?@L=(\\d+)@.*?"); diff --git a/enabler/src/de/schildbach/pte/BahnProvider.java b/enabler/src/de/schildbach/pte/BahnProvider.java index 1e458788..2b3b9e94 100644 --- a/enabler/src/de/schildbach/pte/BahnProvider.java +++ b/enabler/src/de/schildbach/pte/BahnProvider.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -196,13 +195,12 @@ public final class BahnProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/BvgProvider.java b/enabler/src/de/schildbach/pte/BvgProvider.java index b84b52cb..691fbcee 100644 --- a/enabler/src/de/schildbach/pte/BvgProvider.java +++ b/enabler/src/de/schildbach/pte/BvgProvider.java @@ -25,7 +25,6 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -503,13 +502,12 @@ public final class BvgProvider extends AbstractHafasProvider ParserUtils.parseEuropeanTime(calendar, m.group(2)); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.bin/dny?tpl=suggest2json&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/EireannProvider.java b/enabler/src/de/schildbach/pte/EireannProvider.java index e1dd6271..832a831f 100644 --- a/enabler/src/de/schildbach/pte/EireannProvider.java +++ b/enabler/src/de/schildbach/pte/EireannProvider.java @@ -19,7 +19,6 @@ package de.schildbach.pte; import java.io.IOException; import java.util.List; -import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -29,7 +28,6 @@ import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * Ireland, Dublin @@ -137,13 +135,12 @@ public class EireannProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.bin/en?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } private static final Pattern P_NORMALIZE_LINE = Pattern.compile("([^#]+)#"); diff --git a/enabler/src/de/schildbach/pte/NriProvider.java b/enabler/src/de/schildbach/pte/NriProvider.java index 8da7ae1d..abd91a8c 100644 --- a/enabler/src/de/schildbach/pte/NriProvider.java +++ b/enabler/src/de/schildbach/pte/NriProvider.java @@ -20,14 +20,12 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Locale; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -171,14 +169,12 @@ public class NriProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/ony?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsS0B=5&REQ0JourneyStopsB=12&getstop=1&noSession=yes&REQ0JourneyStopsS0G=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/NsProvider.java b/enabler/src/de/schildbach/pte/NsProvider.java index 7592c9d4..578a6cb6 100644 --- a/enabler/src/de/schildbach/pte/NsProvider.java +++ b/enabler/src/de/schildbach/pte/NsProvider.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Set; import de.schildbach.pte.dto.Location; @@ -31,7 +30,6 @@ import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -44,6 +42,8 @@ public class NsProvider extends AbstractHafasProvider public NsProvider() { super(API_BASE + "stboard.exe/nn", API_BASE + "ajax-getstop.exe/nny", API_BASE + "query.exe/nn", 10, null); + + setJsonGetStopsEncoding(UTF_8); } public NetworkId id() @@ -133,14 +133,12 @@ public class NsProvider extends AbstractHafasProvider throw new UnsupportedOperationException(); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/nny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/OebbProvider.java b/enabler/src/de/schildbach/pte/OebbProvider.java index 2a03c1e2..0a5a0734 100644 --- a/enabler/src/de/schildbach/pte/OebbProvider.java +++ b/enabler/src/de/schildbach/pte/OebbProvider.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Set; import de.schildbach.pte.dto.Location; @@ -31,7 +30,6 @@ import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -184,14 +182,12 @@ public class OebbProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/dny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/RmvProvider.java b/enabler/src/de/schildbach/pte/RmvProvider.java index d3c11ff9..b09f9605 100644 --- a/enabler/src/de/schildbach/pte/RmvProvider.java +++ b/enabler/src/de/schildbach/pte/RmvProvider.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Set; import de.schildbach.pte.dto.Location; @@ -31,7 +30,6 @@ import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -192,13 +190,12 @@ public class RmvProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), UTF_8)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/RtProvider.java b/enabler/src/de/schildbach/pte/RtProvider.java index 0b6a6b86..332807e7 100644 --- a/enabler/src/de/schildbach/pte/RtProvider.java +++ b/enabler/src/de/schildbach/pte/RtProvider.java @@ -20,14 +20,12 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Locale; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -142,13 +140,12 @@ public class RtProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/SbbProvider.java b/enabler/src/de/schildbach/pte/SbbProvider.java index 83d5c07c..387f8de6 100644 --- a/enabler/src/de/schildbach/pte/SbbProvider.java +++ b/enabler/src/de/schildbach/pte/SbbProvider.java @@ -20,14 +20,12 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Locale; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -136,13 +134,13 @@ public class SbbProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); + + return jsonGetStops(uri.toString()); - return jsonGetStops(uri); } @Override diff --git a/enabler/src/de/schildbach/pte/SeProvider.java b/enabler/src/de/schildbach/pte/SeProvider.java index 0a2234e3..1b07e6be 100644 --- a/enabler/src/de/schildbach/pte/SeProvider.java +++ b/enabler/src/de/schildbach/pte/SeProvider.java @@ -20,7 +20,6 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -30,7 +29,6 @@ import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -184,14 +182,12 @@ public class SeProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/sny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=7&getstop=1&noSession=yes&REQ0JourneyStopsB=12&REQ0JourneyStopsS0G=&S=%s"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/SeptaProvider.java b/enabler/src/de/schildbach/pte/SeptaProvider.java index 0c7c8a02..c8c3c4f9 100644 --- a/enabler/src/de/schildbach/pte/SeptaProvider.java +++ b/enabler/src/de/schildbach/pte/SeptaProvider.java @@ -287,14 +287,12 @@ public class SeptaProvider extends AbstractHafasProvider } } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/dny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/SncbProvider.java b/enabler/src/de/schildbach/pte/SncbProvider.java index 2069f91a..03ac053d 100644 --- a/enabler/src/de/schildbach/pte/SncbProvider.java +++ b/enabler/src/de/schildbach/pte/SncbProvider.java @@ -20,14 +20,12 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; import java.util.List; -import java.util.Locale; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -40,6 +38,8 @@ public class SncbProvider extends AbstractHafasProvider public SncbProvider() { super(API_BASE + "stboard.exe/nn", API_BASE + "ajax-getstop.exe/nny", API_BASE + "query.exe/nn", 16, null); + + setJsonGetStopsEncoding(UTF_8); } public NetworkId id() @@ -126,14 +126,12 @@ public class SncbProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/nny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/StockholmProvider.java b/enabler/src/de/schildbach/pte/StockholmProvider.java index c8ed6106..c614e4b9 100644 --- a/enabler/src/de/schildbach/pte/StockholmProvider.java +++ b/enabler/src/de/schildbach/pte/StockholmProvider.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -38,7 +37,6 @@ import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; import de.schildbach.pte.dto.Style; import de.schildbach.pte.dto.Style.Shape; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -50,7 +48,7 @@ public class StockholmProvider extends AbstractHafasProvider public StockholmProvider() { - super(API_BASE + "stboard.exe/sn", API_BASE + "ajax-getstop.exe/sny", API_BASE + "query.exe/sn", 7, null, null, null); + super(API_BASE + "stboard.exe/sn", API_BASE + "ajax-getstop.exe/sny", API_BASE + "query.exe/sn", 7, null); } public NetworkId id() @@ -179,14 +177,12 @@ public class StockholmProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/sny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=7&getstop=1&noSession=yes&REQ0JourneyStopsB=12&REQ0JourneyStopsS0G=&S=%s"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/VbbProvider.java b/enabler/src/de/schildbach/pte/VbbProvider.java index db9ce987..953d91e6 100644 --- a/enabler/src/de/schildbach/pte/VbbProvider.java +++ b/enabler/src/de/schildbach/pte/VbbProvider.java @@ -19,7 +19,6 @@ package de.schildbach.pte; import java.io.IOException; import java.util.List; -import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -28,7 +27,6 @@ import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -178,12 +176,11 @@ public class VbbProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), UTF_8)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } } diff --git a/enabler/src/de/schildbach/pte/VbnProvider.java b/enabler/src/de/schildbach/pte/VbnProvider.java index e2d43ff6..981b1363 100644 --- a/enabler/src/de/schildbach/pte/VbnProvider.java +++ b/enabler/src/de/schildbach/pte/VbnProvider.java @@ -19,14 +19,12 @@ package de.schildbach.pte; import java.io.IOException; import java.util.List; -import java.util.Locale; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -141,14 +139,12 @@ public class VbnProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE - + "ajax-getstop.exe/dny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsS0B=5&REQ0JourneyStopsB=12&getstop=1&noSession=yes&REQ0JourneyStopsS0G=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/src/de/schildbach/pte/VgsProvider.java b/enabler/src/de/schildbach/pte/VgsProvider.java index 35e1dbc1..1b621a51 100644 --- a/enabler/src/de/schildbach/pte/VgsProvider.java +++ b/enabler/src/de/schildbach/pte/VgsProvider.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Set; import de.schildbach.pte.dto.Location; @@ -31,7 +30,6 @@ import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; -import de.schildbach.pte.util.ParserUtils; /** * @author Andreas Schildbach @@ -160,13 +158,12 @@ public class VgsProvider extends AbstractHafasProvider return xmlQueryDepartures(uri.toString(), stationId); } - private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(Locale.ENGLISH, AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); + final StringBuilder uri = new StringBuilder(getStopEndpoint); + uri.append(jsonGetStopsParameters(constraint)); - return jsonGetStops(uri); + return jsonGetStops(uri.toString()); } @Override diff --git a/enabler/test/de/schildbach/pte/live/NsProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/NsProviderLiveTest.java index 6af06554..b7ca18d1 100644 --- a/enabler/test/de/schildbach/pte/live/NsProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/NsProviderLiveTest.java @@ -73,6 +73,14 @@ public class NsProviderLiveTest extends AbstractProviderLiveTest print(autocompletes); } + @Test + public void autocompleteUmlaut() throws Exception + { + final List autocompletes = provider.autocompleteStations("Brüssel"); + + print(autocompletes); + } + @Test public void shortTrip() throws Exception { diff --git a/enabler/test/de/schildbach/pte/live/RtProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/RtProviderLiveTest.java index 52622ec0..ac5cfdfd 100644 --- a/enabler/test/de/schildbach/pte/live/RtProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/RtProviderLiveTest.java @@ -69,7 +69,7 @@ public class RtProviderLiveTest extends AbstractProviderLiveTest } @Test - public void autoComplete() throws Exception + public void autocomplete() throws Exception { final List autocompletes = provider.autocompleteStations("haupt"); @@ -77,7 +77,7 @@ public class RtProviderLiveTest extends AbstractProviderLiveTest } @Test - public void autoCompleteAddress() throws Exception + public void autocompleteAddress() throws Exception { final List autocompletes = provider.autocompleteStations("Dorfstrasse 10, Dällikon, Schweiz"); @@ -85,7 +85,7 @@ public class RtProviderLiveTest extends AbstractProviderLiveTest } @Test - public void autoCompleteEncoding() throws Exception + public void autocompleteEncoding() throws Exception { List autocompletes = provider.autocompleteStations("Dorfstrasse 1, Schäftland"); assertEquals("Schöftland, Dorfstrasse", autocompletes.get(0).name); diff --git a/enabler/test/de/schildbach/pte/live/SeProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/SeProviderLiveTest.java index 6e2776af..6ceaa753 100644 --- a/enabler/test/de/schildbach/pte/live/SeProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/SeProviderLiveTest.java @@ -69,7 +69,15 @@ public class SeProviderLiveTest extends AbstractProviderLiveTest @Test public void autocomplete() throws Exception { - final List autocompletes = provider.autocompleteStations("Luleå Airport"); + final List autocompletes = provider.autocompleteStations("Airport"); + + print(autocompletes); + } + + @Test + public void autocompleteUmlaut() throws Exception + { + final List autocompletes = provider.autocompleteStations("Luleå"); print(autocompletes); } diff --git a/enabler/test/de/schildbach/pte/live/SncbProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/SncbProviderLiveTest.java index 3bdb3b2c..eb2b301c 100644 --- a/enabler/test/de/schildbach/pte/live/SncbProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/SncbProviderLiveTest.java @@ -75,7 +75,15 @@ public class SncbProviderLiveTest extends AbstractProviderLiveTest } @Test - public void autoCompleteAddress() throws Exception + public void autocompleteUmlaut() throws Exception + { + final List autocompletes = provider.autocompleteStations("Brüssel"); + + print(autocompletes); + } + + @Test + public void autocompleteAddress() throws Exception { final List autocompletes = provider.autocompleteStations("Rue Paul Janson 9, 1030 Bruxelles");