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

org.opentripplanner.updater.DefaultRealTimeUpdateContext Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.updater;

import org.opentripplanner.model.TimetableSnapshot;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.transit.service.DefaultTransitService;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitService;
import org.opentripplanner.updater.trip.gtfs.GtfsRealtimeFuzzyTripMatcher;
import org.opentripplanner.updater.trip.siri.EntityResolver;
import org.opentripplanner.updater.trip.siri.SiriFuzzyTripMatcher;

public class DefaultRealTimeUpdateContext implements RealTimeUpdateContext {

  private final Graph graph;
  private final TransitService transitService;
  private SiriFuzzyTripMatcher siriFuzzyTripMatcher;

  public DefaultRealTimeUpdateContext(
    Graph graph,
    TimetableRepository timetableRepository,
    TimetableSnapshot timetableSnapshotBuffer
  ) {
    this.graph = graph;
    this.transitService = new DefaultTransitService(timetableRepository, timetableSnapshotBuffer);
  }

  /**
   * Constructor for unit tests only.
   */
  public DefaultRealTimeUpdateContext(Graph graph, TimetableRepository timetableRepository) {
    this(graph, timetableRepository, null);
  }

  @Override
  public Graph graph() {
    return graph;
  }

  @Override
  public TransitService transitService() {
    return transitService;
  }

  @Override
  public synchronized SiriFuzzyTripMatcher siriFuzzyTripMatcher() {
    if (siriFuzzyTripMatcher == null) {
      siriFuzzyTripMatcher = new SiriFuzzyTripMatcher(transitService);
    }
    return siriFuzzyTripMatcher;
  }

  @Override
  public GtfsRealtimeFuzzyTripMatcher gtfsRealtimeFuzzyTripMatcher() {
    return new GtfsRealtimeFuzzyTripMatcher(transitService);
  }

  @Override
  public EntityResolver entityResolver(String feedId) {
    return new EntityResolver(transitService, feedId);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy