/**
 * 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.cognitiveservices.vision.customvision.training.models;

import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * The PredictionQueryToken model.
 */
public class PredictionQueryToken {
    /**
     * The session property.
     */
    @JsonProperty(value = "session")
    private String session;

    /**
     * The continuation property.
     */
    @JsonProperty(value = "continuation")
    private String continuation;

    /**
     * The maxCount property.
     */
    @JsonProperty(value = "maxCount")
    private int maxCount;

    /**
     * Possible values include: 'Newest', 'Oldest', 'Suggested'.
     */
    @JsonProperty(value = "orderBy")
    private OrderBy orderBy;

    /**
     * The tags property.
     */
    @JsonProperty(value = "tags")
    private List<PredictionQueryTag> tags;

    /**
     * The iterationId property.
     */
    @JsonProperty(value = "iterationId")
    private UUID iterationId;

    /**
     * The startTime property.
     */
    @JsonProperty(value = "startTime")
    private DateTime startTime;

    /**
     * The endTime property.
     */
    @JsonProperty(value = "endTime")
    private DateTime endTime;

    /**
     * The application property.
     */
    @JsonProperty(value = "application")
    private String application;

    /**
     * Get the session value.
     *
     * @return the session value
     */
    public String session() {
        return this.session;
    }

    /**
     * Set the session value.
     *
     * @param session the session value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withSession(String session) {
        this.session = session;
        return this;
    }

    /**
     * Get the continuation value.
     *
     * @return the continuation value
     */
    public String continuation() {
        return this.continuation;
    }

    /**
     * Set the continuation value.
     *
     * @param continuation the continuation value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withContinuation(String continuation) {
        this.continuation = continuation;
        return this;
    }

    /**
     * Get the maxCount value.
     *
     * @return the maxCount value
     */
    public int maxCount() {
        return this.maxCount;
    }

    /**
     * Set the maxCount value.
     *
     * @param maxCount the maxCount value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withMaxCount(int maxCount) {
        this.maxCount = maxCount;
        return this;
    }

    /**
     * Get the orderBy value.
     *
     * @return the orderBy value
     */
    public OrderBy orderBy() {
        return this.orderBy;
    }

    /**
     * Set the orderBy value.
     *
     * @param orderBy the orderBy value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withOrderBy(OrderBy orderBy) {
        this.orderBy = orderBy;
        return this;
    }

    /**
     * Get the tags value.
     *
     * @return the tags value
     */
    public List<PredictionQueryTag> tags() {
        return this.tags;
    }

    /**
     * Set the tags value.
     *
     * @param tags the tags value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withTags(List<PredictionQueryTag> tags) {
        this.tags = tags;
        return this;
    }

    /**
     * Get the iterationId value.
     *
     * @return the iterationId value
     */
    public UUID iterationId() {
        return this.iterationId;
    }

    /**
     * Set the iterationId value.
     *
     * @param iterationId the iterationId value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withIterationId(UUID iterationId) {
        this.iterationId = iterationId;
        return this;
    }

    /**
     * Get the startTime value.
     *
     * @return the startTime value
     */
    public DateTime startTime() {
        return this.startTime;
    }

    /**
     * Set the startTime value.
     *
     * @param startTime the startTime value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withStartTime(DateTime startTime) {
        this.startTime = startTime;
        return this;
    }

    /**
     * Get the endTime value.
     *
     * @return the endTime value
     */
    public DateTime endTime() {
        return this.endTime;
    }

    /**
     * Set the endTime value.
     *
     * @param endTime the endTime value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withEndTime(DateTime endTime) {
        this.endTime = endTime;
        return this;
    }

    /**
     * Get the application value.
     *
     * @return the application value
     */
    public String application() {
        return this.application;
    }

    /**
     * Set the application value.
     *
     * @param application the application value to set
     * @return the PredictionQueryToken object itself.
     */
    public PredictionQueryToken withApplication(String application) {
        this.application = application;
        return this;
    }

}
