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

org.opentripplanner.api.model.ApiBookingInfo Maven / Gradle / Ivy

package org.opentripplanner.api.model;

import java.io.Serializable;
import java.time.Duration;
import java.util.Set;
import org.opentripplanner.model.base.ToStringBuilder;

/**
 * Info about how a trip might be booked at a particular stop. All of this is pass-through
 * information, except information about booking time and booking notice.
 */
public class ApiBookingInfo implements Serializable {

    /**
     * How to contact the agency to book a trip or requests information.
     */
    public final ApiContactInfo contactInfo;

    /**
     * What booking methods are available at this stop time.
     */
    public final Set bookingMethods;

    /**
     * Cannot be set at the same time as minimumBookingNotice or maximumBookingNotice
     */
    public final ApiBookingTime earliestBookingTime;

    /**
     * Cannot be set at the same time as minimumBookingNotice or maximumBookingNotice
     */
    public final ApiBookingTime latestBookingTime;

    /**
     * Cannot be set at the same time as earliestBookingTime or latestBookingTime
     */
    public final Integer minimumBookingNoticeSeconds;

    /**
     * Cannot be set at the same time as earliestBookingTime or latestBookingTime
     */
    public final Integer maximumBookingNoticeSeconds;

    /**
     * Message to riders utilizing service at a stop_time when booking on-demand pickup and drop
     * off. Meant to provide minimal information to be transmitted within a user interface about the
     * action a rider must take in order to utilize the service.
     */
    public final String message;

    /**
     * Functions in the same way as message but used when riders have on-demand pickup only.
     */
    public final String pickupMessage;

    /**
     * Functions in the same way as message but used when riders have on-demand drop off only.
     */
    public final String dropOffMessage;

    public ApiBookingInfo(
            ApiContactInfo contactInfo,
            Set bookingMethods,
            ApiBookingTime earliestBookingTime,
            ApiBookingTime latestBookingTime,
            Duration minimumBookingNotice,
            Duration maximumBookingNotice,
            String message,
            String pickupMessage,
            String dropOffMessage
    ) {
        this.contactInfo = contactInfo;
        this.bookingMethods = bookingMethods;
        this.message = message;
        this.pickupMessage = pickupMessage;
        this.dropOffMessage = dropOffMessage;

        this.earliestBookingTime = earliestBookingTime;
        this.latestBookingTime = latestBookingTime;
        if (minimumBookingNotice != null) {
            this.minimumBookingNoticeSeconds = (int) minimumBookingNotice.toSeconds();
        }
        else {
            this.minimumBookingNoticeSeconds = null;
        }

        if (maximumBookingNotice != null) {
            this.maximumBookingNoticeSeconds = (int) maximumBookingNotice.toSeconds();
        }
        else {
            this.maximumBookingNoticeSeconds = null;
        }
    }

    @Override
    public String toString() {
        return ToStringBuilder.of(getClass())
                .addObj("contactInfo", contactInfo)
                .addCol("bookingMethods", bookingMethods)
                .addObj("earliestBookingTime", earliestBookingTime)
                .addObj("latestBookingTime", latestBookingTime)
                .addNum("minimumBookingNoticeSeconds", minimumBookingNoticeSeconds)
                .addNum("maximumBookingNoticeSeconds", maximumBookingNoticeSeconds)
                .addStr("message", message)
                .addStr("pickupMessage", pickupMessage)
                .addStr("dropOffMessage", dropOffMessage)
                .toString();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy