Hafas: Extract methods nearbyStationsByCoordinate() and nearbyStationsById().

This commit is contained in:
Andreas Schildbach 2015-01-28 11:16:37 +01:00
parent 7ff06cc2d4
commit 891c0b64fd
7 changed files with 29 additions and 41 deletions

View file

@ -2296,24 +2296,29 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
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 nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
else if (location.type == LocationType.STATION && location.hasId())
return nearbyStationsById(location.id);
else
throw new IllegalArgumentException("cannot handle: " + location);
}
protected final NearbyStationsResult nearbyStationsByCoordinate(final int lat, final int lon, final int maxDistance, final int maxStations)
throws IOException
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); final StringBuilder uri = new StringBuilder(queryEndpoint);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations); appendJsonNearbyStationsParameters(uri, lat, lon, maxDistance, maxStations);
return jsonNearbyStations(uri.toString()); return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId())
protected final NearbyStationsResult nearbyStationsById(final String id) throws IOException
{ {
final StringBuilder uri = new StringBuilder(stationBoardEndpoint); final StringBuilder uri = new StringBuilder(stationBoardEndpoint);
appendXmlNearbyStationsParameters(uri, location.id); appendXmlNearbyStationsParameters(uri, id);
return xmlNearbyStations(uri.toString()); return xmlNearbyStations(uri.toString());
} }
else
{
throw new IllegalArgumentException("cannot handle: " + location);
}
}
protected final void appendXmlNearbyStationsParameters(final StringBuilder uri, final String stationId) protected final void appendXmlNearbyStationsParameters(final StringBuilder uri, final String stationId)
{ {
@ -2390,7 +2395,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
return new NearbyStationsResult(null, stations); return new NearbyStationsResult(null, stations);
} }
protected void appendJsonNearbyStationsParameters(final StringBuilder uri, final Location location, final int maxDistance, final int maxStations) protected void appendJsonNearbyStationsParameters(final StringBuilder uri, final int lat, final int lon, final int maxDistance,
final int maxStations)
{ {
uri.append('y'); uri.append('y');
uri.append("?performLocating=2&tpl=stop2json"); uri.append("?performLocating=2&tpl=stop2json");
@ -2398,8 +2404,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
uri.append("&look_maxdist=").append(maxDistance != 0 ? maxDistance : 5000); uri.append("&look_maxdist=").append(maxDistance != 0 ? maxDistance : 5000);
uri.append("&look_stopclass=").append(allProductsInt()); uri.append("&look_stopclass=").append(allProductsInt());
uri.append("&look_nv=get_stopweight|yes"); uri.append("&look_nv=get_stopweight|yes");
uri.append("&look_x=").append(location.lon); uri.append("&look_x=").append(lon);
uri.append("&look_y=").append(location.lat); uri.append("&look_y=").append(lat);
} }
protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException

View file

@ -101,10 +101,7 @@ public class JetProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {

View file

@ -139,10 +139,7 @@ public class NasaProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {

View file

@ -162,10 +162,7 @@ public class NvvProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {

View file

@ -134,10 +134,7 @@ public class OebbProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {

View file

@ -130,10 +130,7 @@ public class SncbProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {

View file

@ -126,10 +126,7 @@ public class VgsProvider extends AbstractHafasProvider
{ {
if (location.hasLocation()) if (location.hasLocation())
{ {
final StringBuilder uri = new StringBuilder(queryEndpoint); return nearbyStationsByCoordinate(location.lat, location.lon, maxDistance, maxStations);
appendJsonNearbyStationsParameters(uri, location, maxDistance, maxStations);
return jsonNearbyStations(uri.toString());
} }
else if (location.type == LocationType.STATION && location.hasId()) else if (location.type == LocationType.STATION && location.hasId())
{ {