/*
 * 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.drivelabels.v2.model;

/**
 * Selection field Choice.
 *
 * <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 Drive Labels 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 GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice extends com.google.api.client.json.GenericJson {

  /**
   * Output only. The capabilities related to this Choice on applied metadata.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceAppliedCapabilities appliedCapabilities;

  /**
   * Output only. The time this Choice was created.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String createTime;

  /**
   * Output only. The user who created this Choice.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2UserInfo creator;

  /**
   * Output only. The time this Choice was disabled. This value has no meaning when the Choice is
   * not disabled.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String disableTime;

  /**
   * Output only. The user who disabled this Choice. This value has no meaning when the option is
   * not disabled.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2UserInfo disabler;

  /**
   * Output only. UI Display hints for rendering a Choice.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceDisplayHints displayHints;

  /**
   * The unique value of the Choice. This ID will be autogenerated, and will match the form
   * `([a-zA-Z0-9_])+`.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String id;

  /**
   * Output only. Lifecycle of the Choice.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2Lifecycle lifecycle;

  /**
   * Output only. The LockStatus of this Choice.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2LockStatus lockStatus;

  /**
   * Basic properties of the Choice.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceProperties properties;

  /**
   * Output only. The time this Choice was published. This value has no meaning when the Choice is
   * not published.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String publishTime;

  /**
   * Output only. The user who published this Choice. This value has no meaning when the Choice is
   * not published.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2UserInfo publisher;

  /**
   * Output only. The capabilities related to this option when editing the option.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceSchemaCapabilities schemaCapabilities;

  /**
   * Output only. The time this Choice was updated last.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String updateTime;

  /**
   * Output only. The user who updated this Choice last.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GoogleAppsDriveLabelsV2UserInfo updater;

  /**
   * Output only. The capabilities related to this Choice on applied metadata.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceAppliedCapabilities getAppliedCapabilities() {
    return appliedCapabilities;
  }

  /**
   * Output only. The capabilities related to this Choice on applied metadata.
   * @param appliedCapabilities appliedCapabilities or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setAppliedCapabilities(GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceAppliedCapabilities appliedCapabilities) {
    this.appliedCapabilities = appliedCapabilities;
    return this;
  }

  /**
   * Output only. The time this Choice was created.
   * @return value or {@code null} for none
   */
  public String getCreateTime() {
    return createTime;
  }

  /**
   * Output only. The time this Choice was created.
   * @param createTime createTime or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setCreateTime(String createTime) {
    this.createTime = createTime;
    return this;
  }

  /**
   * Output only. The user who created this Choice.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2UserInfo getCreator() {
    return creator;
  }

  /**
   * Output only. The user who created this Choice.
   * @param creator creator or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setCreator(GoogleAppsDriveLabelsV2UserInfo creator) {
    this.creator = creator;
    return this;
  }

  /**
   * Output only. The time this Choice was disabled. This value has no meaning when the Choice is
   * not disabled.
   * @return value or {@code null} for none
   */
  public String getDisableTime() {
    return disableTime;
  }

  /**
   * Output only. The time this Choice was disabled. This value has no meaning when the Choice is
   * not disabled.
   * @param disableTime disableTime or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setDisableTime(String disableTime) {
    this.disableTime = disableTime;
    return this;
  }

  /**
   * Output only. The user who disabled this Choice. This value has no meaning when the option is
   * not disabled.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2UserInfo getDisabler() {
    return disabler;
  }

  /**
   * Output only. The user who disabled this Choice. This value has no meaning when the option is
   * not disabled.
   * @param disabler disabler or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setDisabler(GoogleAppsDriveLabelsV2UserInfo disabler) {
    this.disabler = disabler;
    return this;
  }

  /**
   * Output only. UI Display hints for rendering a Choice.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceDisplayHints getDisplayHints() {
    return displayHints;
  }

  /**
   * Output only. UI Display hints for rendering a Choice.
   * @param displayHints displayHints or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setDisplayHints(GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceDisplayHints displayHints) {
    this.displayHints = displayHints;
    return this;
  }

  /**
   * The unique value of the Choice. This ID will be autogenerated, and will match the form
   * `([a-zA-Z0-9_])+`.
   * @return value or {@code null} for none
   */
  public java.lang.String getId() {
    return id;
  }

  /**
   * The unique value of the Choice. This ID will be autogenerated, and will match the form
   * `([a-zA-Z0-9_])+`.
   * @param id id or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setId(java.lang.String id) {
    this.id = id;
    return this;
  }

  /**
   * Output only. Lifecycle of the Choice.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2Lifecycle getLifecycle() {
    return lifecycle;
  }

  /**
   * Output only. Lifecycle of the Choice.
   * @param lifecycle lifecycle or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setLifecycle(GoogleAppsDriveLabelsV2Lifecycle lifecycle) {
    this.lifecycle = lifecycle;
    return this;
  }

  /**
   * Output only. The LockStatus of this Choice.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2LockStatus getLockStatus() {
    return lockStatus;
  }

  /**
   * Output only. The LockStatus of this Choice.
   * @param lockStatus lockStatus or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setLockStatus(GoogleAppsDriveLabelsV2LockStatus lockStatus) {
    this.lockStatus = lockStatus;
    return this;
  }

  /**
   * Basic properties of the Choice.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceProperties getProperties() {
    return properties;
  }

  /**
   * Basic properties of the Choice.
   * @param properties properties or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setProperties(GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceProperties properties) {
    this.properties = properties;
    return this;
  }

  /**
   * Output only. The time this Choice was published. This value has no meaning when the Choice is
   * not published.
   * @return value or {@code null} for none
   */
  public String getPublishTime() {
    return publishTime;
  }

  /**
   * Output only. The time this Choice was published. This value has no meaning when the Choice is
   * not published.
   * @param publishTime publishTime or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setPublishTime(String publishTime) {
    this.publishTime = publishTime;
    return this;
  }

  /**
   * Output only. The user who published this Choice. This value has no meaning when the Choice is
   * not published.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2UserInfo getPublisher() {
    return publisher;
  }

  /**
   * Output only. The user who published this Choice. This value has no meaning when the Choice is
   * not published.
   * @param publisher publisher or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setPublisher(GoogleAppsDriveLabelsV2UserInfo publisher) {
    this.publisher = publisher;
    return this;
  }

  /**
   * Output only. The capabilities related to this option when editing the option.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceSchemaCapabilities getSchemaCapabilities() {
    return schemaCapabilities;
  }

  /**
   * Output only. The capabilities related to this option when editing the option.
   * @param schemaCapabilities schemaCapabilities or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setSchemaCapabilities(GoogleAppsDriveLabelsV2FieldSelectionOptionsChoiceSchemaCapabilities schemaCapabilities) {
    this.schemaCapabilities = schemaCapabilities;
    return this;
  }

  /**
   * Output only. The time this Choice was updated last.
   * @return value or {@code null} for none
   */
  public String getUpdateTime() {
    return updateTime;
  }

  /**
   * Output only. The time this Choice was updated last.
   * @param updateTime updateTime or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setUpdateTime(String updateTime) {
    this.updateTime = updateTime;
    return this;
  }

  /**
   * Output only. The user who updated this Choice last.
   * @return value or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2UserInfo getUpdater() {
    return updater;
  }

  /**
   * Output only. The user who updated this Choice last.
   * @param updater updater or {@code null} for none
   */
  public GoogleAppsDriveLabelsV2FieldSelectionOptionsChoice setUpdater(GoogleAppsDriveLabelsV2UserInfo updater) {
    this.updater = updater;
    return this;
  }

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

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

}
