Routing service:
remove routes with lower quality. Select route if only one route found
This commit is contained in:
parent
466ad88c13
commit
0fcdb336cc
1 changed files with 21 additions and 4 deletions
|
|
@ -99,8 +99,9 @@ public class RoutingService {
|
||||||
*/
|
*/
|
||||||
connectDestinationChainDirectly(container, destinationChains);
|
connectDestinationChainDirectly(container, destinationChains);
|
||||||
|
|
||||||
/* remove duplicates. */
|
/* remove duplicates & lower qualities. */
|
||||||
removeDuplicateRoutes(container.getRoutes());
|
removeDuplicateRoutes(container.getRoutes(), true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* finally find and mark the fastest and the cheapest route.
|
* finally find and mark the fastest and the cheapest route.
|
||||||
*/
|
*/
|
||||||
|
|
@ -122,6 +123,10 @@ public class RoutingService {
|
||||||
routeInformation.add(routeInformationObj);
|
routeInformation.add(routeInformationObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(routeInformation.size() == 1) {
|
||||||
|
routeInformation.getFirst().getRoute().setSelected(true);
|
||||||
|
}
|
||||||
|
|
||||||
return routeInformation;
|
return routeInformation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -484,16 +489,24 @@ public class RoutingService {
|
||||||
/*
|
/*
|
||||||
* There might be duplicate routes now, because the same route can be created by "nearby-routing" and container rates
|
* There might be duplicate routes now, because the same route can be created by "nearby-routing" and container rates
|
||||||
*/
|
*/
|
||||||
removeDuplicateRoutes(routes);
|
removeDuplicateRoutes(routes, false);
|
||||||
|
|
||||||
container.overrideRoutes(routes);
|
container.overrideRoutes(routes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeDuplicateRoutes(Collection<TemporaryRouteObject> routes) {
|
private void removeDuplicateRoutes(Collection<TemporaryRouteObject> routes, boolean removeLowQuality) {
|
||||||
|
|
||||||
var toRemove = new ArrayList<TemporaryRouteObject>();
|
var toRemove = new ArrayList<TemporaryRouteObject>();
|
||||||
|
|
||||||
|
var bestQuality = routes.stream().map(TemporaryRouteObject::getQuality).reduce((q1, q2) -> q1.ordinal() < q2.ordinal() ? q1 : q2);
|
||||||
|
|
||||||
for (var route : routes) {
|
for (var route : routes) {
|
||||||
|
|
||||||
|
if(removeLowQuality && route.getQuality().ordinal() > bestQuality.get().ordinal()) {
|
||||||
|
toRemove.add(route);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var sections = route.getSections();
|
var sections = route.getSections();
|
||||||
boolean hasNearByRouting = sections.getLast().getType().equals(TemporaryRateObject.TemporaryRateObjectType.NEAR_BY);
|
boolean hasNearByRouting = sections.getLast().getType().equals(TemporaryRateObject.TemporaryRateObjectType.NEAR_BY);
|
||||||
|
|
||||||
|
|
@ -924,6 +937,10 @@ public class RoutingService {
|
||||||
this.quality = quality;
|
this.quality = quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ChainQuality getQuality() {
|
||||||
|
return quality;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue