Hafas: If binary connections query returns only one single individual leg, don't query for more.

This commit is contained in:
Andreas Schildbach 2014-12-15 17:00:09 +01:00
parent 9976995137
commit b596ba6f3a
2 changed files with 34 additions and 4 deletions

View file

@ -128,23 +128,25 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
public final int seqNr;
public final String ld;
public final int usedBufferSize;
private final boolean canQueryMore;
public QueryTripsBinaryContext(final String ident, final int seqNr, final String ld, final int usedBufferSize)
public QueryTripsBinaryContext(final String ident, final int seqNr, final String ld, final int usedBufferSize, final boolean canQueryMore)
{
this.ident = ident;
this.seqNr = seqNr;
this.ld = ld;
this.usedBufferSize = usedBufferSize;
this.canQueryMore = canQueryMore;
}
public boolean canQueryLater()
{
return true;
return canQueryMore;
}
public boolean canQueryEarlier()
{
return true;
return canQueryMore;
}
}
@ -2008,8 +2010,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
trips.add(trip);
}
// if result is only one single individual leg, don't query for more
final boolean canQueryMore = trips.size() != 1 || trips.get(0).legs.size() != 1
|| !(trips.get(0).legs.get(0) instanceof Trip.Individual);
final QueryTripsResult result = new QueryTripsResult(header, uri, from, via, to, new QueryTripsBinaryContext(requestId, seqNr, ld,
bis.getCount()), trips);
bis.getCount(), canQueryMore), trips);
return result;
}

View file

@ -143,6 +143,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
"Kernbeisserweg 4"), null, new Location(LocationType.ADDRESS, null, 52433989, 13474353, "12357 Berlin-Buckow", "Distelfinkweg 35"),
new Date(), true, Product.ALL, WalkSpeed.NORMAL, Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}
@ -154,6 +158,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
LocationType.STATION, "9044202", "Berlin", "Bundesplatz"), new Location(LocationType.STATION, "9013103", "Berlin", "Prinzenstraße"),
new Date(), true, Product.ALL, WalkSpeed.NORMAL, Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}
@ -164,6 +172,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
final QueryTripsResult result = queryTrips(new Location(LocationType.ADDRESS, null, 52501507, 13357026, null, null), null, new Location(
LocationType.ADDRESS, null, 52513639, 13568648, null, null), new Date(), true, Product.ALL, WalkSpeed.NORMAL, Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}
@ -176,6 +188,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
new Location(LocationType.ADDRESS, null, 52513639, 13568648, null, null), new Date(), true, Product.ALL, WalkSpeed.NORMAL,
Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}
@ -187,6 +203,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
"Weimarische Str. 7"), null, new Location(LocationType.ADDRESS, null, 52541536, 13421290, "10437 Berlin-Prenzlauer Berg",
"Göhrener Str. 5"), new Date(), true, Product.ALL, WalkSpeed.NORMAL, Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}
@ -199,6 +219,10 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest
new Location(LocationType.ADDRESS, null, 52526029, 13399878, "10178 Berlin-Mitte", "Sophienstr. 24"), new Date(), true, Product.ALL,
WalkSpeed.NORMAL, Accessibility.NEUTRAL);
print(result);
if (!result.context.canQueryLater())
return;
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
print(laterResult);
}