Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.locationtech.jts.geom.Coordinate;
import org.opentripplanner.raptor.api.model.RaptorCostConverter;
import org.opentripplanner.raptor.api.model.RaptorTransfer;
import org.opentripplanner.routing.api.request.StreetMode;
import org.opentripplanner.routing.api.request.preference.WalkPreferences;
import org.opentripplanner.street.model.edge.Edge;
import org.opentripplanner.street.model.edge.ElevatorHopEdge;
import org.opentripplanner.street.search.request.StreetSearchRequest;
import org.opentripplanner.street.search.state.EdgeTraverser;
import org.opentripplanner.street.search.state.StateEditor;
import org.opentripplanner.transit.model.basic.Accessibility;
import org.opentripplanner.utils.logging.Throttle;
import org.opentripplanner.utils.tostring.ToStringBuilder;
import org.slf4j.Logger;
Expand Down Expand Up @@ -81,6 +84,12 @@ public boolean allowsMode(StreetMode mode) {
}

public Optional<RaptorTransfer> asRaptorTransfer(StreetSearchRequest request) {
for (Edge edge : edges) {
if (Objects.requireNonNull(edge) instanceof ElevatorHopEdge e &&
e.getElevatorAccessibility().equals(Accessibility.NOT_POSSIBLE)) {
return Optional.empty();
}
}
WalkPreferences walkPreferences = request.preferences().walk();
if (edges == null || edges.isEmpty()) {
double durationSeconds = distanceMeters / walkPreferences.speed();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.opentripplanner.street.model.edge;

import java.util.Objects;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.routing.api.request.preference.RoutingPreferences;
import org.opentripplanner.street.model.StreetTraversalPermission;
Expand All @@ -22,6 +23,8 @@ public class ElevatorHopEdge extends Edge implements ElevatorEdge, WheelchairTra
private final StreetTraversalPermission permission;

private final Accessibility wheelchairAccessibility;
private Accessibility elevatorAccessibility;


private final double levels;
private final int travelTime;
Expand Down Expand Up @@ -102,16 +105,28 @@ public int getTravelTime() {
return travelTime;
}

public Accessibility getElevatorAccessibility() {
return this.elevatorAccessibility;
}

public void setElevatorAccessibility(Accessibility elevatorAccessibility) {
this.elevatorAccessibility = elevatorAccessibility;
}

@Override
public State[] traverse(State s0) {
if (elevatorAccessibility == Accessibility.NOT_POSSIBLE) {
return State.empty();
}

RoutingPreferences preferences = s0.getPreferences();

StateEditor s1 = createEditorForDrivingOrWalking(s0, this);

if (s0.getRequest().wheelchair()) {
if (
wheelchairAccessibility != Accessibility.POSSIBLE &&
preferences.wheelchair().elevator().onlyConsiderAccessible()
preferences.wheelchair().elevator().onlyConsiderAccessible()
) {
return State.empty();
} else if (wheelchairAccessibility == Accessibility.NO_INFORMATION) {
Expand Down Expand Up @@ -147,6 +162,11 @@ public State[] traverse(State s0) {
return s1.makeStateArray();
}

@Override
public int hashCode() {
return Objects.hash(fromv, tov, elevatorAccessibility);
}

@Override
public I18NString getName() {
return null;
Expand Down