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

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

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

/**
 * SsidOverride Config List
 */
@ApiModel(description = "SsidOverride Config List")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:26:25.576+08:00[Asia/Shanghai]")

public class SsidOverrideConfigOpenApiV2Vo   {
  @JsonProperty("ssidId")
  private String ssidId;

  @JsonProperty("ssidEntryId")
  private Integer ssidEntryId;

  @JsonProperty("ssidName")
  private String ssidName;

  @JsonProperty("ssidPassword")
  private String ssidPassword;

  @JsonProperty("band")
  @Valid
  private List<Integer> band = null;

  @JsonProperty("security")
  private Integer security;

  @JsonProperty("vlanEnable")
  private Boolean vlanEnable;

  @JsonProperty("vlanId")
  private Integer vlanId;

  @JsonProperty("ssidEnable")
  private Boolean ssidEnable;

  public SsidOverrideConfigOpenApiV2Vo ssidId(String ssidId) {
    this.ssidId = ssidId;
    return this;
  }

  /**
   * SSID ID
   * @return ssidId
  */
  @ApiModelProperty(required = true, value = "SSID ID")
  @NotNull


  public String getSsidId() {
    return ssidId;
  }

  public void setSsidId(String ssidId) {
    this.ssidId = ssidId;
  }

  public SsidOverrideConfigOpenApiV2Vo ssidEntryId(Integer ssidEntryId) {
    this.ssidEntryId = ssidEntryId;
    return this;
  }

  /**
   * SSID Entry ID
   * @return ssidEntryId
  */
  @ApiModelProperty(value = "SSID Entry ID")


  public Integer getSsidEntryId() {
    return ssidEntryId;
  }

  public void setSsidEntryId(Integer ssidEntryId) {
    this.ssidEntryId = ssidEntryId;
  }

  public SsidOverrideConfigOpenApiV2Vo ssidName(String ssidName) {
    this.ssidName = ssidName;
    return this;
  }

  /**
   * SSID name. It should contain 1 to 32 UTF-8 characters.
   * @return ssidName
  */
  @ApiModelProperty(required = true, value = "SSID name. It should contain 1 to 32 UTF-8 characters.")
  @NotNull


  public String getSsidName() {
    return ssidName;
  }

  public void setSsidName(String ssidName) {
    this.ssidName = ssidName;
  }

  public SsidOverrideConfigOpenApiV2Vo ssidPassword(String ssidPassword) {
    this.ssidPassword = ssidPassword;
    return this;
  }

  /**
   * SSID password. It should contain 8-63 printable ASCII characters or 8-63 hexadecimal digits.
   * @return ssidPassword
  */
  @ApiModelProperty(value = "SSID password. It should contain 8-63 printable ASCII characters or 8-63 hexadecimal digits.")


  public String getSsidPassword() {
    return ssidPassword;
  }

  public void setSsidPassword(String ssidPassword) {
    this.ssidPassword = ssidPassword;
  }

  public SsidOverrideConfigOpenApiV2Vo band(List<Integer> band) {
    this.band = band;
    return this;
  }

  public SsidOverrideConfigOpenApiV2Vo addBandItem(Integer bandItem) {
    if (this.band == null) {
      this.band = new ArrayList<>();
    }
    this.band.add(bandItem);
    return this;
  }

  /**
   * SSID band should be a value as follows: 0: 2.4GHz; 1: 5GHz; 2: 6GHz
   * @return band
  */
  @ApiModelProperty(value = "SSID band should be a value as follows: 0: 2.4GHz; 1: 5GHz; 2: 6GHz")


  public List<Integer> getBand() {
    return band;
  }

  public void setBand(List<Integer> band) {
    this.band = band;
  }

  public SsidOverrideConfigOpenApiV2Vo security(Integer security) {
    this.security = security;
    return this;
  }

  /**
   * SSID security mode should be a value as follows: 0: None; 2: WPA-Enterprise; 3: WPA-Personal;4: PPSK without RADIUS; 5: PPSK with RADIUS.
   * @return security
  */
  @ApiModelProperty(value = "SSID security mode should be a value as follows: 0: None; 2: WPA-Enterprise; 3: WPA-Personal;4: PPSK without RADIUS; 5: PPSK with RADIUS.")


  public Integer getSecurity() {
    return security;
  }

  public void setSecurity(Integer security) {
    this.security = security;
  }

  public SsidOverrideConfigOpenApiV2Vo vlanEnable(Boolean vlanEnable) {
    this.vlanEnable = vlanEnable;
    return this;
  }

  /**
   * Enable/disable VLAN
   * @return vlanEnable
  */
  @ApiModelProperty(value = "Enable/disable VLAN")


  public Boolean getVlanEnable() {
    return vlanEnable;
  }

  public void setVlanEnable(Boolean vlanEnable) {
    this.vlanEnable = vlanEnable;
  }

  public SsidOverrideConfigOpenApiV2Vo vlanId(Integer vlanId) {
    this.vlanId = vlanId;
    return this;
  }

  /**
   * VLAN ID
   * @return vlanId
  */
  @ApiModelProperty(value = "VLAN ID")


  public Integer getVlanId() {
    return vlanId;
  }

  public void setVlanId(Integer vlanId) {
    this.vlanId = vlanId;
  }

  public SsidOverrideConfigOpenApiV2Vo ssidEnable(Boolean ssidEnable) {
    this.ssidEnable = ssidEnable;
    return this;
  }

  /**
   * Enable/disable SSID
   * @return ssidEnable
  */
  @ApiModelProperty(value = "Enable/disable SSID")


  public Boolean getSsidEnable() {
    return ssidEnable;
  }

  public void setSsidEnable(Boolean ssidEnable) {
    this.ssidEnable = ssidEnable;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidOverrideConfigOpenApiV2Vo ssidOverrideConfigOpenApiV2Vo = (SsidOverrideConfigOpenApiV2Vo) o;
    return Objects.equals(this.ssidId, ssidOverrideConfigOpenApiV2Vo.ssidId) &&
        Objects.equals(this.ssidEntryId, ssidOverrideConfigOpenApiV2Vo.ssidEntryId) &&
        Objects.equals(this.ssidName, ssidOverrideConfigOpenApiV2Vo.ssidName) &&
        Objects.equals(this.ssidPassword, ssidOverrideConfigOpenApiV2Vo.ssidPassword) &&
        Objects.equals(this.band, ssidOverrideConfigOpenApiV2Vo.band) &&
        Objects.equals(this.security, ssidOverrideConfigOpenApiV2Vo.security) &&
        Objects.equals(this.vlanEnable, ssidOverrideConfigOpenApiV2Vo.vlanEnable) &&
        Objects.equals(this.vlanId, ssidOverrideConfigOpenApiV2Vo.vlanId) &&
        Objects.equals(this.ssidEnable, ssidOverrideConfigOpenApiV2Vo.ssidEnable);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ssidId, ssidEntryId, ssidName, ssidPassword, band, security, vlanEnable, vlanId, ssidEnable);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidOverrideConfigOpenApiV2Vo {\n");
    
    sb.append("    ssidId: ").append(toIndentedString(ssidId)).append("\n");
    sb.append("    ssidEntryId: ").append(toIndentedString(ssidEntryId)).append("\n");
    sb.append("    ssidName: ").append(toIndentedString(ssidName)).append("\n");
    sb.append("    ssidPassword: ").append(toIndentedString(ssidPassword)).append("\n");
    sb.append("    band: ").append(toIndentedString(band)).append("\n");
    sb.append("    security: ").append(toIndentedString(security)).append("\n");
    sb.append("    vlanEnable: ").append(toIndentedString(vlanEnable)).append("\n");
    sb.append("    vlanId: ").append(toIndentedString(vlanId)).append("\n");
    sb.append("    ssidEnable: ").append(toIndentedString(ssidEnable)).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    ");
  }
}

