'autocomplete one line' capability for all efa-based providers

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@565 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-04-15 15:35:13 +00:00
parent 65dec1fceb
commit eeee8303a2
44 changed files with 210 additions and 53 deletions

View file

@ -100,14 +100,18 @@ public abstract class AbstractEfaProvider implements NetworkProvider
return uri + "&" + additionalQueryParameter;
}
protected List<Location> xmlStopfinderRequest(final CharSequence constraint) throws IOException
protected List<Location> xmlStopfinderRequest(final Location constraint) throws IOException
{
final StringBuilder uri = new StringBuilder(apiBase);
uri.append("XML_STOPFINDER_REQUEST?coordOutputFormat=WGS84&locationServerActive=1&name_sf=");
uri.append(ParserUtils.urlEncode(constraint.toString(), "ISO-8859-1"));
uri.append("&type_sf=any&SpEncId=0");
uri.append("&anyObjFilter_sf=126"); // 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
uri.append("&reducedAnyPostcodeObjFilter_sf=64&reducedAnyTooManyObjFilter_sf=2&useHouseNumberList=true&regionID_sf=1");
uri.append("XML_STOPFINDER_REQUEST?coordOutputFormat=WGS84&locationServerActive=1");
appendLocation(uri, constraint, "sf");
if (constraint.type == LocationType.ANY)
{
uri.append("&SpEncId=0");
uri.append("&anyObjFilter_sf=126"); // 1=place 2=stop 4=street 8=address 16=crossing 32=poi 64=postcode
uri.append("&reducedAnyPostcodeObjFilter_sf=64&reducedAnyTooManyObjFilter_sf=2");
uri.append("&useHouseNumberList=true&regionID_sf=1");
}
if (additionalQueryParameter != null)
uri.append('&').append(additionalQueryParameter);
@ -146,13 +150,26 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.require(pp, "itdOdvPlace");
XmlPullUtil.next(pp);
XmlPullUtil.require(pp, "itdOdvName");
final String nameState = pp.getAttributeValue(null, "state");
XmlPullUtil.enter(pp, "itdOdvName");
if (XmlPullUtil.test(pp, "itdMessage"))
XmlPullUtil.next(pp);
while (XmlPullUtil.test(pp, "odvNameElem"))
results.add(processOdvNameElem(pp, null));
if ("identified".equals(nameState) || "list".equals(nameState))
{
while (XmlPullUtil.test(pp, "odvNameElem"))
results.add(processOdvNameElem(pp, null));
}
else if ("notidentified".equals(nameState))
{
// do nothing
}
else
{
throw new RuntimeException("unknown nameState '" + nameState + "' on " + uri);
}
XmlPullUtil.exit(pp, "itdOdvName");