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

org.opentripplanner.updater.trip.siri.CallWrapper Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.updater.trip.siri;

import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import uk.org.siri.siri20.ArrivalBoardingActivityEnumeration;
import uk.org.siri.siri20.CallStatusEnumeration;
import uk.org.siri.siri20.DepartureBoardingActivityEnumeration;
import uk.org.siri.siri20.EstimatedCall;
import uk.org.siri.siri20.EstimatedVehicleJourney;
import uk.org.siri.siri20.NaturalLanguageStringStructure;
import uk.org.siri.siri20.OccupancyEnumeration;
import uk.org.siri.siri20.RecordedCall;

/**
 * This class is a wrapper around either a {@link RecordedCall} or an {@link EstimatedCall}, making
 * it possible to iterate over both of the types at once.
 */
public interface CallWrapper {
  static CallWrapper of(EstimatedCall estimatedCall) {
    return new EstimatedCallWrapper(estimatedCall);
  }

  static CallWrapper of(RecordedCall recordedCall) {
    return new RecordedCallWrapper(recordedCall);
  }

  static List of(EstimatedVehicleJourney estimatedVehicleJourney) {
    List result = new ArrayList<>();

    if (estimatedVehicleJourney.getRecordedCalls() != null) {
      for (var recordedCall : estimatedVehicleJourney.getRecordedCalls().getRecordedCalls()) {
        result.add(new RecordedCallWrapper(recordedCall));
      }
    }

    if (estimatedVehicleJourney.getEstimatedCalls() != null) {
      for (var estimatedCall : estimatedVehicleJourney.getEstimatedCalls().getEstimatedCalls()) {
        result.add(new EstimatedCallWrapper(estimatedCall));
      }
    }

    return List.copyOf(result);
  }

  String getStopPointRef();
  Boolean isCancellation();
  Boolean isPredictionInaccurate();
  OccupancyEnumeration getOccupancy();
  List getDestinationDisplaies();
  ZonedDateTime getAimedArrivalTime();
  ZonedDateTime getExpectedArrivalTime();
  ZonedDateTime getActualArrivalTime();
  CallStatusEnumeration getArrivalStatus();
  ArrivalBoardingActivityEnumeration getArrivalBoardingActivity();
  ZonedDateTime getAimedDepartureTime();
  ZonedDateTime getExpectedDepartureTime();
  ZonedDateTime getActualDepartureTime();
  CallStatusEnumeration getDepartureStatus();
  DepartureBoardingActivityEnumeration getDepartureBoardingActivity();

  final class EstimatedCallWrapper implements CallWrapper {

    private final EstimatedCall call;

    private EstimatedCallWrapper(EstimatedCall estimatedCall) {
      this.call = estimatedCall;
    }

    @Override
    public String getStopPointRef() {
      return call.getStopPointRef() != null ? call.getStopPointRef().getValue() : null;
    }

    @Override
    public Boolean isCancellation() {
      return call.isCancellation();
    }

    @Override
    public Boolean isPredictionInaccurate() {
      return call.isPredictionInaccurate();
    }

    @Override
    public OccupancyEnumeration getOccupancy() {
      return call.getOccupancy();
    }

    @Override
    public List getDestinationDisplaies() {
      return call.getDestinationDisplaies();
    }

    @Override
    public ZonedDateTime getAimedArrivalTime() {
      return call.getAimedArrivalTime();
    }

    @Override
    public ZonedDateTime getExpectedArrivalTime() {
      return call.getExpectedArrivalTime();
    }

    @Override
    public ZonedDateTime getActualArrivalTime() {
      return null;
    }

    @Override
    public CallStatusEnumeration getArrivalStatus() {
      return call.getArrivalStatus();
    }

    @Override
    public ArrivalBoardingActivityEnumeration getArrivalBoardingActivity() {
      return call.getArrivalBoardingActivity();
    }

    @Override
    public ZonedDateTime getAimedDepartureTime() {
      return call.getAimedDepartureTime();
    }

    @Override
    public ZonedDateTime getExpectedDepartureTime() {
      return call.getExpectedDepartureTime();
    }

    @Override
    public ZonedDateTime getActualDepartureTime() {
      return null;
    }

    @Override
    public CallStatusEnumeration getDepartureStatus() {
      return call.getDepartureStatus();
    }

    @Override
    public DepartureBoardingActivityEnumeration getDepartureBoardingActivity() {
      return call.getDepartureBoardingActivity();
    }

    @Override
    public int hashCode() {
      return call.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
      if (!(obj instanceof EstimatedCallWrapper estimatedCallWrapper)) {
        return false;
      }
      return call.equals(estimatedCallWrapper.call);
    }
  }

  final class RecordedCallWrapper implements CallWrapper {

    private final RecordedCall call;

    private RecordedCallWrapper(RecordedCall estimatedCall) {
      this.call = estimatedCall;
    }

    @Override
    public String getStopPointRef() {
      return call.getStopPointRef() != null ? call.getStopPointRef().getValue() : null;
    }

    @Override
    public Boolean isCancellation() {
      return call.isCancellation();
    }

    @Override
    public Boolean isPredictionInaccurate() {
      return call.isPredictionInaccurate();
    }

    @Override
    public OccupancyEnumeration getOccupancy() {
      return call.getOccupancy();
    }

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

    @Override
    public ZonedDateTime getAimedArrivalTime() {
      return call.getAimedArrivalTime();
    }

    @Override
    public ZonedDateTime getExpectedArrivalTime() {
      return call.getExpectedArrivalTime();
    }

    @Override
    public ZonedDateTime getActualArrivalTime() {
      return call.getActualArrivalTime();
    }

    @Override
    public CallStatusEnumeration getArrivalStatus() {
      return null;
    }

    @Override
    public ArrivalBoardingActivityEnumeration getArrivalBoardingActivity() {
      return null;
    }

    @Override
    public ZonedDateTime getAimedDepartureTime() {
      return call.getAimedDepartureTime();
    }

    @Override
    public ZonedDateTime getExpectedDepartureTime() {
      return call.getExpectedDepartureTime();
    }

    @Override
    public ZonedDateTime getActualDepartureTime() {
      return call.getActualDepartureTime();
    }

    @Override
    public CallStatusEnumeration getDepartureStatus() {
      return null;
    }

    @Override
    public DepartureBoardingActivityEnumeration getDepartureBoardingActivity() {
      return null;
    }

    @Override
    public int hashCode() {
      return call.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
      if (!(obj instanceof RecordedCallWrapper recordedCallWrapper)) {
        return false;
      }
      return call.equals(recordedCallWrapper.call);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy