diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 0139d8ca..b5d07281 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -34,10 +34,11 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -54,14 +55,14 @@ public abstract class AbstractEfaProvider implements NetworkProvider { protected abstract String autocompleteUri(final CharSequence constraint); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final String uri = autocompleteUri(constraint); try { final CharSequence page = ParserUtils.scrape(uri); - final List results = new ArrayList(); + final List results = new ArrayList(); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); @@ -85,7 +86,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final int id = Integer.parseInt(pp.getAttributeValue(null, "stopID")); final String name = normalizeLocationName(pp.getAttributeValue(null, "nameWithPlace")); - final Autocomplete autocomplete = new Autocomplete(LocationType.STATION, id, name); + final Location autocomplete = new Location(LocationType.STATION, id, name); if (!results.contains(autocomplete)) results.add(autocomplete); @@ -101,7 +102,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider } } - private void processOdvNameElem(final List results, final XmlPullParser pp) throws XmlPullParserException, IOException + private void processOdvNameElem(final List results, final XmlPullParser pp) throws XmlPullParserException, IOException { while (XmlPullUtil.nextStartTagInsideTree(pp, null, "odvNameElem")) { @@ -110,7 +111,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider if (id < 0) id = 0; final String name = normalizeLocationName(pp.nextText()); - results.add(new Autocomplete(type(type), id, name)); + results.add(new Location(type(type), id, name)); } } @@ -639,7 +640,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final String sessionId = pp.getAttributeValue(null, "sessionID"); // parse odv name elements - List ambiguousFrom = null, ambiguousTo = null, ambiguousVia = null; + List ambiguousFrom = null, ambiguousTo = null, ambiguousVia = null; String from = null, to = null; XmlPullUtil.jumpToStartTag(pp, null, "itdOdv"); @@ -649,7 +650,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final String originState = pp.getAttributeValue(null, "state"); if ("list".equals(originState)) { - ambiguousFrom = new ArrayList(); + ambiguousFrom = new ArrayList(); processOdvNameElem(ambiguousFrom, pp); } else if ("identified".equals(originState)) @@ -665,7 +666,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final String destinationState = pp.getAttributeValue(null, "state"); if ("list".equals(destinationState)) { - ambiguousTo = new ArrayList(); + ambiguousTo = new ArrayList(); processOdvNameElem(ambiguousTo, pp); } else if ("identified".equals(destinationState)) @@ -681,7 +682,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final String viaState = pp.getAttributeValue(null, "state"); if ("list".equals(viaState)) { - ambiguousVia = new ArrayList(); + ambiguousVia = new ArrayList(); processOdvNameElem(ambiguousVia, pp); } else if ("identified".equals(viaState)) diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 1dcb0159..771ca409 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -30,10 +30,11 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -65,22 +66,22 @@ public final class BahnProvider implements NetworkProvider Pattern.DOTALL); private static final Pattern P_MULTI_NAME = Pattern.compile("", Pattern.DOTALL); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString())); - final List results = new ArrayList(); + final List results = new ArrayList(); final Matcher mSingle = P_SINGLE_NAME.matcher(page); if (mSingle.matches()) { - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); } else { final Matcher mMulti = P_MULTI_NAME.matcher(page); while (mMulti.find()) - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); } return results; @@ -187,9 +188,9 @@ public final class BahnProvider implements NetworkProvider return QueryConnectionsResult.INVALID_DATE; } - List fromAddresses = null; - List viaAddresses = null; - List toAddresses = null; + List fromAddresses = null; + List viaAddresses = null; + List toAddresses = null; final Matcher mPreAddress = P_PRE_ADDRESS.matcher(page); while (mPreAddress.find()) @@ -198,12 +199,12 @@ public final class BahnProvider implements NetworkProvider final String options = mPreAddress.group(2); final Matcher mAddresses = P_ADDRESSES.matcher(options); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddresses.find()) { final String address = ParserUtils.resolveEntities(mAddresses.group(1)).trim(); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (type.equals("REQ0JourneyStopsS0K")) diff --git a/src/de/schildbach/pte/GvhProvider.java b/src/de/schildbach/pte/GvhProvider.java index 86d1a97a..3c5d9bd0 100644 --- a/src/de/schildbach/pte/GvhProvider.java +++ b/src/de/schildbach/pte/GvhProvider.java @@ -21,6 +21,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.util.ParserUtils; /** diff --git a/src/de/schildbach/pte/LinzProvider.java b/src/de/schildbach/pte/LinzProvider.java index 1899fcca..8d3eada6 100644 --- a/src/de/schildbach/pte/LinzProvider.java +++ b/src/de/schildbach/pte/LinzProvider.java @@ -21,6 +21,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.util.ParserUtils; /** diff --git a/src/de/schildbach/pte/MvvProvider.java b/src/de/schildbach/pte/MvvProvider.java index 4490a492..1b164578 100644 --- a/src/de/schildbach/pte/MvvProvider.java +++ b/src/de/schildbach/pte/MvvProvider.java @@ -30,9 +30,10 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Connection; import de.schildbach.pte.dto.GetConnectionDetailsResult; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.Station; @@ -74,12 +75,12 @@ public class MvvProvider extends AbstractEfaProvider } @Override - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final String uri = autocompleteUri(constraint); final CharSequence page = ParserUtils.scrape(uri); - final List results = new ArrayList(); + final List results = new ArrayList(); final Matcher mAutocompleteCoarse = P_AUTOCOMPLETE_COARSE.matcher(page); while (mAutocompleteCoarse.find()) @@ -92,13 +93,13 @@ public class MvvProvider extends AbstractEfaProvider final int locationId = Integer.parseInt(mAutocompleteFine.group(3)); if (type.equals("stop")) - results.add(new Autocomplete(LocationType.STATION, locationId, location)); + results.add(new Location(LocationType.STATION, locationId, location)); else if (type.equals("street")) - results.add(new Autocomplete(LocationType.ADDRESS, 0, location)); + results.add(new Location(LocationType.ADDRESS, 0, location)); else if (type.equals("singlehouse")) - results.add(new Autocomplete(LocationType.ADDRESS, 0, location)); + results.add(new Location(LocationType.ADDRESS, 0, location)); else if (type.equals("poi")) - results.add(new Autocomplete(LocationType.POI, 0, location)); + results.add(new Location(LocationType.POI, 0, location)); else throw new IllegalStateException("unknown type " + type + " on " + uri); } @@ -347,9 +348,9 @@ public class MvvProvider extends AbstractEfaProvider return QueryConnectionsResult.NO_CONNECTIONS; } - List fromAddresses = null; - List viaAddresses = null; - List toAddresses = null; + List fromAddresses = null; + List viaAddresses = null; + List toAddresses = null; final Matcher mPreAddress = P_PRE_ADDRESS.matcher(page); while (mPreAddress.find()) @@ -358,12 +359,12 @@ public class MvvProvider extends AbstractEfaProvider final String options = mPreAddress.group(2); final Matcher mAddresses = P_ADDRESSES.matcher(options); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddresses.find()) { final String address = ParserUtils.resolveEntities(mAddresses.group(1)).trim(); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (type.equals("name_origin")) diff --git a/src/de/schildbach/pte/NasaProvider.java b/src/de/schildbach/pte/NasaProvider.java index aa19c4d6..3d20f754 100644 --- a/src/de/schildbach/pte/NasaProvider.java +++ b/src/de/schildbach/pte/NasaProvider.java @@ -28,9 +28,10 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -55,7 +56,7 @@ public class NasaProvider extends AbstractHafasProvider return false; } - public List autocompleteStations(CharSequence constraint) throws IOException + public List autocompleteStations(CharSequence constraint) throws IOException { throw new UnsupportedOperationException(); } diff --git a/src/de/schildbach/pte/NetworkProvider.java b/src/de/schildbach/pte/NetworkProvider.java index 1aaf4ca1..4bf82042 100644 --- a/src/de/schildbach/pte/NetworkProvider.java +++ b/src/de/schildbach/pte/NetworkProvider.java @@ -21,8 +21,9 @@ import java.io.IOException; import java.util.Date; import java.util.List; -import de.schildbach.pte.dto.Autocomplete; 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; @@ -39,11 +40,6 @@ public interface NetworkProvider NEARBY_STATIONS, DEPARTURES, CONNECTIONS, LOCATION_WGS84, LOCATION_STATION_ID } - public enum LocationType - { - ANY, STATION, WGS84, ADDRESS, POI - } - public enum WalkSpeed { SLOW, NORMAL, FAST @@ -59,7 +55,7 @@ public interface NetworkProvider * @return auto-complete suggestions * @throws IOException */ - List autocompleteStations(CharSequence constraint) throws IOException; + List autocompleteStations(CharSequence constraint) throws IOException; /** * Determine stations near to given location. At least one of stationId or lat/lon pair must be given. diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index 761d8f40..76e76f4e 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -32,10 +32,11 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -62,7 +63,7 @@ public class OebbProvider extends AbstractHafasProvider private static final Pattern P_AUTOCOMPLETE_JSON = Pattern.compile("SLs\\.sls=(.*?);SLs\\.showSuggestion\\(\\);", Pattern.DOTALL); private static final Pattern P_AUTOCOMPLETE_ID = Pattern.compile(".*?@L=(\\d+)@.*?"); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); final CharSequence page = ParserUtils.scrape(uri); @@ -71,7 +72,7 @@ public class OebbProvider extends AbstractHafasProvider if (mJson.matches()) { final String json = mJson.group(1); - final List results = new ArrayList(); + final List results = new ArrayList(); try { @@ -93,7 +94,7 @@ public class OebbProvider extends AbstractHafasProvider if (m.matches()) { final int localId = Integer.parseInt(m.group(1)); - results.add(new Autocomplete(LocationType.STATION, localId, value)); + results.add(new Location(LocationType.STATION, localId, value)); } else { @@ -102,11 +103,11 @@ public class OebbProvider extends AbstractHafasProvider } else if (type == 2) // address { - results.add(new Autocomplete(LocationType.ADDRESS, 0, value)); + results.add(new Location(LocationType.ADDRESS, 0, value)); } else if (type == 4) // poi { - results.add(new Autocomplete(LocationType.ANY, 0, value)); + results.add(new Location(LocationType.ANY, 0, value)); } else { @@ -247,9 +248,9 @@ public class OebbProvider extends AbstractHafasProvider throw new SessionExpiredException(); } - List fromAddresses = null; - List viaAddresses = null; - List toAddresses = null; + List fromAddresses = null; + List viaAddresses = null; + List toAddresses = null; final Matcher mPreAddress = P_PRE_ADDRESS.matcher(page); while (mPreAddress.find()) @@ -258,12 +259,12 @@ public class OebbProvider extends AbstractHafasProvider final String options = mPreAddress.group(2); final Matcher mAddresses = P_ADDRESSES.matcher(options); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddresses.find()) { final String address = ParserUtils.resolveEntities(mAddresses.group(1)).trim(); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (type.equals("REQ0JourneyStopsS0K")) diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index df0228a8..19cb2ef3 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -30,10 +30,11 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -65,22 +66,22 @@ public class RmvProvider extends AbstractHafasProvider private static final Pattern P_MULTI_NAME = Pattern.compile("\\s*(.*?)\\s*", Pattern.DOTALL); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString())); - final List results = new ArrayList(); + final List results = new ArrayList(); final Matcher mSingle = P_SINGLE_NAME.matcher(page); if (mSingle.matches()) { - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); } else { final Matcher mMulti = P_MULTI_NAME.matcher(page); while (mMulti.find()) - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); } return results; @@ -186,9 +187,9 @@ public class RmvProvider extends AbstractHafasProvider return QueryConnectionsResult.INVALID_DATE; } - List fromAddresses = null; - List viaAddresses = null; - List toAddresses = null; + List fromAddresses = null; + List viaAddresses = null; + List toAddresses = null; final Matcher mPreAddress = P_PRE_ADDRESS.matcher(page); while (mPreAddress.find()) @@ -196,12 +197,12 @@ public class RmvProvider extends AbstractHafasProvider final String type = mPreAddress.group(1); final Matcher mAddresses = P_ADDRESSES.matcher(page); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddresses.find()) { final String address = ParserUtils.resolveEntities(mAddresses.group(1)).trim(); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (type == null) diff --git a/src/de/schildbach/pte/SbbProvider.java b/src/de/schildbach/pte/SbbProvider.java index 51c33e26..97f7ea57 100644 --- a/src/de/schildbach/pte/SbbProvider.java +++ b/src/de/schildbach/pte/SbbProvider.java @@ -28,10 +28,11 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -62,22 +63,22 @@ public class SbbProvider extends AbstractHafasProvider + "(.*?)\n?" // + "", Pattern.DOTALL); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString())); - final List results = new ArrayList(); + final List results = new ArrayList(); final Matcher mSingle = P_SINGLE_NAME.matcher(page); if (mSingle.matches()) { - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mSingle.group(2)), ParserUtils.resolveEntities(mSingle.group(1)))); } else { final Matcher mMulti = P_MULTI_NAME.matcher(page); while (mMulti.find()) - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); + results.add(new Location(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils.resolveEntities(mMulti.group(2)))); } return results; @@ -162,9 +163,9 @@ public class SbbProvider extends AbstractHafasProvider return QueryConnectionsResult.INVALID_DATE; } - List fromAddresses = null; - List viaAddresses = null; - List toAddresses = null; + List fromAddresses = null; + List viaAddresses = null; + List toAddresses = null; final Matcher mPreAddress = P_PRE_ADDRESS.matcher(page); while (mPreAddress.find()) @@ -173,12 +174,12 @@ public class SbbProvider extends AbstractHafasProvider final String options = mPreAddress.group(2); final Matcher mAddresses = P_ADDRESSES.matcher(options); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddresses.find()) { final String address = ParserUtils.resolveEntities(mAddresses.group(1)).trim(); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (type.equals("REQ0JourneyStopsS0K")) diff --git a/src/de/schildbach/pte/SncbProvider.java b/src/de/schildbach/pte/SncbProvider.java index 9d0b9b44..b7e64f9c 100644 --- a/src/de/schildbach/pte/SncbProvider.java +++ b/src/de/schildbach/pte/SncbProvider.java @@ -26,9 +26,10 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -52,7 +53,7 @@ public class SncbProvider extends AbstractHafasProvider return false; } - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { throw new UnsupportedOperationException(); } diff --git a/src/de/schildbach/pte/TflProvider.java b/src/de/schildbach/pte/TflProvider.java index cdf6c272..edd0801e 100644 --- a/src/de/schildbach/pte/TflProvider.java +++ b/src/de/schildbach/pte/TflProvider.java @@ -26,9 +26,10 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -48,7 +49,7 @@ public class TflProvider implements NetworkProvider return false; } - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { throw new UnsupportedOperationException(); } diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java index 31c6dc59..53a6ec85 100644 --- a/src/de/schildbach/pte/VbbProvider.java +++ b/src/de/schildbach/pte/VbbProvider.java @@ -31,10 +31,11 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -71,9 +72,9 @@ public final class VbbProvider implements NetworkProvider private static final String AUTOCOMPLETE_MASTID_URL = "http://mobil.bvg.de/IstAbfahrtzeiten/index/mobil?input="; private static final Pattern P_SINGLE_MASTID = Pattern.compile(".*Ist-Abfahrtzeiten.*?(.*?).*", Pattern.DOTALL); - public List autocompleteStations(final CharSequence constraint) throws IOException + public List autocompleteStations(final CharSequence constraint) throws IOException { - final List results = new ArrayList(); + final List results = new ArrayList(); if (P_AUTOCOMPLETE_IS_MAST.matcher(constraint).matches()) { @@ -82,7 +83,7 @@ public final class VbbProvider implements NetworkProvider final Matcher mSingle = P_SINGLE_MASTID.matcher(page); if (mSingle.matches()) { - results.add(new Autocomplete(LocationType.ANY, 0 /* TODO */, ParserUtils.resolveEntities(mSingle.group(1)))); + results.add(new Location(LocationType.ANY, 0 /* TODO */, ParserUtils.resolveEntities(mSingle.group(1)))); } } else @@ -92,13 +93,13 @@ public final class VbbProvider implements NetworkProvider final Matcher mSingle = P_SINGLE_NAME.matcher(page); if (mSingle.matches()) { - results.add(new Autocomplete(LocationType.ANY, 0 /* TODO */, ParserUtils.resolveEntities(mSingle.group(1)))); + results.add(new Location(LocationType.ANY, 0 /* TODO */, ParserUtils.resolveEntities(mSingle.group(1)))); } else { final Matcher mMulti = P_MULTI_NAME.matcher(page); while (mMulti.find()) - results.add(new Autocomplete(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils + results.add(new Location(LocationType.STATION, Integer.parseInt(mMulti.group(1)), ParserUtils .resolveEntities(mMulti.group(2)))); } } @@ -238,12 +239,12 @@ public final class VbbProvider implements NetworkProvider final Matcher mAddress = P_CHECK_ADDRESS.matcher(page); - final List addresses = new ArrayList(); + final List addresses = new ArrayList(); while (mAddress.find()) { final String address = ParserUtils.resolveEntities(mAddress.group(1)); if (!addresses.contains(address)) - addresses.add(new Autocomplete(LocationType.ANY, 0, address)); + addresses.add(new Location(LocationType.ANY, 0, address)); } if (addresses.isEmpty()) diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java index 4705a614..30662bb6 100644 --- a/src/de/schildbach/pte/VgsProvider.java +++ b/src/de/schildbach/pte/VgsProvider.java @@ -28,9 +28,10 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.schildbach.pte.dto.Autocomplete; +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.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult.Status; @@ -55,7 +56,7 @@ public class VgsProvider extends AbstractHafasProvider return false; } - public List autocompleteStations(CharSequence constraint) throws IOException + public List autocompleteStations(CharSequence constraint) throws IOException { throw new UnsupportedOperationException(); } diff --git a/src/de/schildbach/pte/VrnProvider.java b/src/de/schildbach/pte/VrnProvider.java index 3135f31b..8bc6b8d5 100644 --- a/src/de/schildbach/pte/VrnProvider.java +++ b/src/de/schildbach/pte/VrnProvider.java @@ -20,6 +20,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.util.ParserUtils; /** diff --git a/src/de/schildbach/pte/VrrProvider.java b/src/de/schildbach/pte/VrrProvider.java index eafcab89..75dd5570 100644 --- a/src/de/schildbach/pte/VrrProvider.java +++ b/src/de/schildbach/pte/VrrProvider.java @@ -20,6 +20,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.util.ParserUtils; /** diff --git a/src/de/schildbach/pte/dto/Autocomplete.java b/src/de/schildbach/pte/dto/Location.java similarity index 55% rename from src/de/schildbach/pte/dto/Autocomplete.java rename to src/de/schildbach/pte/dto/Location.java index 3e60619b..606d5947 100644 --- a/src/de/schildbach/pte/dto/Autocomplete.java +++ b/src/de/schildbach/pte/dto/Location.java @@ -16,33 +16,31 @@ */ package de.schildbach.pte.dto; -import de.schildbach.pte.NetworkProvider.LocationType; - /** * @author Andreas Schildbach */ -public final class Autocomplete +public final class Location { - public final LocationType locationType; - public final int locationId; - public final String location; + public final LocationType type; + public final int id; + public final String name; - public Autocomplete(final LocationType locationType, final int locationId, final String location) + public Location(final LocationType type, final int id, final String name) { - this.locationType = locationType; - this.locationId = locationId; - this.location = location; + this.type = type; + this.id = id; + this.name = name; } @Override public String toString() { - return location; // invoked by AutoCompleteTextView in landscape orientation + return name; // invoked by AutoCompleteTextView in landscape orientation } public String toDebugString() { - return "[" + locationType + " " + locationId + " '" + location + "']"; + return "[" + type + " " + id + " '" + name + "']"; } @Override @@ -50,21 +48,21 @@ public final class Autocomplete { if (o == this) return true; - if (!(o instanceof Autocomplete)) + if (!(o instanceof Location)) return false; - final Autocomplete other = (Autocomplete) o; - if (this.locationType != other.locationType) + final Location other = (Location) o; + if (this.type != other.type) return false; - if (this.locationId != other.locationId) + if (this.id != other.id) return false; - if (this.locationId != 0) + if (this.id != 0) return true; - return this.location.equals(other.location); + return this.name.equals(other.name); } @Override public int hashCode() { - return locationType.hashCode(); // FIXME not very discriminative + return type.hashCode(); // FIXME not very discriminative } } diff --git a/src/de/schildbach/pte/dto/LocationType.java b/src/de/schildbach/pte/dto/LocationType.java new file mode 100644 index 00000000..33454060 --- /dev/null +++ b/src/de/schildbach/pte/dto/LocationType.java @@ -0,0 +1,25 @@ +/* + * Copyright 2010 the original author or authors. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package de.schildbach.pte.dto; + +/** + * @author Andreas Schildbach + */ +public enum LocationType +{ + ANY, STATION, WGS84, ADDRESS, POI +} diff --git a/src/de/schildbach/pte/dto/QueryConnectionsResult.java b/src/de/schildbach/pte/dto/QueryConnectionsResult.java index d938cb73..e9d0af8e 100644 --- a/src/de/schildbach/pte/dto/QueryConnectionsResult.java +++ b/src/de/schildbach/pte/dto/QueryConnectionsResult.java @@ -37,9 +37,9 @@ public final class QueryConnectionsResult implements Serializable public final Status status; - public final List ambiguousFrom; - public final List ambiguousVia; - public final List ambiguousTo; + public final List ambiguousFrom; + public final List ambiguousVia; + public final List ambiguousTo; public final String queryUri; public final String from; @@ -66,7 +66,7 @@ public final class QueryConnectionsResult implements Serializable this.ambiguousTo = null; } - public QueryConnectionsResult(final List ambiguousFrom, final List ambiguousVia, final List ambiguousTo) + public QueryConnectionsResult(final List ambiguousFrom, final List ambiguousVia, final List ambiguousTo) { this.status = Status.AMBIGUOUS; this.ambiguousFrom = ambiguousFrom; diff --git a/test/de/schildbach/pte/live/BahnProviderLiveTest.java b/test/de/schildbach/pte/live/BahnProviderLiveTest.java index 7d4b0ada..12a4da37 100644 --- a/test/de/schildbach/pte/live/BahnProviderLiveTest.java +++ b/test/de/schildbach/pte/live/BahnProviderLiveTest.java @@ -22,9 +22,9 @@ import java.util.Date; import org.junit.Test; import de.schildbach.pte.BahnProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; import de.schildbach.pte.dto.Connection; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; diff --git a/test/de/schildbach/pte/live/GvhProviderLiveTest.java b/test/de/schildbach/pte/live/GvhProviderLiveTest.java index 8e82ac49..f3e4c9d4 100644 --- a/test/de/schildbach/pte/live/GvhProviderLiveTest.java +++ b/test/de/schildbach/pte/live/GvhProviderLiveTest.java @@ -22,9 +22,9 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.GvhProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; @@ -39,7 +39,7 @@ public class GvhProviderLiveTest @Test public void autocompleteIncomplete() throws Exception { - final List autocompletes = provider.autocompleteStations("Kur"); + final List autocompletes = provider.autocompleteStations("Kur"); list(autocompletes); } @@ -47,7 +47,7 @@ public class GvhProviderLiveTest @Test public void autocompleteIdentified() throws Exception { - final List autocompletes = provider.autocompleteStations("Hannover, Hannoversche Straße"); + final List autocompletes = provider.autocompleteStations("Hannover, Hannoversche Straße"); list(autocompletes); } @@ -55,15 +55,15 @@ public class GvhProviderLiveTest @Test public void autocompleteCity() throws Exception { - final List autocompletes = provider.autocompleteStations("Hannover"); + final List autocompletes = provider.autocompleteStations("Hannover"); list(autocompletes); } - private void list(final List autocompletes) + private void list(final List autocompletes) { System.out.print(autocompletes.size() + " "); - for (final Autocomplete autocomplete : autocompletes) + for (final Location autocomplete : autocompletes) System.out.print(autocomplete.toDebugString() + " "); System.out.println(); } @@ -71,7 +71,7 @@ public class GvhProviderLiveTest @Test public void autocomplete() throws Exception { - final List results = provider.autocompleteStations("Hannover"); + final List results = provider.autocompleteStations("Hannover"); System.out.println(results.size() + " " + results); } diff --git a/test/de/schildbach/pte/live/LinzProviderLiveTest.java b/test/de/schildbach/pte/live/LinzProviderLiveTest.java index d694edb5..24ea4fdf 100644 --- a/test/de/schildbach/pte/live/LinzProviderLiveTest.java +++ b/test/de/schildbach/pte/live/LinzProviderLiveTest.java @@ -23,9 +23,9 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.LinzProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -40,7 +40,7 @@ public class LinzProviderLiveTest @Test public void autocompleteIncomplete() throws Exception { - final List autocompletes = provider.autocompleteStations("Linz, H"); + final List autocompletes = provider.autocompleteStations("Linz, H"); list(autocompletes); } @@ -48,7 +48,7 @@ public class LinzProviderLiveTest @Test public void autocompleteIdentified() throws Exception { - final List autocompletes = provider.autocompleteStations("Leonding, Haag"); + final List autocompletes = provider.autocompleteStations("Leonding, Haag"); list(autocompletes); } @@ -56,15 +56,15 @@ public class LinzProviderLiveTest @Test public void autocompleteCity() throws Exception { - final List autocompletes = provider.autocompleteStations("Linz"); + final List autocompletes = provider.autocompleteStations("Linz"); list(autocompletes); } - private void list(final List autocompletes) + private void list(final List autocompletes) { System.out.print(autocompletes.size() + " "); - for (final Autocomplete autocomplete : autocompletes) + for (final Location autocomplete : autocompletes) System.out.print(autocomplete.toDebugString() + " "); System.out.println(); } diff --git a/test/de/schildbach/pte/live/MvvProviderLiveTest.java b/test/de/schildbach/pte/live/MvvProviderLiveTest.java index 0a112d5b..77239f39 100644 --- a/test/de/schildbach/pte/live/MvvProviderLiveTest.java +++ b/test/de/schildbach/pte/live/MvvProviderLiveTest.java @@ -22,8 +22,8 @@ import java.util.Date; import org.junit.Test; import de.schildbach.pte.MvvProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.QueryConnectionsResult; /** diff --git a/test/de/schildbach/pte/live/OebbProviderLiveTest.java b/test/de/schildbach/pte/live/OebbProviderLiveTest.java index f5a445c5..708941a3 100644 --- a/test/de/schildbach/pte/live/OebbProviderLiveTest.java +++ b/test/de/schildbach/pte/live/OebbProviderLiveTest.java @@ -22,8 +22,8 @@ import java.util.Date; import org.junit.Test; import de.schildbach.pte.OebbProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; diff --git a/test/de/schildbach/pte/live/SbbProviderLiveTest.java b/test/de/schildbach/pte/live/SbbProviderLiveTest.java index 162edd43..7bb3c55f 100644 --- a/test/de/schildbach/pte/live/SbbProviderLiveTest.java +++ b/test/de/schildbach/pte/live/SbbProviderLiveTest.java @@ -23,9 +23,9 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.SbbProvider; -import de.schildbach.pte.NetworkProvider.LocationType; import de.schildbach.pte.NetworkProvider.WalkSpeed; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; +import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryConnectionsResult; @@ -78,7 +78,7 @@ public class SbbProviderLiveTest @Test public void autoComplete() throws Exception { - final List result = provider.autocompleteStations("haupt"); + final List result = provider.autocompleteStations("haupt"); System.out.println(result); } } diff --git a/test/de/schildbach/pte/live/VrnProviderLiveTest.java b/test/de/schildbach/pte/live/VrnProviderLiveTest.java index c3c48406..e84374c0 100644 --- a/test/de/schildbach/pte/live/VrnProviderLiveTest.java +++ b/test/de/schildbach/pte/live/VrnProviderLiveTest.java @@ -21,7 +21,7 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.VrnProvider; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -35,7 +35,7 @@ public class VrnProviderLiveTest @Test public void autocompleteIncomplete() throws Exception { - final List autocompletes = provider.autocompleteStations("Kur"); + final List autocompletes = provider.autocompleteStations("Kur"); list(autocompletes); } @@ -43,7 +43,7 @@ public class VrnProviderLiveTest @Test public void autocompleteIdentified() throws Exception { - final List autocompletes = provider.autocompleteStations("Bremen, KUR"); + final List autocompletes = provider.autocompleteStations("Bremen, KUR"); list(autocompletes); } @@ -51,7 +51,7 @@ public class VrnProviderLiveTest @Test public void autocompleteLocality() throws Exception { - final List autocompletes = provider.autocompleteStations("Bremen"); + final List autocompletes = provider.autocompleteStations("Bremen"); list(autocompletes); } @@ -59,15 +59,15 @@ public class VrnProviderLiveTest @Test public void autocompleteCity() throws Exception { - final List autocompletes = provider.autocompleteStations("Mannheim"); + final List autocompletes = provider.autocompleteStations("Mannheim"); list(autocompletes); } - private void list(final List autocompletes) + private void list(final List autocompletes) { System.out.print(autocompletes.size() + " "); - for (final Autocomplete autocomplete : autocompletes) + for (final Location autocomplete : autocompletes) System.out.print(autocomplete.toDebugString() + " "); System.out.println(); } diff --git a/test/de/schildbach/pte/live/VrrProviderLiveTest.java b/test/de/schildbach/pte/live/VrrProviderLiveTest.java index 73945af8..9a37418a 100644 --- a/test/de/schildbach/pte/live/VrrProviderLiveTest.java +++ b/test/de/schildbach/pte/live/VrrProviderLiveTest.java @@ -21,7 +21,7 @@ import java.util.List; import org.junit.Test; import de.schildbach.pte.VrrProvider; -import de.schildbach.pte.dto.Autocomplete; +import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.QueryDeparturesResult; @@ -35,7 +35,7 @@ public class VrrProviderLiveTest @Test public void autocompleteIncomplete() throws Exception { - final List autocompletes = provider.autocompleteStations("Kur"); + final List autocompletes = provider.autocompleteStations("Kur"); list(autocompletes); } @@ -43,7 +43,7 @@ public class VrrProviderLiveTest @Test public void autocompleteIdentified() throws Exception { - final List autocompletes = provider.autocompleteStations("Düsseldorf, Am Frohnhof"); + final List autocompletes = provider.autocompleteStations("Düsseldorf, Am Frohnhof"); list(autocompletes); } @@ -51,15 +51,15 @@ public class VrrProviderLiveTest @Test public void autocompleteCity() throws Exception { - final List autocompletes = provider.autocompleteStations("Düsseldorf"); + final List autocompletes = provider.autocompleteStations("Düsseldorf"); list(autocompletes); } - private void list(final List autocompletes) + private void list(final List autocompletes) { System.out.print(autocompletes.size() + " "); - for (final Autocomplete autocomplete : autocompletes) + for (final Location autocomplete : autocompletes) System.out.print(autocomplete.toDebugString() + " "); System.out.println(); }