/*
 * 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.ApiOzoneBucketRef;
import com.cloudera.api.swagger.model.ApiOzoneResultSpec;
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;
/**
 * Reference to an Ozone snapshot diff between two snapshots or between a snapshot and current bucket state (in that case #snapshotToName can be empty or null).
 */
@Schema(description = "Reference to an Ozone snapshot diff between two snapshots or between a snapshot and current bucket state (in that case #snapshotToName can be empty or null).")
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2026-05-19T08:29:59.033Z[Etc/UTC]")

public class ApiOzoneSnapshotDiffReq {
  @SerializedName("snapshotFromName")
  private String snapshotFromName = null;

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

  @SerializedName("bucketRef")
  private ApiOzoneBucketRef bucketRef = null;

  @SerializedName("result")
  private ApiOzoneResultSpec result = null;

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

  public ApiOzoneSnapshotDiffReq snapshotFromName(String snapshotFromName) {
    this.snapshotFromName = snapshotFromName;
    return this;
  }

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

  public void setSnapshotFromName(String snapshotFromName) {
    this.snapshotFromName = snapshotFromName;
  }

  public ApiOzoneSnapshotDiffReq snapshotToName(String snapshotToName) {
    this.snapshotToName = snapshotToName;
    return this;
  }

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

  public void setSnapshotToName(String snapshotToName) {
    this.snapshotToName = snapshotToName;
  }

  public ApiOzoneSnapshotDiffReq bucketRef(ApiOzoneBucketRef bucketRef) {
    this.bucketRef = bucketRef;
    return this;
  }

   /**
   * Get bucketRef
   * @return bucketRef
  **/
  @Schema(description = "")
  public ApiOzoneBucketRef getBucketRef() {
    return bucketRef;
  }

  public void setBucketRef(ApiOzoneBucketRef bucketRef) {
    this.bucketRef = bucketRef;
  }

  public ApiOzoneSnapshotDiffReq result(ApiOzoneResultSpec result) {
    this.result = result;
    return this;
  }

   /**
   * Get result
   * @return result
  **/
  @Schema(description = "")
  public ApiOzoneResultSpec getResult() {
    return result;
  }

  public void setResult(ApiOzoneResultSpec result) {
    this.result = result;
  }

  public ApiOzoneSnapshotDiffReq proxyUser(String proxyUser) {
    this.proxyUser = proxyUser;
    return this;
  }

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

  public void setProxyUser(String proxyUser) {
    this.proxyUser = proxyUser;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiOzoneSnapshotDiffReq apiOzoneSnapshotDiffReq = (ApiOzoneSnapshotDiffReq) o;
    return Objects.equals(this.snapshotFromName, apiOzoneSnapshotDiffReq.snapshotFromName) &&
        Objects.equals(this.snapshotToName, apiOzoneSnapshotDiffReq.snapshotToName) &&
        Objects.equals(this.bucketRef, apiOzoneSnapshotDiffReq.bucketRef) &&
        Objects.equals(this.result, apiOzoneSnapshotDiffReq.result) &&
        Objects.equals(this.proxyUser, apiOzoneSnapshotDiffReq.proxyUser);
  }

  @Override
  public int hashCode() {
    return Objects.hash(snapshotFromName, snapshotToName, bucketRef, result, proxyUser);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiOzoneSnapshotDiffReq {\n");
    
    sb.append("    snapshotFromName: ").append(toIndentedString(snapshotFromName)).append("\n");
    sb.append("    snapshotToName: ").append(toIndentedString(snapshotToName)).append("\n");
    sb.append("    bucketRef: ").append(toIndentedString(bucketRef)).append("\n");
    sb.append("    result: ").append(toIndentedString(result)).append("\n");
    sb.append("    proxyUser: ").append(toIndentedString(proxyUser)).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    ");
  }

}
