/*
 * 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.clouddms.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 DataMigrationService client bean */
@Generated("by google-cloud-spring-generator")
@BetaApi("Autogenerated Spring autoconfiguration is not yet stable")
@ConfigurationProperties("com.google.cloud.clouddms.v1.data-migration-service")
public class DataMigrationServiceSpringProperties 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 listMigrationJobs. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listMigrationJobsRetry;
  /**
   * Allow override of retry settings at method-level for getMigrationJob. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getMigrationJobRetry;
  /**
   * Allow override of retry settings at method-level for generateSshScript. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry generateSshScriptRetry;
  /**
   * Allow override of retry settings at method-level for listConnectionProfiles. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listConnectionProfilesRetry;
  /**
   * Allow override of retry settings at method-level for getConnectionProfile. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getConnectionProfileRetry;
  /**
   * Allow override of retry settings at method-level for getPrivateConnection. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getPrivateConnectionRetry;
  /**
   * Allow override of retry settings at method-level for listPrivateConnections. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listPrivateConnectionsRetry;
  /**
   * Allow override of retry settings at method-level for getConversionWorkspace. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getConversionWorkspaceRetry;
  /**
   * Allow override of retry settings at method-level for listConversionWorkspaces. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listConversionWorkspacesRetry;
  /**
   * Allow override of retry settings at method-level for describeDatabaseEntities. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry describeDatabaseEntitiesRetry;
  /**
   * Allow override of retry settings at method-level for searchBackgroundJobs. If defined, this
   * takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry searchBackgroundJobsRetry;
  /**
   * Allow override of retry settings at method-level for describeConversionWorkspaceRevisions. If
   * defined, this takes precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry describeConversionWorkspaceRevisionsRetry;
  /**
   * Allow override of retry settings at method-level for fetchStaticIps. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry fetchStaticIpsRetry;

  @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 getListMigrationJobsRetry() {
    return this.listMigrationJobsRetry;
  }

  public void setListMigrationJobsRetry(Retry listMigrationJobsRetry) {
    this.listMigrationJobsRetry = listMigrationJobsRetry;
  }

  public Retry getGetMigrationJobRetry() {
    return this.getMigrationJobRetry;
  }

  public void setGetMigrationJobRetry(Retry getMigrationJobRetry) {
    this.getMigrationJobRetry = getMigrationJobRetry;
  }

  public Retry getGenerateSshScriptRetry() {
    return this.generateSshScriptRetry;
  }

  public void setGenerateSshScriptRetry(Retry generateSshScriptRetry) {
    this.generateSshScriptRetry = generateSshScriptRetry;
  }

  public Retry getListConnectionProfilesRetry() {
    return this.listConnectionProfilesRetry;
  }

  public void setListConnectionProfilesRetry(Retry listConnectionProfilesRetry) {
    this.listConnectionProfilesRetry = listConnectionProfilesRetry;
  }

  public Retry getGetConnectionProfileRetry() {
    return this.getConnectionProfileRetry;
  }

  public void setGetConnectionProfileRetry(Retry getConnectionProfileRetry) {
    this.getConnectionProfileRetry = getConnectionProfileRetry;
  }

  public Retry getGetPrivateConnectionRetry() {
    return this.getPrivateConnectionRetry;
  }

  public void setGetPrivateConnectionRetry(Retry getPrivateConnectionRetry) {
    this.getPrivateConnectionRetry = getPrivateConnectionRetry;
  }

  public Retry getListPrivateConnectionsRetry() {
    return this.listPrivateConnectionsRetry;
  }

  public void setListPrivateConnectionsRetry(Retry listPrivateConnectionsRetry) {
    this.listPrivateConnectionsRetry = listPrivateConnectionsRetry;
  }

  public Retry getGetConversionWorkspaceRetry() {
    return this.getConversionWorkspaceRetry;
  }

  public void setGetConversionWorkspaceRetry(Retry getConversionWorkspaceRetry) {
    this.getConversionWorkspaceRetry = getConversionWorkspaceRetry;
  }

  public Retry getListConversionWorkspacesRetry() {
    return this.listConversionWorkspacesRetry;
  }

  public void setListConversionWorkspacesRetry(Retry listConversionWorkspacesRetry) {
    this.listConversionWorkspacesRetry = listConversionWorkspacesRetry;
  }

  public Retry getDescribeDatabaseEntitiesRetry() {
    return this.describeDatabaseEntitiesRetry;
  }

  public void setDescribeDatabaseEntitiesRetry(Retry describeDatabaseEntitiesRetry) {
    this.describeDatabaseEntitiesRetry = describeDatabaseEntitiesRetry;
  }

  public Retry getSearchBackgroundJobsRetry() {
    return this.searchBackgroundJobsRetry;
  }

  public void setSearchBackgroundJobsRetry(Retry searchBackgroundJobsRetry) {
    this.searchBackgroundJobsRetry = searchBackgroundJobsRetry;
  }

  public Retry getDescribeConversionWorkspaceRevisionsRetry() {
    return this.describeConversionWorkspaceRevisionsRetry;
  }

  public void setDescribeConversionWorkspaceRevisionsRetry(
      Retry describeConversionWorkspaceRevisionsRetry) {
    this.describeConversionWorkspaceRevisionsRetry = describeConversionWorkspaceRevisionsRetry;
  }

  public Retry getFetchStaticIpsRetry() {
    return this.fetchStaticIpsRetry;
  }

  public void setFetchStaticIpsRetry(Retry fetchStaticIpsRetry) {
    this.fetchStaticIpsRetry = fetchStaticIpsRetry;
  }
}
