/*
 * 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.ApiServiceRef;
import com.cloudera.api.swagger.model.IcebergReplicationSafetyValve;
import com.cloudera.api.swagger.model.SourceStorageFilter;
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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * ApiAtlasReplicationArguments
 */

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiAtlasReplicationArguments {
  @SerializedName("sourceService")
  private ApiServiceRef sourceService = null;

  @SerializedName("sourceStorageFilter")
  private SourceStorageFilter sourceStorageFilter = null;

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

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

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

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

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

  @SerializedName("atlasEntityType")
  private List<String> atlasEntityType = null;

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

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

  public ApiAtlasReplicationArguments sourceService(ApiServiceRef sourceService) {
    this.sourceService = sourceService;
    return this;
  }

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

  public void setSourceService(ApiServiceRef sourceService) {
    this.sourceService = sourceService;
  }

  public ApiAtlasReplicationArguments sourceStorageFilter(SourceStorageFilter sourceStorageFilter) {
    this.sourceStorageFilter = sourceStorageFilter;
    return this;
  }

   /**
   * Get sourceStorageFilter
   * @return sourceStorageFilter
  **/
  @Schema(description = "")
  public SourceStorageFilter getSourceStorageFilter() {
    return sourceStorageFilter;
  }

  public void setSourceStorageFilter(SourceStorageFilter sourceStorageFilter) {
    this.sourceStorageFilter = sourceStorageFilter;
  }

  public ApiAtlasReplicationArguments 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 ApiAtlasReplicationArguments stagingDir(String stagingDir) {
    this.stagingDir = stagingDir;
    return this;
  }

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

  public void setStagingDir(String stagingDir) {
    this.stagingDir = stagingDir;
  }

  public ApiAtlasReplicationArguments atlasEntityRegexPattern(String atlasEntityRegexPattern) {
    this.atlasEntityRegexPattern = atlasEntityRegexPattern;
    return this;
  }

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

  public void setAtlasEntityRegexPattern(String atlasEntityRegexPattern) {
    this.atlasEntityRegexPattern = atlasEntityRegexPattern;
  }

  public ApiAtlasReplicationArguments safetyValvesTarget(Map<String, IcebergReplicationSafetyValve> safetyValvesTarget) {
    this.safetyValvesTarget = safetyValvesTarget;
    return this;
  }

  public ApiAtlasReplicationArguments putSafetyValvesTargetItem(String key, IcebergReplicationSafetyValve safetyValvesTargetItem) {
    if (this.safetyValvesTarget == null) {
      this.safetyValvesTarget = new HashMap<>();
    }
    this.safetyValvesTarget.put(key, safetyValvesTargetItem);
    return this;
  }

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

  public void setSafetyValvesTarget(Map<String, IcebergReplicationSafetyValve> safetyValvesTarget) {
    this.safetyValvesTarget = safetyValvesTarget;
  }

  public ApiAtlasReplicationArguments matchType(String matchType) {
    this.matchType = matchType;
    return this;
  }

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

  public void setMatchType(String matchType) {
    this.matchType = matchType;
  }

  public ApiAtlasReplicationArguments atlasEntityType(List<String> atlasEntityType) {
    this.atlasEntityType = atlasEntityType;
    return this;
  }

  public ApiAtlasReplicationArguments addAtlasEntityTypeItem(String atlasEntityTypeItem) {
    if (this.atlasEntityType == null) {
      this.atlasEntityType = new ArrayList<>();
    }
    this.atlasEntityType.add(atlasEntityTypeItem);
    return this;
  }

   /**
   * Get atlasEntityType
   * @return atlasEntityType
  **/
  @Schema(description = "")
  public List<String> getAtlasEntityType() {
    return atlasEntityType;
  }

  public void setAtlasEntityType(List<String> atlasEntityType) {
    this.atlasEntityType = atlasEntityType;
  }

  public ApiAtlasReplicationArguments skipLineage(Boolean skipLineage) {
    this.skipLineage = skipLineage;
    return this;
  }

   /**
   * Get skipLineage
   * @return skipLineage
  **/
  @Schema(required = true, description = "")
  public Boolean isSkipLineage() {
    return skipLineage;
  }

  public void setSkipLineage(Boolean skipLineage) {
    this.skipLineage = skipLineage;
  }

  public ApiAtlasReplicationArguments fetchType(String fetchType) {
    this.fetchType = fetchType;
    return this;
  }

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

  public void setFetchType(String fetchType) {
    this.fetchType = fetchType;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiAtlasReplicationArguments apiAtlasReplicationArguments = (ApiAtlasReplicationArguments) o;
    return Objects.equals(this.sourceService, apiAtlasReplicationArguments.sourceService) &&
        Objects.equals(this.sourceStorageFilter, apiAtlasReplicationArguments.sourceStorageFilter) &&
        Objects.equals(this.policyName, apiAtlasReplicationArguments.policyName) &&
        Objects.equals(this.stagingDir, apiAtlasReplicationArguments.stagingDir) &&
        Objects.equals(this.atlasEntityRegexPattern, apiAtlasReplicationArguments.atlasEntityRegexPattern) &&
        Objects.equals(this.safetyValvesTarget, apiAtlasReplicationArguments.safetyValvesTarget) &&
        Objects.equals(this.matchType, apiAtlasReplicationArguments.matchType) &&
        Objects.equals(this.atlasEntityType, apiAtlasReplicationArguments.atlasEntityType) &&
        Objects.equals(this.skipLineage, apiAtlasReplicationArguments.skipLineage) &&
        Objects.equals(this.fetchType, apiAtlasReplicationArguments.fetchType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(sourceService, sourceStorageFilter, policyName, stagingDir, atlasEntityRegexPattern, safetyValvesTarget, matchType, atlasEntityType, skipLineage, fetchType);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiAtlasReplicationArguments {\n");
    
    sb.append("    sourceService: ").append(toIndentedString(sourceService)).append("\n");
    sb.append("    sourceStorageFilter: ").append(toIndentedString(sourceStorageFilter)).append("\n");
    sb.append("    policyName: ").append(toIndentedString(policyName)).append("\n");
    sb.append("    stagingDir: ").append(toIndentedString(stagingDir)).append("\n");
    sb.append("    atlasEntityRegexPattern: ").append(toIndentedString(atlasEntityRegexPattern)).append("\n");
    sb.append("    safetyValvesTarget: ").append(toIndentedString(safetyValvesTarget)).append("\n");
    sb.append("    matchType: ").append(toIndentedString(matchType)).append("\n");
    sb.append("    atlasEntityType: ").append(toIndentedString(atlasEntityType)).append("\n");
    sb.append("    skipLineage: ").append(toIndentedString(skipLineage)).append("\n");
    sb.append("    fetchType: ").append(toIndentedString(fetchType)).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    ");
  }

}
