/*
 * Copyright 2023 Google LLC
 *
 * 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
 *
 *      https://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.
 */

package com.google.cloud.aiplatform.v1.spring;

import com.google.api.core.BetaApi;
import com.google.cloud.spring.core.Credentials;
import com.google.cloud.spring.core.CredentialsSupplier;
import com.google.cloud.spring.core.Retry;
import javax.annotation.Generated;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

// AUTO-GENERATED DOCUMENTATION AND CLASS.
/** Provides default property values for VizierService client bean */
@Generated("by google-cloud-spring-generator")
@BetaApi("Autogenerated Spring autoconfiguration is not yet stable")
@ConfigurationProperties("com.google.cloud.aiplatform.v1.vizier-service")
public class VizierServiceSpringProperties implements CredentialsSupplier {
  /** OAuth2 credentials to authenticate and authorize calls to Google Cloud Client Libraries. */
  @NestedConfigurationProperty
  private final Credentials credentials =
      new Credentials("https://www.googleapis.com/auth/cloud-platform");
  /** Quota project to use for billing. */
  private String quotaProjectId;
  /** Number of threads used for executors. */
  private Integer executorThreadCount;
  /** Allow override of retry settings at service level, applying to all of its RPC methods. */
  @NestedConfigurationProperty private Retry retry;
  /**
   * Allow override of retry settings at method-level for createStudy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry createStudyRetry;
  /**
   * Allow override of retry settings at method-level for getStudy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getStudyRetry;
  /**
   * Allow override of retry settings at method-level for listStudies. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listStudiesRetry;
  /**
   * Allow override of retry settings at method-level for deleteStudy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry deleteStudyRetry;
  /**
   * Allow override of retry settings at method-level for lookupStudy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry lookupStudyRetry;
  /**
   * Allow override of retry settings at method-level for createTrial. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry createTrialRetry;
  /**
   * Allow override of retry settings at method-level for getTrial. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getTrialRetry;
  /**
   * Allow override of retry settings at method-level for listTrials. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listTrialsRetry;
  /**
   * Allow override of retry settings at method-level for addTrialMeasurement. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry addTrialMeasurementRetry;
  /**
   * Allow override of retry settings at method-level for completeTrial. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry completeTrialRetry;
  /**
   * Allow override of retry settings at method-level for deleteTrial. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry deleteTrialRetry;
  /**
   * Allow override of retry settings at method-level for stopTrial. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry stopTrialRetry;
  /**
   * Allow override of retry settings at method-level for listOptimalTrials. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listOptimalTrialsRetry;
  /**
   * Allow override of retry settings at method-level for listLocations. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listLocationsRetry;
  /**
   * Allow override of retry settings at method-level for getLocation. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getLocationRetry;
  /**
   * Allow override of retry settings at method-level for setIamPolicy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry setIamPolicyRetry;
  /**
   * Allow override of retry settings at method-level for getIamPolicy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getIamPolicyRetry;
  /**
   * Allow override of retry settings at method-level for testIamPermissions. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry testIamPermissionsRetry;

  @Override
  public Credentials getCredentials() {
    return this.credentials;
  }

  public String getQuotaProjectId() {
    return this.quotaProjectId;
  }

  public void setQuotaProjectId(String quotaProjectId) {
    this.quotaProjectId = quotaProjectId;
  }

  public Integer getExecutorThreadCount() {
    return this.executorThreadCount;
  }

  public void setExecutorThreadCount(Integer executorThreadCount) {
    this.executorThreadCount = executorThreadCount;
  }

  public Retry getRetry() {
    return this.retry;
  }

  public void setRetry(Retry retry) {
    this.retry = retry;
  }

  public Retry getCreateStudyRetry() {
    return this.createStudyRetry;
  }

  public void setCreateStudyRetry(Retry createStudyRetry) {
    this.createStudyRetry = createStudyRetry;
  }

  public Retry getGetStudyRetry() {
    return this.getStudyRetry;
  }

  public void setGetStudyRetry(Retry getStudyRetry) {
    this.getStudyRetry = getStudyRetry;
  }

  public Retry getListStudiesRetry() {
    return this.listStudiesRetry;
  }

  public void setListStudiesRetry(Retry listStudiesRetry) {
    this.listStudiesRetry = listStudiesRetry;
  }

  public Retry getDeleteStudyRetry() {
    return this.deleteStudyRetry;
  }

  public void setDeleteStudyRetry(Retry deleteStudyRetry) {
    this.deleteStudyRetry = deleteStudyRetry;
  }

  public Retry getLookupStudyRetry() {
    return this.lookupStudyRetry;
  }

  public void setLookupStudyRetry(Retry lookupStudyRetry) {
    this.lookupStudyRetry = lookupStudyRetry;
  }

  public Retry getCreateTrialRetry() {
    return this.createTrialRetry;
  }

  public void setCreateTrialRetry(Retry createTrialRetry) {
    this.createTrialRetry = createTrialRetry;
  }

  public Retry getGetTrialRetry() {
    return this.getTrialRetry;
  }

  public void setGetTrialRetry(Retry getTrialRetry) {
    this.getTrialRetry = getTrialRetry;
  }

  public Retry getListTrialsRetry() {
    return this.listTrialsRetry;
  }

  public void setListTrialsRetry(Retry listTrialsRetry) {
    this.listTrialsRetry = listTrialsRetry;
  }

  public Retry getAddTrialMeasurementRetry() {
    return this.addTrialMeasurementRetry;
  }

  public void setAddTrialMeasurementRetry(Retry addTrialMeasurementRetry) {
    this.addTrialMeasurementRetry = addTrialMeasurementRetry;
  }

  public Retry getCompleteTrialRetry() {
    return this.completeTrialRetry;
  }

  public void setCompleteTrialRetry(Retry completeTrialRetry) {
    this.completeTrialRetry = completeTrialRetry;
  }

  public Retry getDeleteTrialRetry() {
    return this.deleteTrialRetry;
  }

  public void setDeleteTrialRetry(Retry deleteTrialRetry) {
    this.deleteTrialRetry = deleteTrialRetry;
  }

  public Retry getStopTrialRetry() {
    return this.stopTrialRetry;
  }

  public void setStopTrialRetry(Retry stopTrialRetry) {
    this.stopTrialRetry = stopTrialRetry;
  }

  public Retry getListOptimalTrialsRetry() {
    return this.listOptimalTrialsRetry;
  }

  public void setListOptimalTrialsRetry(Retry listOptimalTrialsRetry) {
    this.listOptimalTrialsRetry = listOptimalTrialsRetry;
  }

  public Retry getListLocationsRetry() {
    return this.listLocationsRetry;
  }

  public void setListLocationsRetry(Retry listLocationsRetry) {
    this.listLocationsRetry = listLocationsRetry;
  }

  public Retry getGetLocationRetry() {
    return this.getLocationRetry;
  }

  public void setGetLocationRetry(Retry getLocationRetry) {
    this.getLocationRetry = getLocationRetry;
  }

  public Retry getSetIamPolicyRetry() {
    return this.setIamPolicyRetry;
  }

  public void setSetIamPolicyRetry(Retry setIamPolicyRetry) {
    this.setIamPolicyRetry = setIamPolicyRetry;
  }

  public Retry getGetIamPolicyRetry() {
    return this.getIamPolicyRetry;
  }

  public void setGetIamPolicyRetry(Retry getIamPolicyRetry) {
    this.getIamPolicyRetry = getIamPolicyRetry;
  }

  public Retry getTestIamPermissionsRetry() {
    return this.testIamPermissionsRetry;
  }

  public void setTestIamPermissionsRetry(Retry testIamPermissionsRetry) {
    this.testIamPermissionsRetry = testIamPermissionsRetry;
  }
}
