mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-16 17:39:49 +00:00
Work around VRR cannot deal with useProxFootSearch=1 on large departure monitor requests.
This commit is contained in:
parent
b7dce8eb97
commit
36e52ae4ee
3 changed files with 34 additions and 6 deletions
|
@ -90,6 +90,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
private boolean canAcceptPoiId = false;
|
||||
private boolean needsSpEncId = false;
|
||||
private boolean includeRegionId = true;
|
||||
private boolean xsltDepartureMonitorUseProxFootSearch = true;
|
||||
private Charset requestUrlEncoding = ISO_8859_1;
|
||||
private String httpReferer = null;
|
||||
private String httpRefererTrip = null;
|
||||
|
@ -195,6 +196,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
this.includeRegionId = includeRegionId;
|
||||
}
|
||||
|
||||
protected void setXsltDepartureMonitorUseProxFootSearch(final boolean xsltDepartureMonitorUseProxFootSearch)
|
||||
{
|
||||
this.xsltDepartureMonitorUseProxFootSearch = xsltDepartureMonitorUseProxFootSearch;
|
||||
}
|
||||
|
||||
protected void setUseRouteIndexAsTripId(final boolean useRouteIndexAsTripId)
|
||||
{
|
||||
this.useRouteIndexAsTripId = useRouteIndexAsTripId;
|
||||
|
@ -1404,7 +1410,18 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
|
||||
}
|
||||
|
||||
protected StringBuilder queryDeparturesParameters(final String stationId, final int maxDepartures, final boolean equivs)
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures, final boolean equivs) throws IOException
|
||||
{
|
||||
final StringBuilder parameters = xsltDepartureMonitorRequestParameters(stationId, maxDepartures, equivs);
|
||||
|
||||
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||
if (!httpPost)
|
||||
uri.append(parameters);
|
||||
|
||||
return xsltDepartureMonitorRequest(stationId, maxDepartures, equivs);
|
||||
}
|
||||
|
||||
protected StringBuilder xsltDepartureMonitorRequestParameters(final String stationId, final int maxDepartures, final boolean equivs)
|
||||
{
|
||||
final StringBuilder parameters = new StringBuilder();
|
||||
appendCommonRequestParams(parameters, "XML");
|
||||
|
@ -1415,7 +1432,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
parameters.append("&mode=direct");
|
||||
parameters.append("&ptOptionsActive=1");
|
||||
parameters.append("&deleteAssignedStops_dm=").append(equivs ? '0' : '1');
|
||||
parameters.append("&useProxFootSearch=").append(equivs ? '1' : '0');
|
||||
if (xsltDepartureMonitorUseProxFootSearch)
|
||||
parameters.append("&useProxFootSearch=").append(equivs ? '1' : '0');
|
||||
parameters.append("&mergeDep=1"); // merge departures
|
||||
if (maxDepartures > 0)
|
||||
parameters.append("&limit=").append(maxDepartures);
|
||||
|
@ -1423,9 +1441,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
return parameters;
|
||||
}
|
||||
|
||||
public QueryDeparturesResult queryDepartures(final String stationId, final int maxDepartures, final boolean equivs) throws IOException
|
||||
private QueryDeparturesResult xsltDepartureMonitorRequest(final String stationId, final int maxDepartures, final boolean equivs)
|
||||
throws IOException
|
||||
{
|
||||
final StringBuilder parameters = queryDeparturesParameters(stationId, maxDepartures, equivs);
|
||||
final StringBuilder parameters = xsltDepartureMonitorRequestParameters(stationId, maxDepartures, equivs);
|
||||
|
||||
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||
if (!httpPost)
|
||||
|
@ -1639,7 +1658,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
|||
|
||||
protected QueryDeparturesResult queryDeparturesMobile(final String stationId, final int maxDepartures, final boolean equivs) throws IOException
|
||||
{
|
||||
final StringBuilder parameters = queryDeparturesParameters(stationId, maxDepartures, equivs);
|
||||
final StringBuilder parameters = xsltDepartureMonitorRequestParameters(stationId, maxDepartures, equivs);
|
||||
|
||||
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||
if (!httpPost)
|
||||
|
|
|
@ -34,9 +34,10 @@ public class VrrProvider extends AbstractEfaProvider
|
|||
{
|
||||
super(API_BASE);
|
||||
|
||||
setUseRouteIndexAsTripId(false);
|
||||
setIncludeRegionId(false);
|
||||
setXsltDepartureMonitorUseProxFootSearch(false);
|
||||
setNeedsSpEncId(true);
|
||||
setUseRouteIndexAsTripId(false);
|
||||
setStyles(STYLES);
|
||||
}
|
||||
|
||||
|
|
|
@ -83,6 +83,14 @@ public class VrrProviderLiveTest extends AbstractProviderLiveTest
|
|||
provider.queryDepartures("22001374", 0, false); // Suedwache
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryManyDeparturesWithEquivs() throws Exception
|
||||
{
|
||||
final QueryDeparturesResult result = provider.queryDepartures("20018235", 200, true);
|
||||
|
||||
print(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void suggestLocationsIncomplete() throws Exception
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue