mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-07 05:38:47 +00:00
AbstractHafasClientInterfaceProvider: Implement our own equivs filter in jsonStationBoard() as we cannot rely on the deprecated stbFltrEquiv parameter any more.
This commit is contained in:
parent
9ae8081f96
commit
7e34908faf
4 changed files with 124 additions and 27 deletions
|
@ -290,20 +290,29 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
|
|||
}
|
||||
|
||||
protected final QueryDeparturesResult jsonStationBoard(final String stationId, final @Nullable Date time,
|
||||
final int maxDepartures, final boolean equivs) throws IOException {
|
||||
int maxDepartures, final boolean equivs) throws IOException {
|
||||
final boolean canStbFltrEquiv = apiVersion.compareToIgnoreCase("1.18") <= 0;
|
||||
if (maxDepartures == 0)
|
||||
maxDepartures = DEFAULT_MAX_DEPARTURES;
|
||||
if (!equivs && !canStbFltrEquiv) {
|
||||
final int raisedMaxDepartures = maxDepartures * 4;
|
||||
log.info("stbFltrEquiv workaround in effect: querying for {} departures rather than {}",
|
||||
raisedMaxDepartures, maxDepartures);
|
||||
maxDepartures = raisedMaxDepartures;
|
||||
}
|
||||
|
||||
final Calendar c = new GregorianCalendar(timeZone);
|
||||
c.setTime(time);
|
||||
final CharSequence jsonDate = jsonDate(c);
|
||||
final CharSequence jsonTime = jsonTime(c);
|
||||
final CharSequence normalizedStationId = normalizeStationId(stationId);
|
||||
final CharSequence stbFltrEquiv = Boolean.toString(!equivs);
|
||||
final CharSequence maxJny = Integer.toString(maxDepartures != 0 ? maxDepartures : DEFAULT_MAX_DEPARTURES);
|
||||
final CharSequence maxJny = Integer.toString(maxDepartures);
|
||||
final String request = wrapJsonApiRequest("StationBoard", "{\"type\":\"DEP\"," //
|
||||
+ "\"date\":\"" + jsonDate + "\"," //
|
||||
+ "\"time\":\"" + jsonTime + "\"," //
|
||||
+ "\"stbLoc\":{\"type\":\"S\"," + "\"state\":\"F\"," // F/M
|
||||
+ "\"extId\":" + JSONObject.quote(normalizedStationId.toString()) + "}," //
|
||||
+ (apiVersion.compareToIgnoreCase("1.19") < 0 ? "\"stbFltrEquiv\":" + stbFltrEquiv + "," : "") //
|
||||
+ (canStbFltrEquiv ? "\"stbFltrEquiv\":" + Boolean.toString(!equivs) + "," : "") //
|
||||
+ "\"maxJny\":" + maxJny + "}", false);
|
||||
|
||||
final HttpUrl url = requestUrl(request);
|
||||
|
@ -373,8 +382,10 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
|
|||
final int dProdX = stbStop.optInt("dProdX", -1);
|
||||
final Line line = dProdX != -1 ? lines.get(dProdX) : null;
|
||||
|
||||
final Location location = equivs ? parseLoc(locList, stbStop.getInt("locX"), null, crdSysList)
|
||||
: new Location(LocationType.STATION, stationId);
|
||||
final Location location = parseLoc(locList, stbStop.getInt("locX"), null, crdSysList);
|
||||
checkState(location.type == LocationType.STATION);
|
||||
if (!equivs && !location.id.equals(stationId))
|
||||
continue;
|
||||
|
||||
final String jnyDirTxt = jny.getString("dirTxt");
|
||||
Location destination = null;
|
||||
|
|
|
@ -20,6 +20,7 @@ package de.schildbach.pte.live;
|
|||
import static org.hamcrest.CoreMatchers.hasItem;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
@ -62,14 +63,45 @@ public class BvgProviderLiveTest extends AbstractProviderLiveTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void queryDepartures() throws Exception {
|
||||
final QueryDeparturesResult result1 = queryDepartures("900016254", false);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result1.status);
|
||||
print(result1);
|
||||
public void queryDeparturesWilmsstrasse() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900016254", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
final QueryDeparturesResult result2 = queryDepartures("900100003", false);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result2.status);
|
||||
print(result2);
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzBhf() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100003", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU2() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100703", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU5() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100704", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU8() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100705", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesEquivs() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100003", true);
|
||||
print(result);
|
||||
assertTrue(result.stationDepartures.size() > 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -58,6 +58,41 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest {
|
|||
print(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzBhf() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100003", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU2() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100703", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU5() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100704", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesAlexanderplatzU8() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100705", false);
|
||||
print(result);
|
||||
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesEquivs() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("900100003", true);
|
||||
print(result);
|
||||
assertTrue(result.stationDepartures.size() > 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesInvalidStation() throws Exception {
|
||||
final QueryDeparturesResult resultLive = queryDepartures("111111", false);
|
||||
|
|
|
@ -57,15 +57,28 @@ public class VbnProviderLiveTest extends AbstractProviderLiveTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void queryDepartures() throws Exception {
|
||||
final QueryDeparturesResult result1 = queryDepartures("8000110", false);
|
||||
print(result1);
|
||||
public void queryDeparturesFreudenstadt() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("8000110", false);
|
||||
print(result);
|
||||
}
|
||||
|
||||
final QueryDeparturesResult result2 = queryDepartures("8000128", false);
|
||||
print(result2);
|
||||
@Test
|
||||
public void queryDeparturesGoettingen() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("8000128", false);
|
||||
print(result);
|
||||
}
|
||||
|
||||
final QueryDeparturesResult result3 = queryDepartures("8010304", false);
|
||||
print(result3);
|
||||
@Test
|
||||
public void queryDeparturesRostockHbf() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("8010304", false);
|
||||
print(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryDeparturesEquivs() throws Exception {
|
||||
final QueryDeparturesResult result = queryDepartures("8010304", true);
|
||||
print(result);
|
||||
assertTrue(result.stationDepartures.size() > 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -75,15 +88,21 @@ public class VbnProviderLiveTest extends AbstractProviderLiveTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void suggestLocations() throws Exception {
|
||||
final SuggestLocationsResult result1 = suggestLocations("Bremen");
|
||||
print(result1);
|
||||
public void suggestLocationsBremen() throws Exception {
|
||||
final SuggestLocationsResult result = suggestLocations("Bremen");
|
||||
print(result);
|
||||
}
|
||||
|
||||
final SuggestLocationsResult result2 = suggestLocations("Hannover");
|
||||
print(result2);
|
||||
@Test
|
||||
public void suggestLocationsHannover() throws Exception {
|
||||
final SuggestLocationsResult result = suggestLocations("Hannover");
|
||||
print(result);
|
||||
}
|
||||
|
||||
final SuggestLocationsResult result3 = suggestLocations("Rostock");
|
||||
print(result3);
|
||||
@Test
|
||||
public void suggestLocationsRostock() throws Exception {
|
||||
final SuggestLocationsResult result = suggestLocations("Rostock");
|
||||
print(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue