/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.management.streamanalytics.v2016_03_01;

import org.joda.time.DateTime;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Parameters supplied to the Start Streaming Job operation.
 */
public class StartStreamingJobParameters {
    /**
     * Value may be JobStartTime, CustomTime, or LastOutputEventTime to
     * indicate whether the starting point of the output event stream should
     * start whenever the job is started, start at a custom user time stamp
     * specified via the outputStartTime property, or start from the last event
     * output time. Possible values include: 'JobStartTime', 'CustomTime',
     * 'LastOutputEventTime'.
     */
    @JsonProperty(value = "outputStartMode")
    private OutputStartMode outputStartMode;

    /**
     * Value is either an ISO-8601 formatted time stamp that indicates the
     * starting point of the output event stream, or null to indicate that the
     * output event stream will start whenever the streaming job is started.
     * This property must have a value if outputStartMode is set to CustomTime.
     */
    @JsonProperty(value = "outputStartTime")
    private DateTime outputStartTime;

    /**
     * Get value may be JobStartTime, CustomTime, or LastOutputEventTime to indicate whether the starting point of the output event stream should start whenever the job is started, start at a custom user time stamp specified via the outputStartTime property, or start from the last event output time. Possible values include: 'JobStartTime', 'CustomTime', 'LastOutputEventTime'.
     *
     * @return the outputStartMode value
     */
    public OutputStartMode outputStartMode() {
        return this.outputStartMode;
    }

    /**
     * Set value may be JobStartTime, CustomTime, or LastOutputEventTime to indicate whether the starting point of the output event stream should start whenever the job is started, start at a custom user time stamp specified via the outputStartTime property, or start from the last event output time. Possible values include: 'JobStartTime', 'CustomTime', 'LastOutputEventTime'.
     *
     * @param outputStartMode the outputStartMode value to set
     * @return the StartStreamingJobParameters object itself.
     */
    public StartStreamingJobParameters withOutputStartMode(OutputStartMode outputStartMode) {
        this.outputStartMode = outputStartMode;
        return this;
    }

    /**
     * Get value is either an ISO-8601 formatted time stamp that indicates the starting point of the output event stream, or null to indicate that the output event stream will start whenever the streaming job is started. This property must have a value if outputStartMode is set to CustomTime.
     *
     * @return the outputStartTime value
     */
    public DateTime outputStartTime() {
        return this.outputStartTime;
    }

    /**
     * Set value is either an ISO-8601 formatted time stamp that indicates the starting point of the output event stream, or null to indicate that the output event stream will start whenever the streaming job is started. This property must have a value if outputStartMode is set to CustomTime.
     *
     * @param outputStartTime the outputStartTime value to set
     * @return the StartStreamingJobParameters object itself.
     */
    public StartStreamingJobParameters withOutputStartTime(DateTime outputStartTime) {
        this.outputStartTime = outputStartTime;
        return this;
    }

}
