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

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

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

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

public class RadiusProfileOpenApiVo   {
  @JsonProperty("radiusProfileId")
  private String radiusProfileId;

  @JsonProperty("name")
  private String name;

  @JsonProperty("authServer")
  @Valid
  private List<RadiusAuthServerOpenApiVo> authServer = null;

  @JsonProperty("radiusAccountingEnable")
  private Boolean radiusAccountingEnable;

  @JsonProperty("interimUpdateEnable")
  private Boolean interimUpdateEnable;

  @JsonProperty("interimUpdateInterval")
  private Integer interimUpdateInterval;

  @JsonProperty("acctServer")
  @Valid
  private List<RadiusAcctServerOpenApiVo> acctServer = null;

  @JsonProperty("wirelessVlanAssignment")
  private Boolean wirelessVlanAssignment;

  @JsonProperty("domainEnable")
  private Boolean domainEnable;

  @JsonProperty("coaEnable")
  private Boolean coaEnable;

  @JsonProperty("coaPassword")
  private String coaPassword;

  @JsonProperty("builtInServer")
  private Boolean builtInServer;

  @JsonProperty("serverEnable")
  private Boolean serverEnable;

  @JsonProperty("tunnelReplyEnable")
  private Boolean tunnelReplyEnable;

  @JsonProperty("builtInServerSecret")
  private String builtInServerSecret;

  @JsonProperty("ipType")
  private Integer ipType;

  @JsonProperty("customIp")
  private String customIp;

  public RadiusProfileOpenApiVo radiusProfileId(String radiusProfileId) {
    this.radiusProfileId = radiusProfileId;
    return this;
  }

  /**
   * Radius profile ID
   * @return radiusProfileId
  */
  @ApiModelProperty(value = "Radius profile ID")


  public String getRadiusProfileId() {
    return radiusProfileId;
  }

  public void setRadiusProfileId(String radiusProfileId) {
    this.radiusProfileId = radiusProfileId;
  }

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

  /**
   * Radius profile name
   * @return name
  */
  @ApiModelProperty(value = "Radius profile name")


  public String getName() {
    return name;
  }

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

  public RadiusProfileOpenApiVo authServer(List<RadiusAuthServerOpenApiVo> authServer) {
    this.authServer = authServer;
    return this;
  }

  public RadiusProfileOpenApiVo addAuthServerItem(RadiusAuthServerOpenApiVo authServerItem) {
    if (this.authServer == null) {
      this.authServer = new ArrayList<>();
    }
    this.authServer.add(authServerItem);
    return this;
  }

  /**
   * Radius authentication server list
   * @return authServer
  */
  @ApiModelProperty(value = "Radius authentication server list")

  @Valid

  public List<RadiusAuthServerOpenApiVo> getAuthServer() {
    return authServer;
  }

  public void setAuthServer(List<RadiusAuthServerOpenApiVo> authServer) {
    this.authServer = authServer;
  }

  public RadiusProfileOpenApiVo radiusAccountingEnable(Boolean radiusAccountingEnable) {
    this.radiusAccountingEnable = radiusAccountingEnable;
    return this;
  }

  /**
   * Radius accounting enable status
   * @return radiusAccountingEnable
  */
  @ApiModelProperty(value = "Radius accounting enable status")


  public Boolean getRadiusAccountingEnable() {
    return radiusAccountingEnable;
  }

  public void setRadiusAccountingEnable(Boolean radiusAccountingEnable) {
    this.radiusAccountingEnable = radiusAccountingEnable;
  }

  public RadiusProfileOpenApiVo interimUpdateEnable(Boolean interimUpdateEnable) {
    this.interimUpdateEnable = interimUpdateEnable;
    return this;
  }

  /**
   * When radius accounting enables, interval update enable status
   * @return interimUpdateEnable
  */
  @ApiModelProperty(value = "When radius accounting enables, interval update enable status")


  public Boolean getInterimUpdateEnable() {
    return interimUpdateEnable;
  }

  public void setInterimUpdateEnable(Boolean interimUpdateEnable) {
    this.interimUpdateEnable = interimUpdateEnable;
  }

  public RadiusProfileOpenApiVo interimUpdateInterval(Integer interimUpdateInterval) {
    this.interimUpdateInterval = interimUpdateInterval;
    return this;
  }

  /**
   * When interval update enables, interval update duration
   * @return interimUpdateInterval
  */
  @ApiModelProperty(value = "When interval update enables, interval update duration")


  public Integer getInterimUpdateInterval() {
    return interimUpdateInterval;
  }

  public void setInterimUpdateInterval(Integer interimUpdateInterval) {
    this.interimUpdateInterval = interimUpdateInterval;
  }

  public RadiusProfileOpenApiVo acctServer(List<RadiusAcctServerOpenApiVo> acctServer) {
    this.acctServer = acctServer;
    return this;
  }

  public RadiusProfileOpenApiVo addAcctServerItem(RadiusAcctServerOpenApiVo acctServerItem) {
    if (this.acctServer == null) {
      this.acctServer = new ArrayList<>();
    }
    this.acctServer.add(acctServerItem);
    return this;
  }

  /**
   * Radius accounting server list, valid when parameter [radiusAccountingEnable] is true
   * @return acctServer
  */
  @ApiModelProperty(value = "Radius accounting server list, valid when parameter [radiusAccountingEnable] is true")

  @Valid

  public List<RadiusAcctServerOpenApiVo> getAcctServer() {
    return acctServer;
  }

  public void setAcctServer(List<RadiusAcctServerOpenApiVo> acctServer) {
    this.acctServer = acctServer;
  }

  public RadiusProfileOpenApiVo wirelessVlanAssignment(Boolean wirelessVlanAssignment) {
    this.wirelessVlanAssignment = wirelessVlanAssignment;
    return this;
  }

  /**
   * VLAN assignment for wireless network enable status
   * @return wirelessVlanAssignment
  */
  @ApiModelProperty(value = "VLAN assignment for wireless network enable status")


  public Boolean getWirelessVlanAssignment() {
    return wirelessVlanAssignment;
  }

  public void setWirelessVlanAssignment(Boolean wirelessVlanAssignment) {
    this.wirelessVlanAssignment = wirelessVlanAssignment;
  }

  public RadiusProfileOpenApiVo domainEnable(Boolean domainEnable) {
    this.domainEnable = domainEnable;
    return this;
  }

  /**
   * Domain enable status
   * @return domainEnable
  */
  @ApiModelProperty(value = "Domain enable status")


  public Boolean getDomainEnable() {
    return domainEnable;
  }

  public void setDomainEnable(Boolean domainEnable) {
    this.domainEnable = domainEnable;
  }

  public RadiusProfileOpenApiVo coaEnable(Boolean coaEnable) {
    this.coaEnable = coaEnable;
    return this;
  }

  /**
   * Radius CoA enable status. This configuration applies to the Pro Site of the Omada Pro Controller only
   * @return coaEnable
  */
  @ApiModelProperty(value = "Radius CoA enable status. This configuration applies to the Pro Site of the Omada Pro Controller only")


  public Boolean getCoaEnable() {
    return coaEnable;
  }

  public void setCoaEnable(Boolean coaEnable) {
    this.coaEnable = coaEnable;
  }

  public RadiusProfileOpenApiVo coaPassword(String coaPassword) {
    this.coaPassword = coaPassword;
    return this;
  }

  /**
   * Radius CoA password, valid when parameter [coaEnable] is true. This configuration applies to the Pro Site of the Omada Pro Controller only
   * @return coaPassword
  */
  @ApiModelProperty(value = "Radius CoA password, valid when parameter [coaEnable] is true. This configuration applies to the Pro Site of the Omada Pro Controller only")


  public String getCoaPassword() {
    return coaPassword;
  }

  public void setCoaPassword(String coaPassword) {
    this.coaPassword = coaPassword;
  }

  public RadiusProfileOpenApiVo builtInServer(Boolean builtInServer) {
    this.builtInServer = builtInServer;
    return this;
  }

  /**
   * Is this Radius server a built-in server
   * @return builtInServer
  */
  @ApiModelProperty(value = "Is this Radius server a built-in server")


  public Boolean getBuiltInServer() {
    return builtInServer;
  }

  public void setBuiltInServer(Boolean builtInServer) {
    this.builtInServer = builtInServer;
  }

  public RadiusProfileOpenApiVo serverEnable(Boolean serverEnable) {
    this.serverEnable = serverEnable;
    return this;
  }

  /**
   * Built-in Radius server enable status, valid when parameter [builtInServer] is true
   * @return serverEnable
  */
  @ApiModelProperty(value = "Built-in Radius server enable status, valid when parameter [builtInServer] is true")


  public Boolean getServerEnable() {
    return serverEnable;
  }

  public void setServerEnable(Boolean serverEnable) {
    this.serverEnable = serverEnable;
  }

  public RadiusProfileOpenApiVo tunnelReplyEnable(Boolean tunnelReplyEnable) {
    this.tunnelReplyEnable = tunnelReplyEnable;
    return this;
  }

  /**
   * Built-in Radius server tunneled reply enable status, valid when parameter [builtInServer] is true
   * @return tunnelReplyEnable
  */
  @ApiModelProperty(value = "Built-in Radius server tunneled reply enable status, valid when parameter [builtInServer] is true")


  public Boolean getTunnelReplyEnable() {
    return tunnelReplyEnable;
  }

  public void setTunnelReplyEnable(Boolean tunnelReplyEnable) {
    this.tunnelReplyEnable = tunnelReplyEnable;
  }

  public RadiusProfileOpenApiVo builtInServerSecret(String builtInServerSecret) {
    this.builtInServerSecret = builtInServerSecret;
    return this;
  }

  /**
   * Built-in Radius server secret, valid when parameter [builtInServer] is true
   * @return builtInServerSecret
  */
  @ApiModelProperty(value = "Built-in Radius server secret, valid when parameter [builtInServer] is true")


  public String getBuiltInServerSecret() {
    return builtInServerSecret;
  }

  public void setBuiltInServerSecret(String builtInServerSecret) {
    this.builtInServerSecret = builtInServerSecret;
  }

  public RadiusProfileOpenApiVo ipType(Integer ipType) {
    this.ipType = ipType;
    return this;
  }

  /**
   * Built-in Radius server IP type, 0: auto，1: custom, valid when parameter [builtInServer] is true
   * @return ipType
  */
  @ApiModelProperty(value = "Built-in Radius server IP type, 0: auto，1: custom, valid when parameter [builtInServer] is true")


  public Integer getIpType() {
    return ipType;
  }

  public void setIpType(Integer ipType) {
    this.ipType = ipType;
  }

  public RadiusProfileOpenApiVo customIp(String customIp) {
    this.customIp = customIp;
    return this;
  }

  /**
   * Built-in Radius server custom IP, valid when parameter [builtInServer] is true and [ipType] is 1
   * @return customIp
  */
  @ApiModelProperty(value = "Built-in Radius server custom IP, valid when parameter [builtInServer] is true and [ipType] is 1")


  public String getCustomIp() {
    return customIp;
  }

  public void setCustomIp(String customIp) {
    this.customIp = customIp;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    RadiusProfileOpenApiVo radiusProfileOpenApiVo = (RadiusProfileOpenApiVo) o;
    return Objects.equals(this.radiusProfileId, radiusProfileOpenApiVo.radiusProfileId) &&
        Objects.equals(this.name, radiusProfileOpenApiVo.name) &&
        Objects.equals(this.authServer, radiusProfileOpenApiVo.authServer) &&
        Objects.equals(this.radiusAccountingEnable, radiusProfileOpenApiVo.radiusAccountingEnable) &&
        Objects.equals(this.interimUpdateEnable, radiusProfileOpenApiVo.interimUpdateEnable) &&
        Objects.equals(this.interimUpdateInterval, radiusProfileOpenApiVo.interimUpdateInterval) &&
        Objects.equals(this.acctServer, radiusProfileOpenApiVo.acctServer) &&
        Objects.equals(this.wirelessVlanAssignment, radiusProfileOpenApiVo.wirelessVlanAssignment) &&
        Objects.equals(this.domainEnable, radiusProfileOpenApiVo.domainEnable) &&
        Objects.equals(this.coaEnable, radiusProfileOpenApiVo.coaEnable) &&
        Objects.equals(this.coaPassword, radiusProfileOpenApiVo.coaPassword) &&
        Objects.equals(this.builtInServer, radiusProfileOpenApiVo.builtInServer) &&
        Objects.equals(this.serverEnable, radiusProfileOpenApiVo.serverEnable) &&
        Objects.equals(this.tunnelReplyEnable, radiusProfileOpenApiVo.tunnelReplyEnable) &&
        Objects.equals(this.builtInServerSecret, radiusProfileOpenApiVo.builtInServerSecret) &&
        Objects.equals(this.ipType, radiusProfileOpenApiVo.ipType) &&
        Objects.equals(this.customIp, radiusProfileOpenApiVo.customIp);
  }

  @Override
  public int hashCode() {
    return Objects.hash(radiusProfileId, name, authServer, radiusAccountingEnable, interimUpdateEnable, interimUpdateInterval, acctServer, wirelessVlanAssignment, domainEnable, coaEnable, coaPassword, builtInServer, serverEnable, tunnelReplyEnable, builtInServerSecret, ipType, customIp);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class RadiusProfileOpenApiVo {\n");
    
    sb.append("    radiusProfileId: ").append(toIndentedString(radiusProfileId)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    authServer: ").append(toIndentedString(authServer)).append("\n");
    sb.append("    radiusAccountingEnable: ").append(toIndentedString(radiusAccountingEnable)).append("\n");
    sb.append("    interimUpdateEnable: ").append(toIndentedString(interimUpdateEnable)).append("\n");
    sb.append("    interimUpdateInterval: ").append(toIndentedString(interimUpdateInterval)).append("\n");
    sb.append("    acctServer: ").append(toIndentedString(acctServer)).append("\n");
    sb.append("    wirelessVlanAssignment: ").append(toIndentedString(wirelessVlanAssignment)).append("\n");
    sb.append("    domainEnable: ").append(toIndentedString(domainEnable)).append("\n");
    sb.append("    coaEnable: ").append(toIndentedString(coaEnable)).append("\n");
    sb.append("    coaPassword: ").append(toIndentedString(coaPassword)).append("\n");
    sb.append("    builtInServer: ").append(toIndentedString(builtInServer)).append("\n");
    sb.append("    serverEnable: ").append(toIndentedString(serverEnable)).append("\n");
    sb.append("    tunnelReplyEnable: ").append(toIndentedString(tunnelReplyEnable)).append("\n");
    sb.append("    builtInServerSecret: ").append(toIndentedString(builtInServerSecret)).append("\n");
    sb.append("    ipType: ").append(toIndentedString(ipType)).append("\n");
    sb.append("    customIp: ").append(toIndentedString(customIp)).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    ");
  }
}

