/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * Modifiers decorate a Meaning Expression (i.e. intent FunctionCall) with signals that depend on
 * the source language's grammar and syntax. See go/intent-modifiers for details. NOTE: Modifiers
 * don't necessarily impact go/intent-resolution semantics. LINT.IfChange
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class KnowledgeAnswersIntentModifiers extends com.google.api.client.json.GenericJson {

  /**
   * Language of all of the non-annotation tokens of the query interpretation, if it is different
   * than |language|. This can happen with English smearing, e.g. [height rousseau] will trigger as
   * "fr" when issued in fr/FR, but really the language is "en". This can also happen when we have
   * extra information about the language model, e.g. language="zh", alternate_language="zh-Hant".
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String alternateLanguage;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String definiteness;

  /**
   * Language of parsed query.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String language;

  /**
   * Since there's only IMPERATIVE, consider using Marker.command instead.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String mood;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String plurality;

  /**
   * Whether or not the question is a polar (yes/no) question.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean polarQuestion;

  /**
   * Sentiment analysis attached to an intent implies the sentiment user expressed behind that
   * query. This is generated by the Empathetic Servlet in the QRewrite.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private SentimentSentiment sentiment;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String tense;

  /**
   * Language of all of the non-annotation tokens of the query interpretation, if it is different
   * than |language|. This can happen with English smearing, e.g. [height rousseau] will trigger as
   * "fr" when issued in fr/FR, but really the language is "en". This can also happen when we have
   * extra information about the language model, e.g. language="zh", alternate_language="zh-Hant".
   * @return value or {@code null} for none
   */
  public java.lang.String getAlternateLanguage() {
    return alternateLanguage;
  }

  /**
   * Language of all of the non-annotation tokens of the query interpretation, if it is different
   * than |language|. This can happen with English smearing, e.g. [height rousseau] will trigger as
   * "fr" when issued in fr/FR, but really the language is "en". This can also happen when we have
   * extra information about the language model, e.g. language="zh", alternate_language="zh-Hant".
   * @param alternateLanguage alternateLanguage or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setAlternateLanguage(java.lang.String alternateLanguage) {
    this.alternateLanguage = alternateLanguage;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.String getDefiniteness() {
    return definiteness;
  }

  /**
   * @param definiteness definiteness or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setDefiniteness(java.lang.String definiteness) {
    this.definiteness = definiteness;
    return this;
  }

  /**
   * Language of parsed query.
   * @return value or {@code null} for none
   */
  public java.lang.String getLanguage() {
    return language;
  }

  /**
   * Language of parsed query.
   * @param language language or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setLanguage(java.lang.String language) {
    this.language = language;
    return this;
  }

  /**
   * Since there's only IMPERATIVE, consider using Marker.command instead.
   * @return value or {@code null} for none
   */
  public java.lang.String getMood() {
    return mood;
  }

  /**
   * Since there's only IMPERATIVE, consider using Marker.command instead.
   * @param mood mood or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setMood(java.lang.String mood) {
    this.mood = mood;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.String getPlurality() {
    return plurality;
  }

  /**
   * @param plurality plurality or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setPlurality(java.lang.String plurality) {
    this.plurality = plurality;
    return this;
  }

  /**
   * Whether or not the question is a polar (yes/no) question.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getPolarQuestion() {
    return polarQuestion;
  }

  /**
   * Whether or not the question is a polar (yes/no) question.
   * @param polarQuestion polarQuestion or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setPolarQuestion(java.lang.Boolean polarQuestion) {
    this.polarQuestion = polarQuestion;
    return this;
  }

  /**
   * Sentiment analysis attached to an intent implies the sentiment user expressed behind that
   * query. This is generated by the Empathetic Servlet in the QRewrite.
   * @return value or {@code null} for none
   */
  public SentimentSentiment getSentiment() {
    return sentiment;
  }

  /**
   * Sentiment analysis attached to an intent implies the sentiment user expressed behind that
   * query. This is generated by the Empathetic Servlet in the QRewrite.
   * @param sentiment sentiment or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setSentiment(SentimentSentiment sentiment) {
    this.sentiment = sentiment;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.String getTense() {
    return tense;
  }

  /**
   * @param tense tense or {@code null} for none
   */
  public KnowledgeAnswersIntentModifiers setTense(java.lang.String tense) {
    this.tense = tense;
    return this;
  }

  @Override
  public KnowledgeAnswersIntentModifiers set(String fieldName, Object value) {
    return (KnowledgeAnswersIntentModifiers) super.set(fieldName, value);
  }

  @Override
  public KnowledgeAnswersIntentModifiers clone() {
    return (KnowledgeAnswersIntentModifiers) super.clone();
  }

}
