mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-18 00:09:55 +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 canAcceptPoiId = false;
|
||||||
private boolean needsSpEncId = false;
|
private boolean needsSpEncId = false;
|
||||||
private boolean includeRegionId = true;
|
private boolean includeRegionId = true;
|
||||||
|
private boolean xsltDepartureMonitorUseProxFootSearch = true;
|
||||||
private Charset requestUrlEncoding = ISO_8859_1;
|
private Charset requestUrlEncoding = ISO_8859_1;
|
||||||
private String httpReferer = null;
|
private String httpReferer = null;
|
||||||
private String httpRefererTrip = null;
|
private String httpRefererTrip = null;
|
||||||
|
@ -195,6 +196,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
this.includeRegionId = includeRegionId;
|
this.includeRegionId = includeRegionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setXsltDepartureMonitorUseProxFootSearch(final boolean xsltDepartureMonitorUseProxFootSearch)
|
||||||
|
{
|
||||||
|
this.xsltDepartureMonitorUseProxFootSearch = xsltDepartureMonitorUseProxFootSearch;
|
||||||
|
}
|
||||||
|
|
||||||
protected void setUseRouteIndexAsTripId(final boolean useRouteIndexAsTripId)
|
protected void setUseRouteIndexAsTripId(final boolean useRouteIndexAsTripId)
|
||||||
{
|
{
|
||||||
this.useRouteIndexAsTripId = useRouteIndexAsTripId;
|
this.useRouteIndexAsTripId = useRouteIndexAsTripId;
|
||||||
|
@ -1404,7 +1410,18 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
|
+ "' 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();
|
final StringBuilder parameters = new StringBuilder();
|
||||||
appendCommonRequestParams(parameters, "XML");
|
appendCommonRequestParams(parameters, "XML");
|
||||||
|
@ -1415,6 +1432,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
parameters.append("&mode=direct");
|
parameters.append("&mode=direct");
|
||||||
parameters.append("&ptOptionsActive=1");
|
parameters.append("&ptOptionsActive=1");
|
||||||
parameters.append("&deleteAssignedStops_dm=").append(equivs ? '0' : '1');
|
parameters.append("&deleteAssignedStops_dm=").append(equivs ? '0' : '1');
|
||||||
|
if (xsltDepartureMonitorUseProxFootSearch)
|
||||||
parameters.append("&useProxFootSearch=").append(equivs ? '1' : '0');
|
parameters.append("&useProxFootSearch=").append(equivs ? '1' : '0');
|
||||||
parameters.append("&mergeDep=1"); // merge departures
|
parameters.append("&mergeDep=1"); // merge departures
|
||||||
if (maxDepartures > 0)
|
if (maxDepartures > 0)
|
||||||
|
@ -1423,9 +1441,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
|
||||||
return parameters;
|
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);
|
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||||
if (!httpPost)
|
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
|
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);
|
final StringBuilder uri = new StringBuilder(departureMonitorEndpoint);
|
||||||
if (!httpPost)
|
if (!httpPost)
|
||||||
|
|
|
@ -34,9 +34,10 @@ public class VrrProvider extends AbstractEfaProvider
|
||||||
{
|
{
|
||||||
super(API_BASE);
|
super(API_BASE);
|
||||||
|
|
||||||
setUseRouteIndexAsTripId(false);
|
|
||||||
setIncludeRegionId(false);
|
setIncludeRegionId(false);
|
||||||
|
setXsltDepartureMonitorUseProxFootSearch(false);
|
||||||
setNeedsSpEncId(true);
|
setNeedsSpEncId(true);
|
||||||
|
setUseRouteIndexAsTripId(false);
|
||||||
setStyles(STYLES);
|
setStyles(STYLES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,14 @@ public class VrrProviderLiveTest extends AbstractProviderLiveTest
|
||||||
provider.queryDepartures("22001374", 0, false); // Suedwache
|
provider.queryDepartures("22001374", 0, false); // Suedwache
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void queryManyDeparturesWithEquivs() throws Exception
|
||||||
|
{
|
||||||
|
final QueryDeparturesResult result = provider.queryDepartures("20018235", 200, true);
|
||||||
|
|
||||||
|
print(result);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void suggestLocationsIncomplete() throws Exception
|
public void suggestLocationsIncomplete() throws Exception
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue