mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-08 14:28: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,
|
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);
|
final Calendar c = new GregorianCalendar(timeZone);
|
||||||
c.setTime(time);
|
c.setTime(time);
|
||||||
final CharSequence jsonDate = jsonDate(c);
|
final CharSequence jsonDate = jsonDate(c);
|
||||||
final CharSequence jsonTime = jsonTime(c);
|
final CharSequence jsonTime = jsonTime(c);
|
||||||
final CharSequence normalizedStationId = normalizeStationId(stationId);
|
final CharSequence normalizedStationId = normalizeStationId(stationId);
|
||||||
final CharSequence stbFltrEquiv = Boolean.toString(!equivs);
|
final CharSequence maxJny = Integer.toString(maxDepartures);
|
||||||
final CharSequence maxJny = Integer.toString(maxDepartures != 0 ? maxDepartures : DEFAULT_MAX_DEPARTURES);
|
|
||||||
final String request = wrapJsonApiRequest("StationBoard", "{\"type\":\"DEP\"," //
|
final String request = wrapJsonApiRequest("StationBoard", "{\"type\":\"DEP\"," //
|
||||||
+ "\"date\":\"" + jsonDate + "\"," //
|
+ "\"date\":\"" + jsonDate + "\"," //
|
||||||
+ "\"time\":\"" + jsonTime + "\"," //
|
+ "\"time\":\"" + jsonTime + "\"," //
|
||||||
+ "\"stbLoc\":{\"type\":\"S\"," + "\"state\":\"F\"," // F/M
|
+ "\"stbLoc\":{\"type\":\"S\"," + "\"state\":\"F\"," // F/M
|
||||||
+ "\"extId\":" + JSONObject.quote(normalizedStationId.toString()) + "}," //
|
+ "\"extId\":" + JSONObject.quote(normalizedStationId.toString()) + "}," //
|
||||||
+ (apiVersion.compareToIgnoreCase("1.19") < 0 ? "\"stbFltrEquiv\":" + stbFltrEquiv + "," : "") //
|
+ (canStbFltrEquiv ? "\"stbFltrEquiv\":" + Boolean.toString(!equivs) + "," : "") //
|
||||||
+ "\"maxJny\":" + maxJny + "}", false);
|
+ "\"maxJny\":" + maxJny + "}", false);
|
||||||
|
|
||||||
final HttpUrl url = requestUrl(request);
|
final HttpUrl url = requestUrl(request);
|
||||||
|
@ -373,8 +382,10 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
|
||||||
final int dProdX = stbStop.optInt("dProdX", -1);
|
final int dProdX = stbStop.optInt("dProdX", -1);
|
||||||
final Line line = dProdX != -1 ? lines.get(dProdX) : null;
|
final Line line = dProdX != -1 ? lines.get(dProdX) : null;
|
||||||
|
|
||||||
final Location location = equivs ? parseLoc(locList, stbStop.getInt("locX"), null, crdSysList)
|
final Location location = parseLoc(locList, stbStop.getInt("locX"), null, crdSysList);
|
||||||
: new Location(LocationType.STATION, stationId);
|
checkState(location.type == LocationType.STATION);
|
||||||
|
if (!equivs && !location.id.equals(stationId))
|
||||||
|
continue;
|
||||||
|
|
||||||
final String jnyDirTxt = jny.getString("dirTxt");
|
final String jnyDirTxt = jny.getString("dirTxt");
|
||||||
Location destination = null;
|
Location destination = null;
|
||||||
|
|
|
@ -20,6 +20,7 @@ package de.schildbach.pte.live;
|
||||||
import static org.hamcrest.CoreMatchers.hasItem;
|
import static org.hamcrest.CoreMatchers.hasItem;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ -62,14 +63,45 @@ public class BvgProviderLiveTest extends AbstractProviderLiveTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryDepartures() throws Exception {
|
public void queryDeparturesWilmsstrasse() throws Exception {
|
||||||
final QueryDeparturesResult result1 = queryDepartures("900016254", false);
|
final QueryDeparturesResult result = queryDepartures("900016254", false);
|
||||||
assertEquals(QueryDeparturesResult.Status.OK, result1.status);
|
print(result);
|
||||||
print(result1);
|
assertEquals(QueryDeparturesResult.Status.OK, result.status);
|
||||||
|
}
|
||||||
|
|
||||||
final QueryDeparturesResult result2 = queryDepartures("900100003", false);
|
@Test
|
||||||
assertEquals(QueryDeparturesResult.Status.OK, result2.status);
|
public void queryDeparturesAlexanderplatzBhf() throws Exception {
|
||||||
print(result2);
|
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
|
@Test
|
||||||
|
|
|
@ -58,6 +58,41 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest {
|
||||||
print(result);
|
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
|
@Test
|
||||||
public void queryDeparturesInvalidStation() throws Exception {
|
public void queryDeparturesInvalidStation() throws Exception {
|
||||||
final QueryDeparturesResult resultLive = queryDepartures("111111", false);
|
final QueryDeparturesResult resultLive = queryDepartures("111111", false);
|
||||||
|
|
|
@ -57,15 +57,28 @@ public class VbnProviderLiveTest extends AbstractProviderLiveTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryDepartures() throws Exception {
|
public void queryDeparturesFreudenstadt() throws Exception {
|
||||||
final QueryDeparturesResult result1 = queryDepartures("8000110", false);
|
final QueryDeparturesResult result = queryDepartures("8000110", false);
|
||||||
print(result1);
|
print(result);
|
||||||
|
}
|
||||||
|
|
||||||
final QueryDeparturesResult result2 = queryDepartures("8000128", false);
|
@Test
|
||||||
print(result2);
|
public void queryDeparturesGoettingen() throws Exception {
|
||||||
|
final QueryDeparturesResult result = queryDepartures("8000128", false);
|
||||||
|
print(result);
|
||||||
|
}
|
||||||
|
|
||||||
final QueryDeparturesResult result3 = queryDepartures("8010304", false);
|
@Test
|
||||||
print(result3);
|
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
|
@Test
|
||||||
|
@ -75,15 +88,21 @@ public class VbnProviderLiveTest extends AbstractProviderLiveTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void suggestLocations() throws Exception {
|
public void suggestLocationsBremen() throws Exception {
|
||||||
final SuggestLocationsResult result1 = suggestLocations("Bremen");
|
final SuggestLocationsResult result = suggestLocations("Bremen");
|
||||||
print(result1);
|
print(result);
|
||||||
|
}
|
||||||
|
|
||||||
final SuggestLocationsResult result2 = suggestLocations("Hannover");
|
@Test
|
||||||
print(result2);
|
public void suggestLocationsHannover() throws Exception {
|
||||||
|
final SuggestLocationsResult result = suggestLocations("Hannover");
|
||||||
|
print(result);
|
||||||
|
}
|
||||||
|
|
||||||
final SuggestLocationsResult result3 = suggestLocations("Rostock");
|
@Test
|
||||||
print(result3);
|
public void suggestLocationsRostock() throws Exception {
|
||||||
|
final SuggestLocationsResult result = suggestLocations("Rostock");
|
||||||
|
print(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue