/**
 * 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 com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Exported Model - Phraselist Model Feature.
 */
public class JSONModelFeature {
    /**
     * Indicates if the feature is enabled.
     */
    @JsonProperty(value = "activated")
    private Boolean activated;

    /**
     * The Phraselist name.
     */
    @JsonProperty(value = "name")
    private String name;

    /**
     * List of comma-separated phrases that represent the Phraselist.
     */
    @JsonProperty(value = "words")
    private String words;

    /**
     * An interchangeable phrase list feature serves as a list of synonyms for
     * training. A non-exchangeable phrase list serves as separate features for
     * training. So, if your non-interchangeable phrase list contains 5
     * phrases, they will be mapped to 5 separate features. You can think of
     * the non-interchangeable phrase list as an additional bag of words to add
     * to LUIS existing vocabulary features. It is used as a lexicon lookup
     * feature where its value is 1 if the lexicon contains a given word or 0
     * if it doesn’t.  Default value is true.
     */
    @JsonProperty(value = "mode")
    private Boolean mode;

    /**
     * Indicates if the Phraselist is enabled for all models in the
     * application.
     */
    @JsonProperty(value = "enabledForAllModels")
    private Boolean enabledForAllModels;

    /**
     * Get the activated value.
     *
     * @return the activated value
     */
    public Boolean activated() {
        return this.activated;
    }

    /**
     * Set the activated value.
     *
     * @param activated the activated value to set
     * @return the JSONModelFeature object itself.
     */
    public JSONModelFeature withActivated(Boolean activated) {
        this.activated = activated;
        return this;
    }

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

    /**
     * Set the name value.
     *
     * @param name the name value to set
     * @return the JSONModelFeature object itself.
     */
    public JSONModelFeature withName(String name) {
        this.name = name;
        return this;
    }

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

    /**
     * Set the words value.
     *
     * @param words the words value to set
     * @return the JSONModelFeature object itself.
     */
    public JSONModelFeature withWords(String words) {
        this.words = words;
        return this;
    }

    /**
     * Get the mode value.
     *
     * @return the mode value
     */
    public Boolean mode() {
        return this.mode;
    }

    /**
     * Set the mode value.
     *
     * @param mode the mode value to set
     * @return the JSONModelFeature object itself.
     */
    public JSONModelFeature withMode(Boolean mode) {
        this.mode = mode;
        return this;
    }

    /**
     * Get the enabledForAllModels value.
     *
     * @return the enabledForAllModels value
     */
    public Boolean enabledForAllModels() {
        return this.enabledForAllModels;
    }

    /**
     * Set the enabledForAllModels value.
     *
     * @param enabledForAllModels the enabledForAllModels value to set
     * @return the JSONModelFeature object itself.
     */
    public JSONModelFeature withEnabledForAllModels(Boolean enabledForAllModels) {
        this.enabledForAllModels = enabledForAllModels;
        return this;
    }

}
