/*
 * Cloudera Manager API
 * <h1>Cloudera Manager API v57</h1>       <p>Introduced in Cloudera Manager 7.13.1</p>       <p><a href=\"http://www.cloudera.com/documentation.html\">Cloudera Product Documentation</a></p>
 *
 * OpenAPI spec version: 7.13.1
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */

package com.cloudera.api.swagger.model;

import java.util.Objects;
import java.util.Arrays;
import com.cloudera.api.swagger.model.ApiHive3CloudArguments;
import com.cloudera.api.swagger.model.ApiServiceRef;
import com.cloudera.api.swagger.model.PolicyStatus;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Replication Arguments for Hive3 schedules / policies
 */
@Schema(description = "Replication Arguments for Hive3 schedules / policies")
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiHive3ReplicationArguments {
  @SerializedName("sourceHiveService")
  private ApiServiceRef sourceHiveService = null;

  @SerializedName("status")
  private PolicyStatus status = null;

  @SerializedName("rangerReplication")
  private Boolean rangerReplication = null;

  @SerializedName("atlasReplication")
  private Boolean atlasReplication = null;

  @SerializedName("externalTableReplication")
  private Boolean externalTableReplication = null;

  @SerializedName("externalTableBaseDir")
  private String externalTableBaseDir = null;

  @SerializedName("distcpOnTarget")
  private Boolean distcpOnTarget = null;

  @SerializedName("numMaps")
  private java.math.BigDecimal numMaps = null;

  @SerializedName("bandwidthPerMap")
  private java.math.BigDecimal bandwidthPerMap = null;

  @SerializedName("policyOptions")
  private Map<String, String> policyOptions = null;

  @SerializedName("sourceDbName")
  private String sourceDbName = null;

  @SerializedName("targetDbName")
  private String targetDbName = null;

  @SerializedName("policyName")
  private String policyName = null;

  @SerializedName("scheduleClause")
  private String scheduleClause = null;

  @SerializedName("runAs")
  private String runAs = null;

  @SerializedName("hiveOp")
  private String hiveOp = null;

  @SerializedName("hiveUpdateOp")
  private String hiveUpdateOp = null;

  @SerializedName("excludeSource")
  private Boolean excludeSource = null;

  @SerializedName("excludeTarget")
  private Boolean excludeTarget = null;

  @SerializedName("failoverStatus")
  private String failoverStatus = null;

  @SerializedName("cloudArgs")
  private ApiHive3CloudArguments cloudArgs = null;

  @SerializedName("remoteDbParams")
  private String remoteDbParams = null;

  public ApiHive3ReplicationArguments sourceHiveService(ApiServiceRef sourceHiveService) {
    this.sourceHiveService = sourceHiveService;
    return this;
  }

   /**
   * Get sourceHiveService
   * @return sourceHiveService
  **/
  @Schema(description = "")
  public ApiServiceRef getSourceHiveService() {
    return sourceHiveService;
  }

  public void setSourceHiveService(ApiServiceRef sourceHiveService) {
    this.sourceHiveService = sourceHiveService;
  }

  public ApiHive3ReplicationArguments status(PolicyStatus status) {
    this.status = status;
    return this;
  }

   /**
   * Get status
   * @return status
  **/
  @Schema(description = "")
  public PolicyStatus getStatus() {
    return status;
  }

  public void setStatus(PolicyStatus status) {
    this.status = status;
  }

  public ApiHive3ReplicationArguments rangerReplication(Boolean rangerReplication) {
    this.rangerReplication = rangerReplication;
    return this;
  }

   /**
   * Get rangerReplication
   * @return rangerReplication
  **/
  @Schema(description = "")
  public Boolean isRangerReplication() {
    return rangerReplication;
  }

  public void setRangerReplication(Boolean rangerReplication) {
    this.rangerReplication = rangerReplication;
  }

  public ApiHive3ReplicationArguments atlasReplication(Boolean atlasReplication) {
    this.atlasReplication = atlasReplication;
    return this;
  }

   /**
   * Get atlasReplication
   * @return atlasReplication
  **/
  @Schema(description = "")
  public Boolean isAtlasReplication() {
    return atlasReplication;
  }

  public void setAtlasReplication(Boolean atlasReplication) {
    this.atlasReplication = atlasReplication;
  }

  public ApiHive3ReplicationArguments externalTableReplication(Boolean externalTableReplication) {
    this.externalTableReplication = externalTableReplication;
    return this;
  }

   /**
   * Get externalTableReplication
   * @return externalTableReplication
  **/
  @Schema(description = "")
  public Boolean isExternalTableReplication() {
    return externalTableReplication;
  }

  public void setExternalTableReplication(Boolean externalTableReplication) {
    this.externalTableReplication = externalTableReplication;
  }

  public ApiHive3ReplicationArguments externalTableBaseDir(String externalTableBaseDir) {
    this.externalTableBaseDir = externalTableBaseDir;
    return this;
  }

   /**
   * Get externalTableBaseDir
   * @return externalTableBaseDir
  **/
  @Schema(description = "")
  public String getExternalTableBaseDir() {
    return externalTableBaseDir;
  }

  public void setExternalTableBaseDir(String externalTableBaseDir) {
    this.externalTableBaseDir = externalTableBaseDir;
  }

  public ApiHive3ReplicationArguments distcpOnTarget(Boolean distcpOnTarget) {
    this.distcpOnTarget = distcpOnTarget;
    return this;
  }

   /**
   * Get distcpOnTarget
   * @return distcpOnTarget
  **/
  @Schema(description = "")
  public Boolean isDistcpOnTarget() {
    return distcpOnTarget;
  }

  public void setDistcpOnTarget(Boolean distcpOnTarget) {
    this.distcpOnTarget = distcpOnTarget;
  }

  public ApiHive3ReplicationArguments numMaps(java.math.BigDecimal numMaps) {
    this.numMaps = numMaps;
    return this;
  }

   /**
   * Get numMaps
   * @return numMaps
  **/
  @Schema(description = "")
  public java.math.BigDecimal getNumMaps() {
    return numMaps;
  }

  public void setNumMaps(java.math.BigDecimal numMaps) {
    this.numMaps = numMaps;
  }

  public ApiHive3ReplicationArguments bandwidthPerMap(java.math.BigDecimal bandwidthPerMap) {
    this.bandwidthPerMap = bandwidthPerMap;
    return this;
  }

   /**
   * Get bandwidthPerMap
   * @return bandwidthPerMap
  **/
  @Schema(description = "")
  public java.math.BigDecimal getBandwidthPerMap() {
    return bandwidthPerMap;
  }

  public void setBandwidthPerMap(java.math.BigDecimal bandwidthPerMap) {
    this.bandwidthPerMap = bandwidthPerMap;
  }

  public ApiHive3ReplicationArguments policyOptions(Map<String, String> policyOptions) {
    this.policyOptions = policyOptions;
    return this;
  }

  public ApiHive3ReplicationArguments putPolicyOptionsItem(String key, String policyOptionsItem) {
    if (this.policyOptions == null) {
      this.policyOptions = new HashMap<>();
    }
    this.policyOptions.put(key, policyOptionsItem);
    return this;
  }

   /**
   * Get policyOptions
   * @return policyOptions
  **/
  @Schema(description = "")
  public Map<String, String> getPolicyOptions() {
    return policyOptions;
  }

  public void setPolicyOptions(Map<String, String> policyOptions) {
    this.policyOptions = policyOptions;
  }

  public ApiHive3ReplicationArguments sourceDbName(String sourceDbName) {
    this.sourceDbName = sourceDbName;
    return this;
  }

   /**
   * Get sourceDbName
   * @return sourceDbName
  **/
  @Schema(description = "")
  public String getSourceDbName() {
    return sourceDbName;
  }

  public void setSourceDbName(String sourceDbName) {
    this.sourceDbName = sourceDbName;
  }

  public ApiHive3ReplicationArguments targetDbName(String targetDbName) {
    this.targetDbName = targetDbName;
    return this;
  }

   /**
   * Get targetDbName
   * @return targetDbName
  **/
  @Schema(description = "")
  public String getTargetDbName() {
    return targetDbName;
  }

  public void setTargetDbName(String targetDbName) {
    this.targetDbName = targetDbName;
  }

  public ApiHive3ReplicationArguments policyName(String policyName) {
    this.policyName = policyName;
    return this;
  }

   /**
   * Get policyName
   * @return policyName
  **/
  @Schema(description = "")
  public String getPolicyName() {
    return policyName;
  }

  public void setPolicyName(String policyName) {
    this.policyName = policyName;
  }

  public ApiHive3ReplicationArguments scheduleClause(String scheduleClause) {
    this.scheduleClause = scheduleClause;
    return this;
  }

   /**
   * Get scheduleClause
   * @return scheduleClause
  **/
  @Schema(description = "")
  public String getScheduleClause() {
    return scheduleClause;
  }

  public void setScheduleClause(String scheduleClause) {
    this.scheduleClause = scheduleClause;
  }

  public ApiHive3ReplicationArguments runAs(String runAs) {
    this.runAs = runAs;
    return this;
  }

   /**
   * Get runAs
   * @return runAs
  **/
  @Schema(description = "")
  public String getRunAs() {
    return runAs;
  }

  public void setRunAs(String runAs) {
    this.runAs = runAs;
  }

  public ApiHive3ReplicationArguments hiveOp(String hiveOp) {
    this.hiveOp = hiveOp;
    return this;
  }

   /**
   * Get hiveOp
   * @return hiveOp
  **/
  @Schema(description = "")
  public String getHiveOp() {
    return hiveOp;
  }

  public void setHiveOp(String hiveOp) {
    this.hiveOp = hiveOp;
  }

  public ApiHive3ReplicationArguments hiveUpdateOp(String hiveUpdateOp) {
    this.hiveUpdateOp = hiveUpdateOp;
    return this;
  }

   /**
   * Get hiveUpdateOp
   * @return hiveUpdateOp
  **/
  @Schema(description = "")
  public String getHiveUpdateOp() {
    return hiveUpdateOp;
  }

  public void setHiveUpdateOp(String hiveUpdateOp) {
    this.hiveUpdateOp = hiveUpdateOp;
  }

  public ApiHive3ReplicationArguments excludeSource(Boolean excludeSource) {
    this.excludeSource = excludeSource;
    return this;
  }

   /**
   * Get excludeSource
   * @return excludeSource
  **/
  @Schema(description = "")
  public Boolean isExcludeSource() {
    return excludeSource;
  }

  public void setExcludeSource(Boolean excludeSource) {
    this.excludeSource = excludeSource;
  }

  public ApiHive3ReplicationArguments excludeTarget(Boolean excludeTarget) {
    this.excludeTarget = excludeTarget;
    return this;
  }

   /**
   * Get excludeTarget
   * @return excludeTarget
  **/
  @Schema(description = "")
  public Boolean isExcludeTarget() {
    return excludeTarget;
  }

  public void setExcludeTarget(Boolean excludeTarget) {
    this.excludeTarget = excludeTarget;
  }

  public ApiHive3ReplicationArguments failoverStatus(String failoverStatus) {
    this.failoverStatus = failoverStatus;
    return this;
  }

   /**
   * Get failoverStatus
   * @return failoverStatus
  **/
  @Schema(description = "")
  public String getFailoverStatus() {
    return failoverStatus;
  }

  public void setFailoverStatus(String failoverStatus) {
    this.failoverStatus = failoverStatus;
  }

  public ApiHive3ReplicationArguments cloudArgs(ApiHive3CloudArguments cloudArgs) {
    this.cloudArgs = cloudArgs;
    return this;
  }

   /**
   * Get cloudArgs
   * @return cloudArgs
  **/
  @Schema(description = "")
  public ApiHive3CloudArguments getCloudArgs() {
    return cloudArgs;
  }

  public void setCloudArgs(ApiHive3CloudArguments cloudArgs) {
    this.cloudArgs = cloudArgs;
  }

  public ApiHive3ReplicationArguments remoteDbParams(String remoteDbParams) {
    this.remoteDbParams = remoteDbParams;
    return this;
  }

   /**
   * Get remoteDbParams
   * @return remoteDbParams
  **/
  @Schema(description = "")
  public String getRemoteDbParams() {
    return remoteDbParams;
  }

  public void setRemoteDbParams(String remoteDbParams) {
    this.remoteDbParams = remoteDbParams;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiHive3ReplicationArguments apiHive3ReplicationArguments = (ApiHive3ReplicationArguments) o;
    return Objects.equals(this.sourceHiveService, apiHive3ReplicationArguments.sourceHiveService) &&
        Objects.equals(this.status, apiHive3ReplicationArguments.status) &&
        Objects.equals(this.rangerReplication, apiHive3ReplicationArguments.rangerReplication) &&
        Objects.equals(this.atlasReplication, apiHive3ReplicationArguments.atlasReplication) &&
        Objects.equals(this.externalTableReplication, apiHive3ReplicationArguments.externalTableReplication) &&
        Objects.equals(this.externalTableBaseDir, apiHive3ReplicationArguments.externalTableBaseDir) &&
        Objects.equals(this.distcpOnTarget, apiHive3ReplicationArguments.distcpOnTarget) &&
        Objects.equals(this.numMaps, apiHive3ReplicationArguments.numMaps) &&
        Objects.equals(this.bandwidthPerMap, apiHive3ReplicationArguments.bandwidthPerMap) &&
        Objects.equals(this.policyOptions, apiHive3ReplicationArguments.policyOptions) &&
        Objects.equals(this.sourceDbName, apiHive3ReplicationArguments.sourceDbName) &&
        Objects.equals(this.targetDbName, apiHive3ReplicationArguments.targetDbName) &&
        Objects.equals(this.policyName, apiHive3ReplicationArguments.policyName) &&
        Objects.equals(this.scheduleClause, apiHive3ReplicationArguments.scheduleClause) &&
        Objects.equals(this.runAs, apiHive3ReplicationArguments.runAs) &&
        Objects.equals(this.hiveOp, apiHive3ReplicationArguments.hiveOp) &&
        Objects.equals(this.hiveUpdateOp, apiHive3ReplicationArguments.hiveUpdateOp) &&
        Objects.equals(this.excludeSource, apiHive3ReplicationArguments.excludeSource) &&
        Objects.equals(this.excludeTarget, apiHive3ReplicationArguments.excludeTarget) &&
        Objects.equals(this.failoverStatus, apiHive3ReplicationArguments.failoverStatus) &&
        Objects.equals(this.cloudArgs, apiHive3ReplicationArguments.cloudArgs) &&
        Objects.equals(this.remoteDbParams, apiHive3ReplicationArguments.remoteDbParams);
  }

  @Override
  public int hashCode() {
    return Objects.hash(sourceHiveService, status, rangerReplication, atlasReplication, externalTableReplication, externalTableBaseDir, distcpOnTarget, numMaps, bandwidthPerMap, policyOptions, sourceDbName, targetDbName, policyName, scheduleClause, runAs, hiveOp, hiveUpdateOp, excludeSource, excludeTarget, failoverStatus, cloudArgs, remoteDbParams);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiHive3ReplicationArguments {\n");
    
    sb.append("    sourceHiveService: ").append(toIndentedString(sourceHiveService)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    rangerReplication: ").append(toIndentedString(rangerReplication)).append("\n");
    sb.append("    atlasReplication: ").append(toIndentedString(atlasReplication)).append("\n");
    sb.append("    externalTableReplication: ").append(toIndentedString(externalTableReplication)).append("\n");
    sb.append("    externalTableBaseDir: ").append(toIndentedString(externalTableBaseDir)).append("\n");
    sb.append("    distcpOnTarget: ").append(toIndentedString(distcpOnTarget)).append("\n");
    sb.append("    numMaps: ").append(toIndentedString(numMaps)).append("\n");
    sb.append("    bandwidthPerMap: ").append(toIndentedString(bandwidthPerMap)).append("\n");
    sb.append("    policyOptions: ").append(toIndentedString(policyOptions)).append("\n");
    sb.append("    sourceDbName: ").append(toIndentedString(sourceDbName)).append("\n");
    sb.append("    targetDbName: ").append(toIndentedString(targetDbName)).append("\n");
    sb.append("    policyName: ").append(toIndentedString(policyName)).append("\n");
    sb.append("    scheduleClause: ").append(toIndentedString(scheduleClause)).append("\n");
    sb.append("    runAs: ").append(toIndentedString(runAs)).append("\n");
    sb.append("    hiveOp: ").append(toIndentedString(hiveOp)).append("\n");
    sb.append("    hiveUpdateOp: ").append(toIndentedString(hiveUpdateOp)).append("\n");
    sb.append("    excludeSource: ").append(toIndentedString(excludeSource)).append("\n");
    sb.append("    excludeTarget: ").append(toIndentedString(excludeTarget)).append("\n");
    sb.append("    failoverStatus: ").append(toIndentedString(failoverStatus)).append("\n");
    sb.append("    cloudArgs: ").append(toIndentedString(cloudArgs)).append("\n");
    sb.append("    remoteDbParams: ").append(toIndentedString(remoteDbParams)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
