package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * OtoNatOpenApiVo
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class OtoNatOpenApiVo   {
  @JsonProperty("name")
  private String name;

  @JsonProperty("status")
  private Boolean status;

  @JsonProperty("interfaceIds")
  @Valid
  private List<String> interfaceIds = new ArrayList<>();

  @JsonProperty("internalIp")
  private String internalIp;

  @JsonProperty("externalIp")
  private String externalIp;

  @JsonProperty("dmz")
  private Boolean dmz;

  @JsonProperty("description")
  private String description;

  public OtoNatOpenApiVo name(String name) {
    this.name = name;
    return this;
  }

  /**
   * Name, name should contain 1 to 64 characters.
   * @return name
  */
  @ApiModelProperty(required = true, value = "Name, name should contain 1 to 64 characters.")
  @NotNull

@Pattern(regexp="^[^ ]$|^[^ ].{0,62}[^ ]$") 
  public String getName() {
    return name;
  }

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

  public OtoNatOpenApiVo status(Boolean status) {
    this.status = status;
    return this;
  }

  /**
   * Status
   * @return status
  */
  @ApiModelProperty(required = true, value = "Status")
  @NotNull


  public Boolean getStatus() {
    return status;
  }

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

  public OtoNatOpenApiVo interfaceIds(List<String> interfaceIds) {
    this.interfaceIds = interfaceIds;
    return this;
  }

  public OtoNatOpenApiVo addInterfaceIdsItem(String interfaceIdsItem) {
    this.interfaceIds.add(interfaceIdsItem);
    return this;
  }

  /**
   * This field represents WAN port ID. WAN port ID can be obtained from can be obtained from 'Get internet basic info' interface.
   * @return interfaceIds
  */
  @ApiModelProperty(required = true, value = "This field represents WAN port ID. WAN port ID can be obtained from can be obtained from 'Get internet basic info' interface.")
  @NotNull


  public List<String> getInterfaceIds() {
    return interfaceIds;
  }

  public void setInterfaceIds(List<String> interfaceIds) {
    this.interfaceIds = interfaceIds;
  }

  public OtoNatOpenApiVo internalIp(String internalIp) {
    this.internalIp = internalIp;
    return this;
  }

  /**
   * Internal IP
   * @return internalIp
  */
  @ApiModelProperty(required = true, value = "Internal IP")
  @NotNull


  public String getInternalIp() {
    return internalIp;
  }

  public void setInternalIp(String internalIp) {
    this.internalIp = internalIp;
  }

  public OtoNatOpenApiVo externalIp(String externalIp) {
    this.externalIp = externalIp;
    return this;
  }

  /**
   * External IP
   * @return externalIp
  */
  @ApiModelProperty(required = true, value = "External IP")
  @NotNull


  public String getExternalIp() {
    return externalIp;
  }

  public void setExternalIp(String externalIp) {
    this.externalIp = externalIp;
  }

  public OtoNatOpenApiVo dmz(Boolean dmz) {
    this.dmz = dmz;
    return this;
  }

  /**
   * Whether to enable the h323 dmz
   * @return dmz
  */
  @ApiModelProperty(required = true, value = "Whether to enable the h323 dmz")
  @NotNull


  public Boolean getDmz() {
    return dmz;
  }

  public void setDmz(Boolean dmz) {
    this.dmz = dmz;
  }

  public OtoNatOpenApiVo description(String description) {
    this.description = description;
    return this;
  }

  /**
   * Description should contain 1 to 64 characters.
   * @return description
  */
  @ApiModelProperty(value = "Description should contain 1 to 64 characters.")

@Pattern(regexp="^$|^[^ ]$|^[^ ].{0,62}[^ ]$") 
  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    OtoNatOpenApiVo otoNatOpenApiVo = (OtoNatOpenApiVo) o;
    return Objects.equals(this.name, otoNatOpenApiVo.name) &&
        Objects.equals(this.status, otoNatOpenApiVo.status) &&
        Objects.equals(this.interfaceIds, otoNatOpenApiVo.interfaceIds) &&
        Objects.equals(this.internalIp, otoNatOpenApiVo.internalIp) &&
        Objects.equals(this.externalIp, otoNatOpenApiVo.externalIp) &&
        Objects.equals(this.dmz, otoNatOpenApiVo.dmz) &&
        Objects.equals(this.description, otoNatOpenApiVo.description);
  }

  @Override
  public int hashCode() {
    return Objects.hash(name, status, interfaceIds, internalIp, externalIp, dmz, description);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class OtoNatOpenApiVo {\n");
    
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    interfaceIds: ").append(toIndentedString(interfaceIds)).append("\n");
    sb.append("    internalIp: ").append(toIndentedString(internalIp)).append("\n");
    sb.append("    externalIp: ").append(toIndentedString(externalIp)).append("\n");
    sb.append("    dmz: ").append(toIndentedString(dmz)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).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    ");
  }
}

