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

org.opentripplanner.updater.support.siri.SiriHelper Maven / Gradle / Ivy

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

import jakarta.xml.bind.JAXBException;
import java.io.InputStream;
import java.time.Duration;
import java.time.ZonedDateTime;
import java.util.UUID;
import javax.xml.stream.XMLStreamException;
import org.rutebanken.siri20.util.SiriXml;
import uk.org.siri.siri20.EstimatedTimetableRequestStructure;
import uk.org.siri.siri20.MessageQualifierStructure;
import uk.org.siri.siri20.RequestorRef;
import uk.org.siri.siri20.ServiceRequest;
import uk.org.siri.siri20.Siri;
import uk.org.siri.siri20.SituationExchangeRequestStructure;

public class SiriHelper {

  public static Siri unmarshal(InputStream is) throws JAXBException, XMLStreamException {
    return SiriXml.parseXml(is);
  }

  public static String createSXServiceRequestAsXml(String requestorRef) throws JAXBException {
    Siri request = createSXServiceRequest(requestorRef);
    return SiriXml.toXml(request);
  }

  public static String createETServiceRequestAsXml(String requestorRef, Duration previewInterval)
    throws JAXBException {
    Siri request = createETServiceRequest(requestorRef, previewInterval);
    return SiriXml.toXml(request);
  }

  private static Siri createSiriObject() {
    Siri request = new Siri();
    request.setVersion("2.0");

    return request;
  }

  private static Siri createSXServiceRequest(String requestorRefValue) {
    Siri request = createSiriObject();

    ServiceRequest serviceRequest = new ServiceRequest();
    serviceRequest.setRequestTimestamp(ZonedDateTime.now());

    RequestorRef requestorRef = new RequestorRef();
    requestorRef.setValue(requestorRefValue);
    serviceRequest.setRequestorRef(requestorRef);

    SituationExchangeRequestStructure sxRequest = new SituationExchangeRequestStructure();
    sxRequest.setRequestTimestamp(ZonedDateTime.now());
    sxRequest.setVersion("2.0");

    MessageQualifierStructure messageIdentifier = new MessageQualifierStructure();
    messageIdentifier.setValue(UUID.randomUUID().toString());

    sxRequest.setMessageIdentifier(messageIdentifier);
    serviceRequest.getSituationExchangeRequests().add(sxRequest);

    request.setServiceRequest(serviceRequest);

    return request;
  }

  private static Siri createETServiceRequest(String requestorRefValue, Duration previewInterval) {
    Siri request = createSiriObject();

    ServiceRequest serviceRequest = new ServiceRequest();
    serviceRequest.setRequestTimestamp(ZonedDateTime.now());

    RequestorRef requestorRef = new RequestorRef();
    requestorRef.setValue(requestorRefValue);
    serviceRequest.setRequestorRef(requestorRef);

    EstimatedTimetableRequestStructure etRequest = new EstimatedTimetableRequestStructure();
    etRequest.setRequestTimestamp(ZonedDateTime.now());
    etRequest.setVersion("2.0");

    if (previewInterval != null) {
      etRequest.setPreviewInterval(previewInterval);
    }

    MessageQualifierStructure messageIdentifier = new MessageQualifierStructure();
    messageIdentifier.setValue(UUID.randomUUID().toString());

    etRequest.setMessageIdentifier(messageIdentifier);
    serviceRequest.getEstimatedTimetableRequests().add(etRequest);

    request.setServiceRequest(serviceRequest);

    return request;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy