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

/**
 * The profile for a scanned column within a table.
 *
 * <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 Cloud Data Loss Prevention (DLP). 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 GooglePrivacyDlpV2ColumnDataProfile extends com.google.api.client.json.GenericJson {

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

  /**
   * If it's been determined this column can be identified as a single type, this will be set.
   * Otherwise the column either has unidentifiable content or mixed types.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GooglePrivacyDlpV2InfoTypeSummary columnInfoType;

  /**
   * The data type of a given column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String columnType;

  /**
   * The data risk level for this column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GooglePrivacyDlpV2DataRiskLevel dataRiskLevel;

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

  /**
   * The BigQuery location where the dataset's data is stored. See
   * https://cloud.google.com/bigquery/docs/locations for supported locations.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String datasetLocation;

  /**
   * The Google Cloud project ID that owns the BigQuery dataset.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String datasetProjectId;

  /**
   * Approximate percentage of entries being null in the column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String estimatedNullPercentage;

  /**
   * Approximate uniqueness of the column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String estimatedUniquenessScore;

  /**
   * The likelihood that this column contains free-form text. A value close to 1 may indicate the
   * column is likely to contain free-form or natural language text. Range in 0-1.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Double freeTextScore;

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

  /**
   * Other types found within this column. List will be un-ordered.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<GooglePrivacyDlpV2OtherInfoTypeSummary> otherMatches;

  /**
   * Indicates if a policy tag has been applied to the column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String policyState;

  /**
   * The last time the profile was generated.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String profileLastGenerated;

  /**
   * Success or error status from the most recent profile generation attempt. May be empty if the
   * profile is still being generated.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GooglePrivacyDlpV2ProfileStatus profileStatus;

  /**
   * The sensitivity of this column.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GooglePrivacyDlpV2SensitivityScore sensitivityScore;

  /**
   * State of a profile.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String state;

  /**
   * The resource name to the table data profile.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String tableDataProfile;

  /**
   * The resource name of the table this column is within.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String tableFullResource;

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

  /**
   * The name of the column.
   * @return value or {@code null} for none
   */
  public java.lang.String getColumn() {
    return column;
  }

  /**
   * The name of the column.
   * @param column column or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setColumn(java.lang.String column) {
    this.column = column;
    return this;
  }

  /**
   * If it's been determined this column can be identified as a single type, this will be set.
   * Otherwise the column either has unidentifiable content or mixed types.
   * @return value or {@code null} for none
   */
  public GooglePrivacyDlpV2InfoTypeSummary getColumnInfoType() {
    return columnInfoType;
  }

  /**
   * If it's been determined this column can be identified as a single type, this will be set.
   * Otherwise the column either has unidentifiable content or mixed types.
   * @param columnInfoType columnInfoType or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setColumnInfoType(GooglePrivacyDlpV2InfoTypeSummary columnInfoType) {
    this.columnInfoType = columnInfoType;
    return this;
  }

  /**
   * The data type of a given column.
   * @return value or {@code null} for none
   */
  public java.lang.String getColumnType() {
    return columnType;
  }

  /**
   * The data type of a given column.
   * @param columnType columnType or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setColumnType(java.lang.String columnType) {
    this.columnType = columnType;
    return this;
  }

  /**
   * The data risk level for this column.
   * @return value or {@code null} for none
   */
  public GooglePrivacyDlpV2DataRiskLevel getDataRiskLevel() {
    return dataRiskLevel;
  }

  /**
   * The data risk level for this column.
   * @param dataRiskLevel dataRiskLevel or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setDataRiskLevel(GooglePrivacyDlpV2DataRiskLevel dataRiskLevel) {
    this.dataRiskLevel = dataRiskLevel;
    return this;
  }

  /**
   * The BigQuery dataset ID.
   * @return value or {@code null} for none
   */
  public java.lang.String getDatasetId() {
    return datasetId;
  }

  /**
   * The BigQuery dataset ID.
   * @param datasetId datasetId or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setDatasetId(java.lang.String datasetId) {
    this.datasetId = datasetId;
    return this;
  }

  /**
   * The BigQuery location where the dataset's data is stored. See
   * https://cloud.google.com/bigquery/docs/locations for supported locations.
   * @return value or {@code null} for none
   */
  public java.lang.String getDatasetLocation() {
    return datasetLocation;
  }

  /**
   * The BigQuery location where the dataset's data is stored. See
   * https://cloud.google.com/bigquery/docs/locations for supported locations.
   * @param datasetLocation datasetLocation or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setDatasetLocation(java.lang.String datasetLocation) {
    this.datasetLocation = datasetLocation;
    return this;
  }

  /**
   * The Google Cloud project ID that owns the BigQuery dataset.
   * @return value or {@code null} for none
   */
  public java.lang.String getDatasetProjectId() {
    return datasetProjectId;
  }

  /**
   * The Google Cloud project ID that owns the BigQuery dataset.
   * @param datasetProjectId datasetProjectId or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setDatasetProjectId(java.lang.String datasetProjectId) {
    this.datasetProjectId = datasetProjectId;
    return this;
  }

  /**
   * Approximate percentage of entries being null in the column.
   * @return value or {@code null} for none
   */
  public java.lang.String getEstimatedNullPercentage() {
    return estimatedNullPercentage;
  }

  /**
   * Approximate percentage of entries being null in the column.
   * @param estimatedNullPercentage estimatedNullPercentage or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setEstimatedNullPercentage(java.lang.String estimatedNullPercentage) {
    this.estimatedNullPercentage = estimatedNullPercentage;
    return this;
  }

  /**
   * Approximate uniqueness of the column.
   * @return value or {@code null} for none
   */
  public java.lang.String getEstimatedUniquenessScore() {
    return estimatedUniquenessScore;
  }

  /**
   * Approximate uniqueness of the column.
   * @param estimatedUniquenessScore estimatedUniquenessScore or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setEstimatedUniquenessScore(java.lang.String estimatedUniquenessScore) {
    this.estimatedUniquenessScore = estimatedUniquenessScore;
    return this;
  }

  /**
   * The likelihood that this column contains free-form text. A value close to 1 may indicate the
   * column is likely to contain free-form or natural language text. Range in 0-1.
   * @return value or {@code null} for none
   */
  public java.lang.Double getFreeTextScore() {
    return freeTextScore;
  }

  /**
   * The likelihood that this column contains free-form text. A value close to 1 may indicate the
   * column is likely to contain free-form or natural language text. Range in 0-1.
   * @param freeTextScore freeTextScore or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setFreeTextScore(java.lang.Double freeTextScore) {
    this.freeTextScore = freeTextScore;
    return this;
  }

  /**
   * The name of the profile.
   * @return value or {@code null} for none
   */
  public java.lang.String getName() {
    return name;
  }

  /**
   * The name of the profile.
   * @param name name or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setName(java.lang.String name) {
    this.name = name;
    return this;
  }

  /**
   * Other types found within this column. List will be un-ordered.
   * @return value or {@code null} for none
   */
  public java.util.List<GooglePrivacyDlpV2OtherInfoTypeSummary> getOtherMatches() {
    return otherMatches;
  }

  /**
   * Other types found within this column. List will be un-ordered.
   * @param otherMatches otherMatches or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setOtherMatches(java.util.List<GooglePrivacyDlpV2OtherInfoTypeSummary> otherMatches) {
    this.otherMatches = otherMatches;
    return this;
  }

  /**
   * Indicates if a policy tag has been applied to the column.
   * @return value or {@code null} for none
   */
  public java.lang.String getPolicyState() {
    return policyState;
  }

  /**
   * Indicates if a policy tag has been applied to the column.
   * @param policyState policyState or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setPolicyState(java.lang.String policyState) {
    this.policyState = policyState;
    return this;
  }

  /**
   * The last time the profile was generated.
   * @return value or {@code null} for none
   */
  public String getProfileLastGenerated() {
    return profileLastGenerated;
  }

  /**
   * The last time the profile was generated.
   * @param profileLastGenerated profileLastGenerated or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setProfileLastGenerated(String profileLastGenerated) {
    this.profileLastGenerated = profileLastGenerated;
    return this;
  }

  /**
   * Success or error status from the most recent profile generation attempt. May be empty if the
   * profile is still being generated.
   * @return value or {@code null} for none
   */
  public GooglePrivacyDlpV2ProfileStatus getProfileStatus() {
    return profileStatus;
  }

  /**
   * Success or error status from the most recent profile generation attempt. May be empty if the
   * profile is still being generated.
   * @param profileStatus profileStatus or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setProfileStatus(GooglePrivacyDlpV2ProfileStatus profileStatus) {
    this.profileStatus = profileStatus;
    return this;
  }

  /**
   * The sensitivity of this column.
   * @return value or {@code null} for none
   */
  public GooglePrivacyDlpV2SensitivityScore getSensitivityScore() {
    return sensitivityScore;
  }

  /**
   * The sensitivity of this column.
   * @param sensitivityScore sensitivityScore or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setSensitivityScore(GooglePrivacyDlpV2SensitivityScore sensitivityScore) {
    this.sensitivityScore = sensitivityScore;
    return this;
  }

  /**
   * State of a profile.
   * @return value or {@code null} for none
   */
  public java.lang.String getState() {
    return state;
  }

  /**
   * State of a profile.
   * @param state state or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setState(java.lang.String state) {
    this.state = state;
    return this;
  }

  /**
   * The resource name to the table data profile.
   * @return value or {@code null} for none
   */
  public java.lang.String getTableDataProfile() {
    return tableDataProfile;
  }

  /**
   * The resource name to the table data profile.
   * @param tableDataProfile tableDataProfile or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setTableDataProfile(java.lang.String tableDataProfile) {
    this.tableDataProfile = tableDataProfile;
    return this;
  }

  /**
   * The resource name of the table this column is within.
   * @return value or {@code null} for none
   */
  public java.lang.String getTableFullResource() {
    return tableFullResource;
  }

  /**
   * The resource name of the table this column is within.
   * @param tableFullResource tableFullResource or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setTableFullResource(java.lang.String tableFullResource) {
    this.tableFullResource = tableFullResource;
    return this;
  }

  /**
   * The BigQuery table ID.
   * @return value or {@code null} for none
   */
  public java.lang.String getTableId() {
    return tableId;
  }

  /**
   * The BigQuery table ID.
   * @param tableId tableId or {@code null} for none
   */
  public GooglePrivacyDlpV2ColumnDataProfile setTableId(java.lang.String tableId) {
    this.tableId = tableId;
    return this;
  }

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

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

}
