Location and LocationType belong together

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@247 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-10-08 17:59:55 +00:00
parent 875bd1d651
commit 19c9c269e2
27 changed files with 177 additions and 143 deletions

View file

@ -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<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final String uri = autocompleteUri(constraint);
try
{
final CharSequence page = ParserUtils.scrape(uri);
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> results, final XmlPullParser pp) throws XmlPullParserException, IOException
private void processOdvNameElem(final List<Location> 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<Autocomplete> ambiguousFrom = null, ambiguousTo = null, ambiguousVia = null;
List<Location> 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<Autocomplete>();
ambiguousFrom = new ArrayList<Location>();
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<Autocomplete>();
ambiguousTo = new ArrayList<Location>();
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<Autocomplete>();
ambiguousVia = new ArrayList<Location>();
processOdvNameElem(ambiguousVia, pp);
}
else if ("identified".equals(viaState))

View file

@ -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("<option value=\".+?#(\\d+)\">(.+?)</option>", Pattern.DOTALL);
public List<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString()));
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> fromAddresses = null;
List<Autocomplete> viaAddresses = null;
List<Autocomplete> toAddresses = null;
List<Location> fromAddresses = null;
List<Location> viaAddresses = null;
List<Location> 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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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"))

View file

@ -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;
/**

View file

@ -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;
/**

View file

@ -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<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final String uri = autocompleteUri(constraint);
final CharSequence page = ParserUtils.scrape(uri);
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> fromAddresses = null;
List<Autocomplete> viaAddresses = null;
List<Autocomplete> toAddresses = null;
List<Location> fromAddresses = null;
List<Location> viaAddresses = null;
List<Location> 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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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"))

View file

@ -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<Autocomplete> autocompleteStations(CharSequence constraint) throws IOException
public List<Location> autocompleteStations(CharSequence constraint) throws IOException
{
throw new UnsupportedOperationException();
}

View file

@ -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<Autocomplete> autocompleteStations(CharSequence constraint) throws IOException;
List<Location> autocompleteStations(CharSequence constraint) throws IOException;
/**
* Determine stations near to given location. At least one of stationId or lat/lon pair must be given.

View file

@ -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<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> 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<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> fromAddresses = null;
List<Autocomplete> viaAddresses = null;
List<Autocomplete> toAddresses = null;
List<Location> fromAddresses = null;
List<Location> viaAddresses = null;
List<Location> 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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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"))

View file

@ -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("<a href=\"/auskunft/bin/jp/stboard.exe/dox.*?input=(\\d+)&.*?\">\\s*(.*?)\\s*</a>",
Pattern.DOTALL);
public List<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString()));
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> fromAddresses = null;
List<Autocomplete> viaAddresses = null;
List<Autocomplete> toAddresses = null;
List<Location> fromAddresses = null;
List<Location> viaAddresses = null;
List<Location> 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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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)

View file

@ -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?" //
+ "</a>", Pattern.DOTALL);
public List<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final CharSequence page = ParserUtils.scrape(NAME_URL + ParserUtils.urlEncode(constraint.toString()));
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> fromAddresses = null;
List<Autocomplete> viaAddresses = null;
List<Autocomplete> toAddresses = null;
List<Location> fromAddresses = null;
List<Location> viaAddresses = null;
List<Location> 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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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"))

View file

@ -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<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
throw new UnsupportedOperationException();
}

View file

@ -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<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
throw new UnsupportedOperationException();
}

View file

@ -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.*?<strong>(.*?)</strong>.*", Pattern.DOTALL);
public List<Autocomplete> autocompleteStations(final CharSequence constraint) throws IOException
public List<Location> autocompleteStations(final CharSequence constraint) throws IOException
{
final List<Autocomplete> results = new ArrayList<Autocomplete>();
final List<Location> results = new ArrayList<Location>();
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<Autocomplete> addresses = new ArrayList<Autocomplete>();
final List<Location> addresses = new ArrayList<Location>();
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())

View file

@ -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<Autocomplete> autocompleteStations(CharSequence constraint) throws IOException
public List<Location> autocompleteStations(CharSequence constraint) throws IOException
{
throw new UnsupportedOperationException();
}

View file

@ -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;
/**

View file

@ -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;
/**

View file

@ -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
}
}

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.dto;
/**
* @author Andreas Schildbach
*/
public enum LocationType
{
ANY, STATION, WGS84, ADDRESS, POI
}

View file

@ -37,9 +37,9 @@ public final class QueryConnectionsResult implements Serializable
public final Status status;
public final List<Autocomplete> ambiguousFrom;
public final List<Autocomplete> ambiguousVia;
public final List<Autocomplete> ambiguousTo;
public final List<Location> ambiguousFrom;
public final List<Location> ambiguousVia;
public final List<Location> 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<Autocomplete> ambiguousFrom, final List<Autocomplete> ambiguousVia, final List<Autocomplete> ambiguousTo)
public QueryConnectionsResult(final List<Location> ambiguousFrom, final List<Location> ambiguousVia, final List<Location> ambiguousTo)
{
this.status = Status.AMBIGUOUS;
this.ambiguousFrom = ambiguousFrom;

View file

@ -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;

View file

@ -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<Autocomplete> autocompletes = provider.autocompleteStations("Kur");
final List<Location> autocompletes = provider.autocompleteStations("Kur");
list(autocompletes);
}
@ -47,7 +47,7 @@ public class GvhProviderLiveTest
@Test
public void autocompleteIdentified() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Hannover, Hannoversche Straße");
final List<Location> autocompletes = provider.autocompleteStations("Hannover, Hannoversche Straße");
list(autocompletes);
}
@ -55,15 +55,15 @@ public class GvhProviderLiveTest
@Test
public void autocompleteCity() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Hannover");
final List<Location> autocompletes = provider.autocompleteStations("Hannover");
list(autocompletes);
}
private void list(final List<Autocomplete> autocompletes)
private void list(final List<Location> 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<Autocomplete> results = provider.autocompleteStations("Hannover");
final List<Location> results = provider.autocompleteStations("Hannover");
System.out.println(results.size() + " " + results);
}

View file

@ -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<Autocomplete> autocompletes = provider.autocompleteStations("Linz, H");
final List<Location> autocompletes = provider.autocompleteStations("Linz, H");
list(autocompletes);
}
@ -48,7 +48,7 @@ public class LinzProviderLiveTest
@Test
public void autocompleteIdentified() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Leonding, Haag");
final List<Location> autocompletes = provider.autocompleteStations("Leonding, Haag");
list(autocompletes);
}
@ -56,15 +56,15 @@ public class LinzProviderLiveTest
@Test
public void autocompleteCity() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Linz");
final List<Location> autocompletes = provider.autocompleteStations("Linz");
list(autocompletes);
}
private void list(final List<Autocomplete> autocompletes)
private void list(final List<Location> autocompletes)
{
System.out.print(autocompletes.size() + " ");
for (final Autocomplete autocomplete : autocompletes)
for (final Location autocomplete : autocompletes)
System.out.print(autocomplete.toDebugString() + " ");
System.out.println();
}

View file

@ -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;
/**

View file

@ -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;

View file

@ -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<Autocomplete> result = provider.autocompleteStations("haupt");
final List<Location> result = provider.autocompleteStations("haupt");
System.out.println(result);
}
}

View file

@ -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<Autocomplete> autocompletes = provider.autocompleteStations("Kur");
final List<Location> autocompletes = provider.autocompleteStations("Kur");
list(autocompletes);
}
@ -43,7 +43,7 @@ public class VrnProviderLiveTest
@Test
public void autocompleteIdentified() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Bremen, KUR");
final List<Location> autocompletes = provider.autocompleteStations("Bremen, KUR");
list(autocompletes);
}
@ -51,7 +51,7 @@ public class VrnProviderLiveTest
@Test
public void autocompleteLocality() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Bremen");
final List<Location> autocompletes = provider.autocompleteStations("Bremen");
list(autocompletes);
}
@ -59,15 +59,15 @@ public class VrnProviderLiveTest
@Test
public void autocompleteCity() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Mannheim");
final List<Location> autocompletes = provider.autocompleteStations("Mannheim");
list(autocompletes);
}
private void list(final List<Autocomplete> autocompletes)
private void list(final List<Location> autocompletes)
{
System.out.print(autocompletes.size() + " ");
for (final Autocomplete autocomplete : autocompletes)
for (final Location autocomplete : autocompletes)
System.out.print(autocomplete.toDebugString() + " ");
System.out.println();
}

View file

@ -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<Autocomplete> autocompletes = provider.autocompleteStations("Kur");
final List<Location> autocompletes = provider.autocompleteStations("Kur");
list(autocompletes);
}
@ -43,7 +43,7 @@ public class VrrProviderLiveTest
@Test
public void autocompleteIdentified() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Düsseldorf, Am Frohnhof");
final List<Location> autocompletes = provider.autocompleteStations("Düsseldorf, Am Frohnhof");
list(autocompletes);
}
@ -51,15 +51,15 @@ public class VrrProviderLiveTest
@Test
public void autocompleteCity() throws Exception
{
final List<Autocomplete> autocompletes = provider.autocompleteStations("Düsseldorf");
final List<Location> autocompletes = provider.autocompleteStations("Düsseldorf");
list(autocompletes);
}
private void list(final List<Autocomplete> autocompletes)
private void list(final List<Location> autocompletes)
{
System.out.print(autocompletes.size() + " ");
for (final Autocomplete autocomplete : autocompletes)
for (final Location autocomplete : autocompletes)
System.out.print(autocomplete.toDebugString() + " ");
System.out.println();
}