mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-19 00:39:58 +00:00
queryNearbyStations() has ResultHeader as well
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@787 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
2b6090bdea
commit
5cbbd7f175
5 changed files with 26 additions and 23 deletions
|
@ -188,7 +188,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<Location> xmlCoordRequest(final int lat, final int lon, final int maxDistance, final int maxStations) throws IOException
|
protected NearbyStationsResult xmlCoordRequest(final int lat, final int lon, final int maxDistance, final int maxStations) throws IOException
|
||||||
{
|
{
|
||||||
final StringBuilder uri = new StringBuilder(apiBase);
|
final StringBuilder uri = new StringBuilder(apiBase);
|
||||||
uri.append("XML_COORD_REQUEST");
|
uri.append("XML_COORD_REQUEST");
|
||||||
|
@ -206,7 +206,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
enterItdRequest(pp);
|
final ResultHeader header = enterItdRequest(pp);
|
||||||
|
|
||||||
XmlPullUtil.enter(pp, "itdCoordInfoRequest");
|
XmlPullUtil.enter(pp, "itdCoordInfoRequest");
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
XmlPullUtil.enter(pp, "coordInfoRequest");
|
XmlPullUtil.enter(pp, "coordInfoRequest");
|
||||||
XmlPullUtil.exit(pp, "coordInfoRequest");
|
XmlPullUtil.exit(pp, "coordInfoRequest");
|
||||||
|
|
||||||
final List<Location> results = new ArrayList<Location>();
|
final List<Location> stations = new ArrayList<Location>();
|
||||||
|
|
||||||
if (XmlPullUtil.test(pp, "coordInfoItemList"))
|
if (XmlPullUtil.test(pp, "coordInfoItemList"))
|
||||||
{
|
{
|
||||||
|
@ -237,13 +237,13 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "coordInfoItem");
|
XmlPullUtil.exit(pp, "coordInfoItem");
|
||||||
|
|
||||||
results.add(new Location(LocationType.STATION, id, coord.lat, coord.lon, place, name));
|
stations.add(new Location(LocationType.STATION, id, coord.lat, coord.lon, place, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
XmlPullUtil.exit(pp, "coordInfoItemList");
|
XmlPullUtil.exit(pp, "coordInfoItemList");
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return new NearbyStationsResult(header, stations);
|
||||||
}
|
}
|
||||||
catch (final XmlPullParserException x)
|
catch (final XmlPullParserException x)
|
||||||
{
|
{
|
||||||
|
@ -438,7 +438,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException
|
public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException
|
||||||
{
|
{
|
||||||
if (location.hasLocation())
|
if (location.hasLocation())
|
||||||
return new NearbyStationsResult(xmlCoordRequest(location.lat, location.lon, maxDistance, maxStations));
|
return xmlCoordRequest(location.lat, location.lon, maxDistance, maxStations);
|
||||||
|
|
||||||
if (location.type != LocationType.STATION)
|
if (location.type != LocationType.STATION)
|
||||||
throw new IllegalArgumentException("cannot handle: " + location.type);
|
throw new IllegalArgumentException("cannot handle: " + location.type);
|
||||||
|
@ -455,7 +455,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
|
|
||||||
final XmlPullParser pp = parserFactory.newPullParser();
|
final XmlPullParser pp = parserFactory.newPullParser();
|
||||||
pp.setInput(is, null);
|
pp.setInput(is, null);
|
||||||
enterItdRequest(pp);
|
final ResultHeader header = enterItdRequest(pp);
|
||||||
|
|
||||||
if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage")))
|
if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage")))
|
||||||
throw new IllegalStateException("cannot find <itdOdv usage=\"dm\" />");
|
throw new IllegalStateException("cannot find <itdOdv usage=\"dm\" />");
|
||||||
|
@ -518,9 +518,9 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
stations.add(ownStation);
|
stations.add(ownStation);
|
||||||
|
|
||||||
if (maxStations == 0 || maxStations >= stations.size())
|
if (maxStations == 0 || maxStations >= stations.size())
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(header, stations);
|
||||||
else
|
else
|
||||||
return new NearbyStationsResult(stations.subList(0, maxStations));
|
return new NearbyStationsResult(header, stations.subList(0, maxStations));
|
||||||
}
|
}
|
||||||
else if ("list".equals(nameState))
|
else if ("list".equals(nameState))
|
||||||
{
|
{
|
||||||
|
@ -535,11 +535,11 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
||||||
stations.add(newLocation);
|
stations.add(newLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(header, stations);
|
||||||
}
|
}
|
||||||
else if ("notidentified".equals(nameState))
|
else if ("notidentified".equals(nameState))
|
||||||
{
|
{
|
||||||
return new NearbyStationsResult(NearbyStationsResult.Status.INVALID_STATION);
|
return new NearbyStationsResult(header, NearbyStationsResult.Status.INVALID_STATION);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1177,9 +1177,9 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
final String text = mMessage.group(2);
|
final String text = mMessage.group(2);
|
||||||
|
|
||||||
if (code.equals("H730")) // Your input is not valid
|
if (code.equals("H730")) // Your input is not valid
|
||||||
return new NearbyStationsResult(NearbyStationsResult.Status.INVALID_STATION);
|
return new NearbyStationsResult(null, NearbyStationsResult.Status.INVALID_STATION);
|
||||||
if (code.equals("H890")) // No trains in result
|
if (code.equals("H890")) // No trains in result
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
throw new IllegalArgumentException("unknown error " + code + ", " + text);
|
throw new IllegalArgumentException("unknown error " + code + ", " + text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1215,7 +1215,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException
|
protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException
|
||||||
|
@ -1251,7 +1251,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
throw new RuntimeException("cannot parse: '" + page + "' on " + uri, x);
|
throw new RuntimeException("cannot parse: '" + page + "' on " + uri, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static Pattern P_NEARBY_COARSE = Pattern.compile("<tr class=\"(zebra[^\"]*)\">(.*?)</tr>", Pattern.DOTALL);
|
private final static Pattern P_NEARBY_COARSE = Pattern.compile("<tr class=\"(zebra[^\"]*)\">(.*?)</tr>", Pattern.DOTALL);
|
||||||
|
@ -1302,7 +1302,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Pattern P_LINE_SBAHN = Pattern.compile("SN?\\d*");
|
private static final Pattern P_LINE_SBAHN = Pattern.compile("SN?\\d*");
|
||||||
|
|
|
@ -118,9 +118,9 @@ public final class BahnProvider extends AbstractHafasProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxStations == 0 || maxStations >= stations.size())
|
if (maxStations == 0 || maxStations >= stations.size())
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
else
|
else
|
||||||
return new NearbyStationsResult(stations.subList(0, maxStations));
|
return new NearbyStationsResult(null, stations.subList(0, maxStations));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -133,7 +133,7 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
if (mError.find())
|
if (mError.find())
|
||||||
{
|
{
|
||||||
if (mError.group(1) != null)
|
if (mError.group(1) != null)
|
||||||
return new NearbyStationsResult(NearbyStationsResult.Status.INVALID_STATION);
|
return new NearbyStationsResult(null, NearbyStationsResult.Status.INVALID_STATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<Location> stations = new ArrayList<Location>();
|
final List<Location> stations = new ArrayList<Location>();
|
||||||
|
@ -172,9 +172,9 @@ public final class BvgProvider extends AbstractHafasProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxStations == 0 || maxStations >= stations.size())
|
if (maxStations == 0 || maxStations >= stations.size())
|
||||||
return new NearbyStationsResult(stations);
|
return new NearbyStationsResult(null, stations);
|
||||||
else
|
else
|
||||||
return new NearbyStationsResult(stations.subList(0, maxStations));
|
return new NearbyStationsResult(null, stations.subList(0, maxStations));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,17 +29,20 @@ public final class NearbyStationsResult
|
||||||
OK, INVALID_STATION, SERVICE_DOWN
|
OK, INVALID_STATION, SERVICE_DOWN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final ResultHeader header;
|
||||||
public final Status status;
|
public final Status status;
|
||||||
public final List<Location> stations;
|
public final List<Location> stations;
|
||||||
|
|
||||||
public NearbyStationsResult(final List<Location> stations)
|
public NearbyStationsResult(final ResultHeader header, final List<Location> stations)
|
||||||
{
|
{
|
||||||
|
this.header = header;
|
||||||
this.status = Status.OK;
|
this.status = Status.OK;
|
||||||
this.stations = stations;
|
this.stations = stations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NearbyStationsResult(final Status status)
|
public NearbyStationsResult(final ResultHeader header, final Status status)
|
||||||
{
|
{
|
||||||
|
this.header = header;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.stations = null;
|
this.stations = null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue