/*
 * 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.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;
/**
 * ApiConfigEnforcement
 */

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

public class ApiConfigEnforcement {
  @SerializedName("label")
  private String label = null;

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

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

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

  public ApiConfigEnforcement label(String label) {
    this.label = label;
    return this;
  }

   /**
   * A label can be used to retrieve a set of configurations where this enforcement is applied. This is currently restricted to only those enums defined in ParamSpecLabel.java.  All these configurations having the same label must be uniform. In other words, all these configurations must accept the same configuration input.  There are two variations. Different configurations may have 1. different units for numeric configurations 2. different separators for list style configurations.
   * @return label
  **/
  @Schema(description = "A label can be used to retrieve a set of configurations where this enforcement is applied. This is currently restricted to only those enums defined in ParamSpecLabel.java.  All these configurations having the same label must be uniform. In other words, all these configurations must accept the same configuration input.  There are two variations. Different configurations may have 1. different units for numeric configurations 2. different separators for list style configurations.")
  public String getLabel() {
    return label;
  }

  public void setLabel(String label) {
    this.label = label;
  }

  public ApiConfigEnforcement defaultValue(String defaultValue) {
    this.defaultValue = defaultValue;
    return this;
  }

   /**
   * The new default value that these configurations should use instead of what is supplied by in Cloudera Manager by default.
   * @return defaultValue
  **/
  @Schema(description = "The new default value that these configurations should use instead of what is supplied by in Cloudera Manager by default.")
  public String getDefaultValue() {
    return defaultValue;
  }

  public void setDefaultValue(String defaultValue) {
    this.defaultValue = defaultValue;
  }

  public ApiConfigEnforcement unit(String unit) {
    this.unit = unit;
    return this;
  }

   /**
   * This can be MILLISECONDS, SECONDS, MINUTES, HOURS, BYTES, KILOBYTES, MEGABYTES, GIGABYTES, PERCENT, PAGES, TIMES, LINES. Optional.
   * @return unit
  **/
  @Schema(description = "This can be MILLISECONDS, SECONDS, MINUTES, HOURS, BYTES, KILOBYTES, MEGABYTES, GIGABYTES, PERCENT, PAGES, TIMES, LINES. Optional.")
  public String getUnit() {
    return unit;
  }

  public void setUnit(String unit) {
    this.unit = unit;
  }

  public ApiConfigEnforcement separator(String separator) {
    this.separator = separator;
    return this;
  }

   /**
   * The new default value could be applied to configurations that require different separators. We need to know the separator the supplied default value has in order to generate the correct default value correctly. Optional.
   * @return separator
  **/
  @Schema(description = "The new default value could be applied to configurations that require different separators. We need to know the separator the supplied default value has in order to generate the correct default value correctly. Optional.")
  public String getSeparator() {
    return separator;
  }

  public void setSeparator(String separator) {
    this.separator = separator;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiConfigEnforcement apiConfigEnforcement = (ApiConfigEnforcement) o;
    return Objects.equals(this.label, apiConfigEnforcement.label) &&
        Objects.equals(this.defaultValue, apiConfigEnforcement.defaultValue) &&
        Objects.equals(this.unit, apiConfigEnforcement.unit) &&
        Objects.equals(this.separator, apiConfigEnforcement.separator);
  }

  @Override
  public int hashCode() {
    return Objects.hash(label, defaultValue, unit, separator);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiConfigEnforcement {\n");
    
    sb.append("    label: ").append(toIndentedString(label)).append("\n");
    sb.append("    defaultValue: ").append(toIndentedString(defaultValue)).append("\n");
    sb.append("    unit: ").append(toIndentedString(unit)).append("\n");
    sb.append("    separator: ").append(toIndentedString(separator)).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    ");
  }

}
