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

org.opentripplanner.model.plan.UnknownTransitPathLeg Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.model.plan;

import static org.opentripplanner.model.plan.Itinerary.UNKNOWN;

import java.time.ZonedDateTime;
import java.util.List;
import java.util.Set;
import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.model.fare.FareProductUse;
import org.opentripplanner.raptor.spi.RaptorCostCalculator;
import org.opentripplanner.routing.alertpatch.TransitAlert;
import org.opentripplanner.utils.time.DurationUtils;
import org.opentripplanner.utils.tostring.ToStringBuilder;

/**
 * A transit search may return an unknown transit path. A path consisting of a mix of
 * access, transit , transfers and egress - but where the specific legs are unknown.
 * This leg represent such path.
 */
public class UnknownTransitPathLeg implements Leg {

  private final Place from;
  private final Place to;
  private final ZonedDateTime startTime;
  private final ZonedDateTime endTime;

  private final int nTransfers;

  public UnknownTransitPathLeg(
    Place from,
    Place to,
    ZonedDateTime startTime,
    ZonedDateTime endTime,
    int nTransfers
  ) {
    this.from = from;
    this.to = to;
    this.startTime = startTime;
    this.endTime = endTime;
    this.nTransfers = nTransfers;
  }

  @Override
  public Place getFrom() {
    return from;
  }

  @Override
  public Place getTo() {
    return to;
  }

  @Override
  public ZonedDateTime getStartTime() {
    return startTime;
  }

  @Override
  public ZonedDateTime getEndTime() {
    return endTime;
  }

  @Override
  public boolean isTransitLeg() {
    return false;
  }

  @Override
  public boolean hasSameMode(Leg other) {
    return false;
  }

  @Override
  public LegCallTime start() {
    return LegCallTime.ofStatic(startTime);
  }

  @Override
  public LegCallTime end() {
    return LegCallTime.ofStatic(endTime);
  }

  @Override
  public double getDistanceMeters() {
    return UNKNOWN;
  }

  @Override
  @Nullable
  public LineString getLegGeometry() {
    return null;
  }

  @Override
  public Set getTransitAlerts() {
    return Set.of();
  }

  @Override
  public int getGeneralizedCost() {
    return RaptorCostCalculator.ZERO_COST;
  }

  @Override
  public List fareProducts() {
    return List.of();
  }

  public int getNumberOfTransfers() {
    return nTransfers;
  }

  public String description() {
    return ("Unknown transit " + nTransfers + "tx " + DurationUtils.durationToStr(getDuration()));
  }

  @Override
  public String toString() {
    return ToStringBuilder.of(UnknownTransitPathLeg.class)
      .addObj("from", from)
      .addObj("to", to)
      .addTime("startTime", startTime)
      .addTime("endTime", endTime)
      .addNum("numOfTransfers", nTransfers)
      .toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy