Skip to content

Commit ac8382b

Browse files
author
Johan Torin
committed
Map from values in the RouteRequest to a Raptor PassThroughPoints instance.
1 parent fc92a9d commit ac8382b

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/RaptorRequestMapper.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
package org.opentripplanner.routing.algorithm.raptoradapter.transit.mappers;
22

3+
import static java.util.function.Predicate.not;
4+
import static java.util.stream.Collectors.collectingAndThen;
5+
import static java.util.stream.Collectors.toList;
36
import static org.opentripplanner.raptor.api.request.Optimization.PARALLEL;
47

58
import io.micrometer.core.instrument.MeterRegistry;
69
import java.time.Duration;
710
import java.time.Instant;
811
import java.time.ZonedDateTime;
912
import java.util.Collection;
13+
import java.util.List;
14+
import java.util.Optional;
1015
import org.opentripplanner.framework.application.OTPFeature;
1116
import org.opentripplanner.raptor.api.model.RaptorAccessEgress;
1217
import org.opentripplanner.raptor.api.model.RaptorConstants;
1318
import org.opentripplanner.raptor.api.request.Optimization;
19+
import org.opentripplanner.raptor.api.request.PassThroughPoint;
20+
import org.opentripplanner.raptor.api.request.PassThroughPoints;
1421
import org.opentripplanner.raptor.api.request.RaptorRequest;
1522
import org.opentripplanner.raptor.api.request.RaptorRequestBuilder;
1623
import org.opentripplanner.raptor.rangeraptor.SystemErrDebugLogger;
1724
import org.opentripplanner.routing.algorithm.raptoradapter.router.performance.PerformanceTimersForRaptor;
1825
import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule;
1926
import org.opentripplanner.routing.api.request.RouteRequest;
27+
import org.opentripplanner.transit.model.site.StopLocation;
2028

2129
public class RaptorRequestMapper {
2230

@@ -105,12 +113,29 @@ private RaptorRequest<TripSchedule> doMap() {
105113
if (preferences.transfer().maxAdditionalTransfers() != null) {
106114
searchParams.numberOfAdditionalTransfers(preferences.transfer().maxAdditionalTransfers());
107115
}
116+
117+
final Optional<PassThroughPoints> passThroughPoints = request
118+
.getPassThroughPoints()
119+
.stream()
120+
.map(p -> {
121+
final int[] stops = p
122+
.getStopLocations()
123+
.stream()
124+
.mapToInt(StopLocation::getIndex)
125+
.toArray();
126+
return new PassThroughPoint(stops, p.getName());
127+
})
128+
.collect(collectingAndThen(toList(), Optional::ofNullable))
129+
.filter(not(List::isEmpty))
130+
.map(PassThroughPoints::new);
131+
108132
builder.withMultiCriteria(mcBuilder -> {
109133
preferences
110134
.transit()
111135
.raptor()
112136
.relaxGeneralizedCostAtDestination()
113137
.ifPresent(mcBuilder::withRelaxCostAtDestination);
138+
passThroughPoints.ifPresent(pt -> mcBuilder.withPassThroughPoints(pt));
114139
});
115140

116141
for (Optimization optimization : preferences.transit().raptor().optimizations()) {

0 commit comments

Comments
 (0)