/**
 * 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.language.luis.authoring.models;

import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * The application publish settings.
 */
public class PublishSettings {
    /**
     * The application ID.
     */
    @JsonProperty(value = "id", required = true)
    private UUID id;

    /**
     * Setting sentiment analysis as true returns the sentiment of the input
     * utterance along with the response.
     */
    @JsonProperty(value = "sentimentAnalysis", required = true)
    private boolean isSentimentAnalysisEnabled;

    /**
     * Enables speech priming in your app.
     */
    @JsonProperty(value = "speech", required = true)
    private boolean isSpeechEnabled;

    /**
     * Enables spell checking of the utterance.
     */
    @JsonProperty(value = "spellChecker", required = true)
    private boolean isSpellCheckerEnabled;

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

    /**
     * Set the id value.
     *
     * @param id the id value to set
     * @return the PublishSettings object itself.
     */
    public PublishSettings withId(UUID id) {
        this.id = id;
        return this;
    }

    /**
     * Get the isSentimentAnalysisEnabled value.
     *
     * @return the isSentimentAnalysisEnabled value
     */
    public boolean isSentimentAnalysisEnabled() {
        return this.isSentimentAnalysisEnabled;
    }

    /**
     * Set the isSentimentAnalysisEnabled value.
     *
     * @param isSentimentAnalysisEnabled the isSentimentAnalysisEnabled value to set
     * @return the PublishSettings object itself.
     */
    public PublishSettings withIsSentimentAnalysisEnabled(boolean isSentimentAnalysisEnabled) {
        this.isSentimentAnalysisEnabled = isSentimentAnalysisEnabled;
        return this;
    }

    /**
     * Get the isSpeechEnabled value.
     *
     * @return the isSpeechEnabled value
     */
    public boolean isSpeechEnabled() {
        return this.isSpeechEnabled;
    }

    /**
     * Set the isSpeechEnabled value.
     *
     * @param isSpeechEnabled the isSpeechEnabled value to set
     * @return the PublishSettings object itself.
     */
    public PublishSettings withIsSpeechEnabled(boolean isSpeechEnabled) {
        this.isSpeechEnabled = isSpeechEnabled;
        return this;
    }

    /**
     * Get the isSpellCheckerEnabled value.
     *
     * @return the isSpellCheckerEnabled value
     */
    public boolean isSpellCheckerEnabled() {
        return this.isSpellCheckerEnabled;
    }

    /**
     * Set the isSpellCheckerEnabled value.
     *
     * @param isSpellCheckerEnabled the isSpellCheckerEnabled value to set
     * @return the PublishSettings object itself.
     */
    public PublishSettings withIsSpellCheckerEnabled(boolean isSpellCheckerEnabled) {
        this.isSpellCheckerEnabled = isSpellCheckerEnabled;
        return this;
    }

}
