mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-07 17:28:49 +00:00
remove superfluous departureQueryUri() method from interface
git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@304 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
parent
1e49dd0e46
commit
4d4355ac4f
36 changed files with 126 additions and 128 deletions
|
@ -634,8 +634,12 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
|||
throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "'");
|
||||
}
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
protected abstract String departuresQueryUri(String stationId, int maxDepartures);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final String uri = departuresQueryUri(stationId, maxDepartures);
|
||||
|
||||
InputStream is = null;
|
||||
try
|
||||
{
|
||||
|
@ -691,11 +695,11 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
|||
XmlPullUtil.skipRestOfTree(pp);
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, locationId, location, departures);
|
||||
return new QueryDeparturesResult(locationId, location, departures);
|
||||
}
|
||||
else if ("notidentified".equals(nameState))
|
||||
{
|
||||
return new QueryDeparturesResult(uri, QueryDeparturesResult.Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -708,11 +712,11 @@ public abstract class AbstractEfaProvider implements NetworkProvider
|
|||
}
|
||||
catch (final FileNotFoundException x)
|
||||
{
|
||||
return new QueryDeparturesResult(uri, QueryDeparturesResult.Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(QueryDeparturesResult.Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
}
|
||||
catch (final SocketTimeoutException x)
|
||||
{
|
||||
return new QueryDeparturesResult(uri, QueryDeparturesResult.Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(QueryDeparturesResult.Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
@ -65,7 +65,8 @@ public class AvvProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, ParserUtils.urlEncode(stationId));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -432,7 +432,7 @@ public final class BahnProvider implements NetworkProvider
|
|||
}
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("bhftafel.exe/dn");
|
||||
|
@ -459,9 +459,9 @@ public final class BahnProvider implements NetworkProvider
|
|||
);
|
||||
private static final Pattern P_DEPARTURES_MESSAGES = Pattern.compile("<Err code=\"([^\"]*)\" text=\"([^\"]*)\"");
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
final Matcher mMessage = P_DEPARTURES_MESSAGES.matcher(page);
|
||||
if (mMessage.find())
|
||||
|
@ -470,9 +470,9 @@ public final class BahnProvider implements NetworkProvider
|
|||
final String text = mMessage.group(2);
|
||||
|
||||
if (code.equals("H730")) // Your input is not valid
|
||||
return new QueryDeparturesResult(uri, QueryDeparturesResult.Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(QueryDeparturesResult.Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
if (code.equals("H890")) // No trains in result
|
||||
return new QueryDeparturesResult(uri, QueryDeparturesResult.Status.NO_INFO);
|
||||
return new QueryDeparturesResult(QueryDeparturesResult.Status.NO_INFO, Integer.parseInt(stationId));
|
||||
throw new IllegalArgumentException("unknown error " + code + ", " + text);
|
||||
}
|
||||
|
||||
|
@ -512,11 +512,11 @@ public final class BahnProvider implements NetworkProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, 0, null, departures);
|
||||
return new QueryDeparturesResult(Integer.parseInt(stationId), null, departures);
|
||||
}
|
||||
|
||||
private static final Pattern P_NORMALIZE_LINE_NUMBER = Pattern.compile("\\d{2,5}");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class BvbProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, ParserUtils.urlEncode(stationId));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class GvhProvider extends AbstractEfaProvider
|
|||
return null;
|
||||
}
|
||||
|
||||
public String departuresQueryUri(String stationId, int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(String stationId, int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class IvbProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, ParserUtils.urlEncode(stationId));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -70,7 +70,8 @@ public class LinzProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -124,7 +124,8 @@ public class MvvProvider extends AbstractEfaProvider
|
|||
return new NearbyStationsResult(uri, stations.subList(0, maxStations));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -75,7 +75,7 @@ public class NasaProvider extends AbstractHafasProvider
|
|||
return String.format(NEARBY_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
|
||||
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
|
||||
|
@ -124,10 +124,10 @@ public class NasaProvider extends AbstractHafasProvider
|
|||
+ "(?:<td class=\"center sepline top\">\n(" + ParserUtils.P_PLATFORM + ").*?)?" // position
|
||||
, Pattern.DOTALL);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
// scrape page
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
// parse page
|
||||
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
|
||||
|
@ -135,11 +135,11 @@ public class NasaProvider extends AbstractHafasProvider
|
|||
{
|
||||
// messages
|
||||
if (mHeadCoarse.group(3) != null)
|
||||
return new QueryDeparturesResult(uri, Status.NO_INFO);
|
||||
return new QueryDeparturesResult(Status.NO_INFO, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(4) != null)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(5) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
|
||||
if (mHeadFine.matches())
|
||||
|
@ -202,20 +202,20 @@ public class NasaProvider extends AbstractHafasProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(2) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(2) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, 0, location, departures);
|
||||
return new QueryDeparturesResult(Integer.parseInt(stationId), location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -120,25 +120,16 @@ public interface NetworkProvider
|
|||
GetConnectionDetailsResult getConnectionDetails(String connectionUri) throws IOException;
|
||||
|
||||
/**
|
||||
* Construct an Uri for getting departures
|
||||
* Get departures at a given station, probably live
|
||||
*
|
||||
* @param stationId
|
||||
* id of the station
|
||||
* @param maxDepartures
|
||||
* maximum number of departures to get or {@code 0}
|
||||
* @return uri for getting departures
|
||||
*/
|
||||
String departuresQueryUri(String stationId, int maxDepartures);
|
||||
|
||||
/**
|
||||
* Get departures at a given station, probably live
|
||||
*
|
||||
* @param queryUri
|
||||
* uri constructed by {@link NetworkProvider#departuresQueryUri}
|
||||
* @return result object containing the departures
|
||||
* @throws IOException
|
||||
*/
|
||||
QueryDeparturesResult queryDepartures(String queryUri) throws IOException;
|
||||
QueryDeparturesResult queryDepartures(String stationId, int maxDepartures) throws IOException;
|
||||
|
||||
/**
|
||||
* Get colors of line
|
||||
|
|
|
@ -491,7 +491,7 @@ public class OebbProvider extends AbstractHafasProvider
|
|||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
|
||||
final Date now = new Date();
|
||||
|
@ -518,16 +518,16 @@ public class OebbProvider extends AbstractHafasProvider
|
|||
|
||||
private static final Pattern P_DEPARTURES_ERROR = Pattern.compile("(Verbindung zum Server konnte leider nicht hergestellt werden)");
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
// scrape page
|
||||
final String page = ParserUtils.scrape(uri).toString().substring(14);
|
||||
final String page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures)).toString().substring(14);
|
||||
|
||||
final Matcher mError = P_DEPARTURES_ERROR.matcher(page);
|
||||
if (mError.find())
|
||||
{
|
||||
if (mError.group(1) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
}
|
||||
|
||||
try
|
||||
|
@ -537,7 +537,7 @@ public class OebbProvider extends AbstractHafasProvider
|
|||
final int locationId = head.optInt("stationEvaId", -1);
|
||||
// final boolean rt = head.optBoolean("rtInfo");
|
||||
if (locationId == -1)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
|
||||
final List<Departure> departures = new ArrayList<Departure>(8);
|
||||
|
||||
|
@ -565,11 +565,11 @@ public class OebbProvider extends AbstractHafasProvider
|
|||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, locationId, location, departures);
|
||||
return new QueryDeparturesResult(locationId, location, departures);
|
||||
}
|
||||
catch (final JSONException x)
|
||||
{
|
||||
throw new RuntimeException("cannot parse: '" + page + "' on " + uri, x);
|
||||
throw new RuntimeException("cannot parse: '" + page + "' on " + stationId, x);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -427,7 +427,7 @@ public class RmvProvider extends AbstractHafasProvider
|
|||
return time;
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
|
||||
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
|
||||
|
@ -473,9 +473,9 @@ public class RmvProvider extends AbstractHafasProvider
|
|||
+ "(?:<img src=\".+?\" alt=\"\" />\n<b>[^<]*</b>\n<br />\n)*" // (messages)
|
||||
, Pattern.DOTALL);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
// parse page
|
||||
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
|
||||
|
@ -483,11 +483,11 @@ public class RmvProvider extends AbstractHafasProvider
|
|||
{
|
||||
// messages
|
||||
if (mHeadCoarse.group(4) != null)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(5) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
final int stationId = Integer.parseInt(mHeadCoarse.group(3));
|
||||
final int locationId = Integer.parseInt(mHeadCoarse.group(3));
|
||||
|
||||
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
|
||||
if (mHeadFine.matches())
|
||||
|
@ -541,20 +541,20 @@ public class RmvProvider extends AbstractHafasProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, stationId, location, departures);
|
||||
return new QueryDeparturesResult(locationId, location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -367,7 +367,7 @@ public class SbbProvider extends AbstractHafasProvider
|
|||
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("bhftafel.exe/dox");
|
||||
|
@ -407,9 +407,9 @@ public class SbbProvider extends AbstractHafasProvider
|
|||
+ ".*?" //
|
||||
, Pattern.DOTALL);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
// parse page
|
||||
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
|
||||
|
@ -417,11 +417,11 @@ public class SbbProvider extends AbstractHafasProvider
|
|||
{
|
||||
// messages
|
||||
if (mHeadCoarse.group(3) != null)
|
||||
return new QueryDeparturesResult(uri, Status.NO_INFO);
|
||||
return new QueryDeparturesResult( Status.NO_INFO, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(5) != null)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult( Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(6) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult( Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
final String head = mHeadCoarse.group(1) + mHeadCoarse.group(4);
|
||||
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(head);
|
||||
|
@ -469,20 +469,20 @@ public class SbbProvider extends AbstractHafasProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, locationId, location, departures);
|
||||
return new QueryDeparturesResult(locationId, location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + head + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + head + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ public class SncbProvider extends AbstractHafasProvider
|
|||
return String.format(NEARBY_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append("http://hari.b-rail.be/hari3/webserver1/bin/stboard.exe/dox");
|
||||
|
@ -99,9 +99,9 @@ public class SncbProvider extends AbstractHafasProvider
|
|||
+ "(?:<span class=\"delay\">([+-]?\\d+|Ausfall)</span>\r\n)?" // delay
|
||||
, Pattern.DOTALL);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
// parse page
|
||||
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
|
||||
|
@ -109,9 +109,9 @@ public class SncbProvider extends AbstractHafasProvider
|
|||
{
|
||||
// messages
|
||||
if (mHeadCoarse.group(3) != null)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(4) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
|
||||
if (mHeadFine.matches())
|
||||
|
@ -150,20 +150,20 @@ public class SncbProvider extends AbstractHafasProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, 0, location, departures);
|
||||
return new QueryDeparturesResult(Integer.parseInt(stationId), location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,8 @@ public class SvvProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, ParserUtils.urlEncode(stationId));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -72,7 +72,8 @@ public class TflProvider extends AbstractEfaProvider
|
|||
return null;
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -277,8 +277,8 @@ public final class VbbProvider implements NetworkProvider
|
|||
if (departureTime.after(arrivalTime))
|
||||
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
|
||||
final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4)));
|
||||
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime, line,
|
||||
line != null ? LINES.get(line.charAt(0)) : null, 0, from.name, 0, to.name, null);
|
||||
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
|
||||
line, line != null ? LINES.get(line.charAt(0)) : null, 0, from.name, 0, to.name, null);
|
||||
connections.add(connection);
|
||||
}
|
||||
else
|
||||
|
@ -424,8 +424,8 @@ public final class VbbProvider implements NetworkProvider
|
|||
}
|
||||
|
||||
if (firstDepartureTime != null && lastArrivalTime != null)
|
||||
return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime,
|
||||
lastArrivalTime, null, null, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts));
|
||||
return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri,
|
||||
firstDepartureTime, lastArrivalTime, null, null, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts));
|
||||
else
|
||||
return new GetConnectionDetailsResult(currentDate, null);
|
||||
}
|
||||
|
@ -438,7 +438,7 @@ public final class VbbProvider implements NetworkProvider
|
|||
private static final String DEPARTURE_URL_LIVE = "http://mobil.bvg.de/IstAbfahrtzeiten/index/mobil?";
|
||||
private static final String DEPARTURE_URL_PLAN = "http://mobil.bvg.de/Fahrinfo/bin/stboard.bin/dox/dox?boardType=dep&start=yes&";
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final boolean live = stationId.length() == 6;
|
||||
|
||||
|
@ -469,19 +469,13 @@ public final class VbbProvider implements NetworkProvider
|
|||
+ "\\s*(.*?)\\s*</a>.*?" // destination
|
||||
, Pattern.DOTALL);
|
||||
private static final Pattern P_DEPARTURES_SERVICE_DOWN = Pattern.compile("Wartungsarbeiten");
|
||||
private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)");
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
|
||||
final Matcher mStationId = P_DEPARTURES_URI_STATION_ID.matcher(uri);
|
||||
if (!mStationId.find())
|
||||
throw new IllegalStateException(uri);
|
||||
final int stationId = Integer.parseInt(mStationId.group(1));
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
if (P_DEPARTURES_SERVICE_DOWN.matcher(page).find())
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
// parse page
|
||||
final Matcher mHead = P_DEPARTURES_HEAD.matcher(page);
|
||||
|
@ -495,7 +489,7 @@ public final class VbbProvider implements NetworkProvider
|
|||
final Matcher mDepCoarse = P_DEPARTURES_COARSE.matcher(page);
|
||||
while (mDepCoarse.find())
|
||||
{
|
||||
final boolean live = uri.contains("IstAbfahrtzeiten");
|
||||
final boolean live = stationId.length() == 6;
|
||||
final Matcher mDepFine = (live ? P_DEPARTURES_LIVE_FINE : P_DEPARTURES_PLAN_FINE).matcher(mDepCoarse.group(1));
|
||||
if (mDepFine.matches())
|
||||
{
|
||||
|
@ -533,15 +527,15 @@ public final class VbbProvider implements NetworkProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, stationId, location, departures);
|
||||
return new QueryDeparturesResult(Integer.parseInt(stationId), location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new QueryDeparturesResult(uri, Status.NO_INFO);
|
||||
return new QueryDeparturesResult(Status.NO_INFO, Integer.parseInt(stationId));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ public class VgsProvider extends AbstractHafasProvider
|
|||
return String.format(NEARBY_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
private String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
|
||||
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
|
||||
|
@ -124,10 +124,10 @@ public class VgsProvider extends AbstractHafasProvider
|
|||
+ "(?:<td class=\"center sepline top\">\n(" + ParserUtils.P_PLATFORM + ").*?)?" // position
|
||||
, Pattern.DOTALL);
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String uri) throws IOException
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
|
||||
{
|
||||
// scrape page
|
||||
final CharSequence page = ParserUtils.scrape(uri);
|
||||
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
|
||||
|
||||
// parse page
|
||||
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
|
||||
|
@ -135,11 +135,11 @@ public class VgsProvider extends AbstractHafasProvider
|
|||
{
|
||||
// messages
|
||||
if (mHeadCoarse.group(3) != null)
|
||||
return new QueryDeparturesResult(uri, Status.NO_INFO);
|
||||
return new QueryDeparturesResult(Status.NO_INFO, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(4) != null)
|
||||
return new QueryDeparturesResult(uri, Status.INVALID_STATION);
|
||||
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
|
||||
else if (mHeadCoarse.group(5) != null)
|
||||
return new QueryDeparturesResult(uri, Status.SERVICE_DOWN);
|
||||
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
|
||||
|
||||
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
|
||||
if (mHeadFine.matches())
|
||||
|
@ -202,20 +202,20 @@ public class VgsProvider extends AbstractHafasProvider
|
|||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(2) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mDepCoarse.group(2) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
return new QueryDeparturesResult(uri, 0, location, departures);
|
||||
return new QueryDeparturesResult(Integer.parseInt(stationId), location, departures);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + mHeadCoarse.group(1) + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + uri);
|
||||
throw new IllegalArgumentException("cannot parse '" + page + "' on " + stationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,8 @@ public class VrnProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class VrrProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -65,7 +65,8 @@ public class VvoProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, ParserUtils.urlEncode(stationId));
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -66,7 +66,8 @@ public class VvsProvider extends AbstractEfaProvider
|
|||
return String.format(NEARBY_STATION_URI, stationId);
|
||||
}
|
||||
|
||||
public String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
@Override
|
||||
protected String departuresQueryUri(final String stationId, final int maxDepartures)
|
||||
{
|
||||
final StringBuilder uri = new StringBuilder();
|
||||
uri.append(API_BASE).append("XSLT_DM_REQUEST");
|
||||
|
|
|
@ -29,26 +29,23 @@ public final class QueryDeparturesResult
|
|||
OK, NO_INFO, INVALID_STATION, SERVICE_DOWN
|
||||
}
|
||||
|
||||
public final String uri;
|
||||
public final Status status;
|
||||
public final int locationId;
|
||||
public final String location;
|
||||
public final List<Departure> departures;
|
||||
|
||||
public QueryDeparturesResult(final String uri, final int locationId, final String location, final List<Departure> departures)
|
||||
public QueryDeparturesResult(final int locationId, final String location, final List<Departure> departures)
|
||||
{
|
||||
this.uri = uri;
|
||||
this.status = Status.OK;
|
||||
this.locationId = locationId;
|
||||
this.location = location;
|
||||
this.departures = departures;
|
||||
}
|
||||
|
||||
public QueryDeparturesResult(final String uri, final Status status)
|
||||
public QueryDeparturesResult(final Status status, final int locationId)
|
||||
{
|
||||
this.uri = uri;
|
||||
this.status = status;
|
||||
this.locationId = 0;
|
||||
this.locationId = locationId;
|
||||
this.location = null;
|
||||
this.departures = null;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class AvvProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("100", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("100", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class BahnProviderLiveTest
|
|||
@Test
|
||||
public void departures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult queryDepartures = provider.queryDepartures(provider.departuresQueryUri("692991", 0));
|
||||
final QueryDeparturesResult queryDepartures = provider.queryDepartures("692991", 0);
|
||||
System.out.println(queryDepartures.departures);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public class BvbProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("10000", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("10000", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public class LinzProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("60501720", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("60501720", 0);
|
||||
System.out.println(result);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ public class NasaProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("13000", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("13000", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ public class SbbProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("8500010", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("8500010", 0);
|
||||
|
||||
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class SvvProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("60650002", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("60650002", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class TflProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("1000086", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("1000086", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class VgsProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("8000244", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("8000244", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public class VrnProviderLiveTest
|
|||
@Test
|
||||
public void departures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("6032236", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("6032236", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class VrrProviderLiveTest
|
|||
@Test
|
||||
public void departures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("1007258", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("1007258", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class VvoProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("100", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("100", 0);
|
||||
|
||||
System.out.println(result.status + " " + result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class VvsProviderLiveTest
|
|||
@Test
|
||||
public void queryDepartures() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures(provider.departuresQueryUri("6118", 0));
|
||||
final QueryDeparturesResult result = provider.queryDepartures("6118", 0);
|
||||
|
||||
System.out.println(result.departures.size() + " " + result.departures);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue