All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.street.model.edge.TemporaryFreeEdge Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.street.model.edge;

import org.opentripplanner.street.model.vertex.TemporaryVertex;
import org.opentripplanner.street.model.vertex.Vertex;
import org.opentripplanner.street.search.state.State;
import org.opentripplanner.street.search.state.StateEditor;

public class TemporaryFreeEdge extends FreeEdge implements TemporaryEdge {

  private TemporaryFreeEdge(TemporaryVertex from, Vertex to) {
    super((Vertex) from, to);
  }

  private TemporaryFreeEdge(Vertex from, TemporaryVertex to) {
    super(from, (Vertex) to);
  }

  public static TemporaryFreeEdge createTemporaryFreeEdge(TemporaryVertex from, Vertex to) {
    return connectToGraph(new TemporaryFreeEdge(from, to));
  }

  public static TemporaryFreeEdge createTemporaryFreeEdge(Vertex from, TemporaryVertex to) {
    return connectToGraph(new TemporaryFreeEdge(from, to));
  }

  @Override
  public State[] traverse(State s0) {
    StateEditor s1 = s0.edit(this);
    s1.incrementWeight(1);
    s1.setBackMode(null);

    if (s0.isRentingVehicleFromStation() && s0.mayKeepRentedVehicleAtDestination()) {
      var rentalPreferences = s0.getPreferences().rental(s0.getRequest().mode());
      if (rentalPreferences.allowArrivingInRentedVehicleAtDestination()) {
        s1.incrementWeight(
          rentalPreferences.arrivingInRentalVehicleAtDestinationCost().toSeconds()
        );
      }
    }

    return s1.makeStateArray();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy