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

org.opentripplanner.updater.vehicle_position.VehiclePositionUpdaterRunnable Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.updater.vehicle_position;

import com.google.transit.realtime.GtfsRealtime.VehiclePosition;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.opentripplanner.service.realtimevehicles.RealtimeVehicleRepository;
import org.opentripplanner.standalone.config.routerconfig.updaters.VehiclePositionsUpdaterConfig;
import org.opentripplanner.updater.GraphWriterRunnable;
import org.opentripplanner.updater.RealTimeUpdateContext;

public class VehiclePositionUpdaterRunnable implements GraphWriterRunnable {

  private final List updates;
  private final RealtimeVehicleRepository realtimeVehicleRepository;
  private final String feedId;
  private final boolean fuzzyTripMatching;
  private final Set vehiclePositionFeatures;

  public VehiclePositionUpdaterRunnable(
    RealtimeVehicleRepository realtimeVehicleRepository,
    Set vehiclePositionFeatures,
    String feedId,
    boolean fuzzyTripMatching,
    List updates
  ) {
    this.updates = Objects.requireNonNull(updates);
    this.feedId = feedId;
    this.realtimeVehicleRepository = realtimeVehicleRepository;
    this.fuzzyTripMatching = fuzzyTripMatching;
    this.vehiclePositionFeatures = vehiclePositionFeatures;
  }

  @Override
  public void run(RealTimeUpdateContext context) {
    RealtimeVehiclePatternMatcher matcher = new RealtimeVehiclePatternMatcher(
      feedId,
      context.transitService()::getTrip,
      context.transitService()::findPattern,
      context.transitService()::findPattern,
      realtimeVehicleRepository,
      context.transitService().getTimeZone(),
      fuzzyTripMatching ? context.gtfsRealtimeFuzzyTripMatcher() : null,
      vehiclePositionFeatures
    );
    // Apply new vehicle positions
    matcher.applyRealtimeVehicleUpdates(updates);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy