/*
 * LOCKSS Configuration Service REST API
 * REST API of the LOCKSS Configuration Service
 *
 * The version of the OpenAPI document: 2.0.0
 * Contact: lockss-support@lockss.org
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.lockss.laaws.model.cfg;

import com.google.gson.annotations.SerializedName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * The properties of a TDB Archival Unit
 */
@ApiModel(description = "The properties of a TDB Archival Unit")
public class TdbAuWsResult {

  public static final String SERIALIZED_NAME_AU_ID = "auId";
  @SerializedName(SERIALIZED_NAME_AU_ID)
  private String auId;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private String name;

  public static final String SERIALIZED_NAME_PLUGIN_NAME = "pluginName";
  @SerializedName(SERIALIZED_NAME_PLUGIN_NAME)
  private String pluginName;

  public static final String SERIALIZED_NAME_TDB_TITLE = "tdbTitle";
  @SerializedName(SERIALIZED_NAME_TDB_TITLE)
  private TdbTitleWsResult tdbTitle;

  public static final String SERIALIZED_NAME_TDB_PUBLISHER = "tdbPublisher";
  @SerializedName(SERIALIZED_NAME_TDB_PUBLISHER)
  private TdbPublisherWsResult tdbPublisher;

  public static final String SERIALIZED_NAME_DOWN = "down";
  @SerializedName(SERIALIZED_NAME_DOWN)
  private Boolean down;

  public static final String SERIALIZED_NAME_ACTIVE = "active";
  @SerializedName(SERIALIZED_NAME_ACTIVE)
  private Boolean active;

  public static final String SERIALIZED_NAME_PARAMS = "params";
  @SerializedName(SERIALIZED_NAME_PARAMS)
  private Map<String, String> params = new HashMap<>();

  public static final String SERIALIZED_NAME_ATTRS = "attrs";
  @SerializedName(SERIALIZED_NAME_ATTRS)
  private Map<String, String> attrs = new HashMap<>();

  public static final String SERIALIZED_NAME_PROPS = "props";
  @SerializedName(SERIALIZED_NAME_PROPS)
  private Map<String, String> props = new HashMap<>();


  public TdbAuWsResult auId(String auId) {

    this.auId = auId;
    return this;
  }

  /**
   * The identifier of the Archival Unit
   *
   * @return auId
   **/
  @ApiModelProperty(required = true, value = "The identifier of the Archival Unit")

  public String getAuId() {
    return auId;
  }


  public void setAuId(String auId) {
    this.auId = auId;
  }


  public TdbAuWsResult name(String name) {

    this.name = name;
    return this;
  }

  /**
   * The name of the Archival Unit
   *
   * @return name
   **/
  @ApiModelProperty(required = true, value = "The name of the Archival Unit")

  public String getName() {
    return name;
  }


  public void setName(String name) {
    this.name = name;
  }


  public TdbAuWsResult pluginName(String pluginName) {

    this.pluginName = pluginName;
    return this;
  }

  /**
   * The name of the Archival Unit plugin
   *
   * @return pluginName
   **/
  @ApiModelProperty(required = true, value = "The name of the Archival Unit plugin")

  public String getPluginName() {
    return pluginName;
  }


  public void setPluginName(String pluginName) {
    this.pluginName = pluginName;
  }


  public TdbAuWsResult tdbTitle(TdbTitleWsResult tdbTitle) {

    this.tdbTitle = tdbTitle;
    return this;
  }

  /**
   * Get tdbTitle
   *
   * @return tdbTitle
   **/
  @ApiModelProperty(required = true, value = "")

  public TdbTitleWsResult getTdbTitle() {
    return tdbTitle;
  }


  public void setTdbTitle(TdbTitleWsResult tdbTitle) {
    this.tdbTitle = tdbTitle;
  }


  public TdbAuWsResult tdbPublisher(TdbPublisherWsResult tdbPublisher) {

    this.tdbPublisher = tdbPublisher;
    return this;
  }

  /**
   * Get tdbPublisher
   *
   * @return tdbPublisher
   **/
  @ApiModelProperty(required = true, value = "")

  public TdbPublisherWsResult getTdbPublisher() {
    return tdbPublisher;
  }


  public void setTdbPublisher(TdbPublisherWsResult tdbPublisher) {
    this.tdbPublisher = tdbPublisher;
  }


  public TdbAuWsResult down(Boolean down) {

    this.down = down;
    return this;
  }

  /**
   * An indication of whether the AU is marked as down or not
   *
   * @return down
   **/
  @ApiModelProperty(required = true, value = "An indication of whether the AU is marked as down or not")

  public Boolean getDown() {
    return down;
  }


  public void setDown(Boolean down) {
    this.down = down;
  }


  public TdbAuWsResult active(Boolean active) {

    this.active = active;
    return this;
  }

  /**
   * An indication of whether the AU is active or not
   *
   * @return active
   **/
  @ApiModelProperty(required = true, value = "An indication of whether the AU is active or not")

  public Boolean getActive() {
    return active;
  }


  public void setActive(Boolean active) {
    this.active = active;
  }


  public TdbAuWsResult params(Map<String, String> params) {

    this.params = params;
    return this;
  }

  public TdbAuWsResult putParamsItem(String key, String paramsItem) {
    this.params.put(key, paramsItem);
    return this;
  }

  /**
   * The map of Archival Unit parameters
   *
   * @return params
   **/
  @ApiModelProperty(required = true, value = "The map of Archival Unit parameters")

  public Map<String, String> getParams() {
    return params;
  }


  public void setParams(Map<String, String> params) {
    this.params = params;
  }


  public TdbAuWsResult attrs(Map<String, String> attrs) {

    this.attrs = attrs;
    return this;
  }

  public TdbAuWsResult putAttrsItem(String key, String attrsItem) {
    this.attrs.put(key, attrsItem);
    return this;
  }

  /**
   * The map of Archival Unit attributes
   *
   * @return attrs
   **/
  @ApiModelProperty(required = true, value = "The map of Archival Unit attributes")

  public Map<String, String> getAttrs() {
    return attrs;
  }


  public void setAttrs(Map<String, String> attrs) {
    this.attrs = attrs;
  }


  public TdbAuWsResult props(Map<String, String> props) {

    this.props = props;
    return this;
  }

  public TdbAuWsResult putPropsItem(String key, String propsItem) {
    this.props.put(key, propsItem);
    return this;
  }

  /**
   * The map of Archival Unit properties
   *
   * @return props
   **/
  @ApiModelProperty(required = true, value = "The map of Archival Unit properties")

  public Map<String, String> getProps() {
    return props;
  }


  public void setProps(Map<String, String> props) {
    this.props = props;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    TdbAuWsResult tdbAuWsResult = (TdbAuWsResult) o;
    return Objects.equals(this.auId, tdbAuWsResult.auId) &&
      Objects.equals(this.name, tdbAuWsResult.name) &&
      Objects.equals(this.pluginName, tdbAuWsResult.pluginName) &&
      Objects.equals(this.tdbTitle, tdbAuWsResult.tdbTitle) &&
      Objects.equals(this.tdbPublisher, tdbAuWsResult.tdbPublisher) &&
      Objects.equals(this.down, tdbAuWsResult.down) &&
      Objects.equals(this.active, tdbAuWsResult.active) &&
      Objects.equals(this.params, tdbAuWsResult.params) &&
      Objects.equals(this.attrs, tdbAuWsResult.attrs) &&
      Objects.equals(this.props, tdbAuWsResult.props);
  }

  @Override
  public int hashCode() {
    return Objects.hash(auId, name, pluginName, tdbTitle, tdbPublisher, down, active, params, attrs,
      props);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class TdbAuWsResult {\n");
    sb.append("    auId: ").append(toIndentedString(auId)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    pluginName: ").append(toIndentedString(pluginName)).append("\n");
    sb.append("    tdbTitle: ").append(toIndentedString(tdbTitle)).append("\n");
    sb.append("    tdbPublisher: ").append(toIndentedString(tdbPublisher)).append("\n");
    sb.append("    down: ").append(toIndentedString(down)).append("\n");
    sb.append("    active: ").append(toIndentedString(active)).append("\n");
    sb.append("    params: ").append(toIndentedString(params)).append("\n");
    sb.append("    attrs: ").append(toIndentedString(attrs)).append("\n");
    sb.append("    props: ").append(toIndentedString(props)).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(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

