prepare for multiple stations per queryDepartures call

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@487 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-02-09 16:02:41 +00:00
parent 39fe5d52df
commit 5fe5f9f4e1
47 changed files with 260 additions and 113 deletions

View file

@ -31,6 +31,7 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.QueryDeparturesResult.Status;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.util.ParserUtils;
/**
@ -108,7 +109,11 @@ public class NsProvider extends AbstractHafasProvider
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures) throws IOException
{
final CharSequence page = ParserUtils.scrape(departuresQueryUri(stationId, maxDepartures));
final QueryDeparturesResult result = new QueryDeparturesResult();
// scrape page
final String uri = departuresQueryUri(stationId, maxDepartures);
final CharSequence page = ParserUtils.scrape(uri);
// parse page
final Matcher mHeadCoarse = P_DEPARTURES_HEAD_COARSE.matcher(page);
@ -116,9 +121,9 @@ public class NsProvider extends AbstractHafasProvider
{
// messages
if (mHeadCoarse.group(3) != null)
return new QueryDeparturesResult(Status.INVALID_STATION, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.INVALID_STATION);
else if (mHeadCoarse.group(4) != null)
return new QueryDeparturesResult(Status.SERVICE_DOWN, Integer.parseInt(stationId));
return new QueryDeparturesResult(Status.SERVICE_DOWN);
final Matcher mHeadFine = P_DEPARTURES_HEAD_FINE.matcher(mHeadCoarse.group(1));
if (mHeadFine.matches())
@ -161,7 +166,9 @@ public class NsProvider extends AbstractHafasProvider
}
}
return new QueryDeparturesResult(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location), departures, null);
result.stationDepartures.add(new StationDepartures(new Location(LocationType.STATION, Integer.parseInt(stationId), null, location),
departures, null));
return result;
}
else
{