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.Objects;

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

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

  @JsonProperty("name")
  private String name;

  @JsonProperty("band")
  private Integer band;

  @JsonProperty("guestNetEnable")
  private Boolean guestNetEnable;

  @JsonProperty("security")
  private Integer security;

  @JsonProperty("broadcast")
  private Boolean broadcast;

  @JsonProperty("vlanEnable")
  private Boolean vlanEnable;

  @JsonProperty("vlanId")
  private Integer vlanId;

  @JsonProperty("pskSetting")
  private Object pskSetting;

  @JsonProperty("entSetting")
  private Object entSetting;

  @JsonProperty("ppskSetting")
  private Object ppskSetting;

  @JsonProperty("mloEnable")
  private Boolean mloEnable;

  @JsonProperty("pmfMode")
  private Integer pmfMode;

  @JsonProperty("enable11r")
  private Boolean enable11r;

  @JsonProperty("clientRateLimit")
  private Object clientRateLimit;

  @JsonProperty("ssidRateLimit")
  private Object ssidRateLimit;

  @JsonProperty("wlanSchedule")
  private SsidWlanScheduleOpenApiVo wlanSchedule;

  @JsonProperty("rateControl")
  private SsidRateControlOpenApiVo rateControl;

  @JsonProperty("macFilter")
  private SsidMacFilterOpenApiVo macFilter;

  @JsonProperty("multiCast")
  private SsidMultiCastOpenApiVo multiCast;

  @JsonProperty("dhcpOption82")
  private SsidDhcpOptionOpenApiVo dhcpOption82;

  @JsonProperty("deviceType")
  private Integer deviceType;

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

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


  public String getSsidId() {
    return ssidId;
  }

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

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

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


  public String getName() {
    return name;
  }

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

  public SsidDetailOpenApiVo band(Integer band) {
    this.band = band;
    return this;
  }

  /**
   * SSID band. The lowest bit indicates whether 2.4G is included; the second lowest bit indicates whether 5G is included; the third lowest bit indicates whether 6G is included; 1 means included while 0 means not included. For example, 7(111) means that 2G/5G/6G are enabled; 1(001) means that 2G is enabled. (When 5G is included，it means 5G/5G1/5G2 are enabled.)
   * @return band
  */
  @ApiModelProperty(value = "SSID band. The lowest bit indicates whether 2.4G is included; the second lowest bit indicates whether 5G is included; the third lowest bit indicates whether 6G is included; 1 means included while 0 means not included. For example, 7(111) means that 2G/5G/6G are enabled; 1(001) means that 2G is enabled. (When 5G is included，it means 5G/5G1/5G2 are enabled.)")


  public Integer getBand() {
    return band;
  }

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

  public SsidDetailOpenApiVo guestNetEnable(Boolean guestNetEnable) {
    this.guestNetEnable = guestNetEnable;
    return this;
  }

  /**
   * SSID guest network config status. True: enable, false: disable.
   * @return guestNetEnable
  */
  @ApiModelProperty(value = "SSID guest network config status. True: enable, false: disable.")


  public Boolean getGuestNetEnable() {
    return guestNetEnable;
  }

  public void setGuestNetEnable(Boolean guestNetEnable) {
    this.guestNetEnable = guestNetEnable;
  }

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

  /**
   * SSID security mode; Security 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; Security 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 SsidDetailOpenApiVo broadcast(Boolean broadcast) {
    this.broadcast = broadcast;
    return this;
  }

  /**
   * SSID broadcast config status. True: enable, false: disable.
   * @return broadcast
  */
  @ApiModelProperty(value = "SSID broadcast config status. True: enable, false: disable.")


  public Boolean getBroadcast() {
    return broadcast;
  }

  public void setBroadcast(Boolean broadcast) {
    this.broadcast = broadcast;
  }

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

  /**
   * SSID VLAN config status. True: enable, false: disable.
   * @return vlanEnable
  */
  @ApiModelProperty(value = "SSID VLAN config status. True: enable, false: disable.")


  public Boolean getVlanEnable() {
    return vlanEnable;
  }

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

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

  /**
   * SSID VLAN ID. This field is required when Parameter [vlanEnable] is true; It should be within the range of 1–4094.
   * @return vlanId
  */
  @ApiModelProperty(value = "SSID VLAN ID. This field is required when Parameter [vlanEnable] is true; It should be within the range of 1–4094.")


  public Integer getVlanId() {
    return vlanId;
  }

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

  public SsidDetailOpenApiVo pskSetting(Object pskSetting) {
    this.pskSetting = pskSetting;
    return this;
  }

  /**
   * Get pskSetting
   * @return pskSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getPskSetting() {
    return pskSetting;
  }

  public void setPskSetting(Object pskSetting) {
    this.pskSetting = pskSetting;
  }

  public SsidDetailOpenApiVo entSetting(Object entSetting) {
    this.entSetting = entSetting;
    return this;
  }

  /**
   * Get entSetting
   * @return entSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getEntSetting() {
    return entSetting;
  }

  public void setEntSetting(Object entSetting) {
    this.entSetting = entSetting;
  }

  public SsidDetailOpenApiVo ppskSetting(Object ppskSetting) {
    this.ppskSetting = ppskSetting;
    return this;
  }

  /**
   * Get ppskSetting
   * @return ppskSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getPpskSetting() {
    return ppskSetting;
  }

  public void setPpskSetting(Object ppskSetting) {
    this.ppskSetting = ppskSetting;
  }

  public SsidDetailOpenApiVo mloEnable(Boolean mloEnable) {
    this.mloEnable = mloEnable;
    return this;
  }

  /**
   * SSID MLO config status. True: enable, false: disable.
   * @return mloEnable
  */
  @ApiModelProperty(value = "SSID MLO config status. True: enable, false: disable.")


  public Boolean getMloEnable() {
    return mloEnable;
  }

  public void setMloEnable(Boolean mloEnable) {
    this.mloEnable = mloEnable;
  }

  public SsidDetailOpenApiVo pmfMode(Integer pmfMode) {
    this.pmfMode = pmfMode;
    return this;
  }

  /**
   * SSID PMF mode. It should be a value as follows: 1: Mandatory; 2: Capable; 3: Disable.
   * @return pmfMode
  */
  @ApiModelProperty(value = "SSID PMF mode. It should be a value as follows: 1: Mandatory; 2: Capable; 3: Disable.")


  public Integer getPmfMode() {
    return pmfMode;
  }

  public void setPmfMode(Integer pmfMode) {
    this.pmfMode = pmfMode;
  }

  public SsidDetailOpenApiVo enable11r(Boolean enable11r) {
    this.enable11r = enable11r;
    return this;
  }

  /**
   * SSID 802.11r config status. True: enable, false: disable.
   * @return enable11r
  */
  @ApiModelProperty(value = "SSID 802.11r config status. True: enable, false: disable.")


  public Boolean getEnable11r() {
    return enable11r;
  }

  public void setEnable11r(Boolean enable11r) {
    this.enable11r = enable11r;
  }

  public SsidDetailOpenApiVo clientRateLimit(Object clientRateLimit) {
    this.clientRateLimit = clientRateLimit;
    return this;
  }

  /**
   * Get clientRateLimit
   * @return clientRateLimit
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getClientRateLimit() {
    return clientRateLimit;
  }

  public void setClientRateLimit(Object clientRateLimit) {
    this.clientRateLimit = clientRateLimit;
  }

  public SsidDetailOpenApiVo ssidRateLimit(Object ssidRateLimit) {
    this.ssidRateLimit = ssidRateLimit;
    return this;
  }

  /**
   * Get ssidRateLimit
   * @return ssidRateLimit
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getSsidRateLimit() {
    return ssidRateLimit;
  }

  public void setSsidRateLimit(Object ssidRateLimit) {
    this.ssidRateLimit = ssidRateLimit;
  }

  public SsidDetailOpenApiVo wlanSchedule(SsidWlanScheduleOpenApiVo wlanSchedule) {
    this.wlanSchedule = wlanSchedule;
    return this;
  }

  /**
   * Get wlanSchedule
   * @return wlanSchedule
  */
  @ApiModelProperty(value = "")

  @Valid

  public SsidWlanScheduleOpenApiVo getWlanSchedule() {
    return wlanSchedule;
  }

  public void setWlanSchedule(SsidWlanScheduleOpenApiVo wlanSchedule) {
    this.wlanSchedule = wlanSchedule;
  }

  public SsidDetailOpenApiVo rateControl(SsidRateControlOpenApiVo rateControl) {
    this.rateControl = rateControl;
    return this;
  }

  /**
   * Get rateControl
   * @return rateControl
  */
  @ApiModelProperty(value = "")

  @Valid

  public SsidRateControlOpenApiVo getRateControl() {
    return rateControl;
  }

  public void setRateControl(SsidRateControlOpenApiVo rateControl) {
    this.rateControl = rateControl;
  }

  public SsidDetailOpenApiVo macFilter(SsidMacFilterOpenApiVo macFilter) {
    this.macFilter = macFilter;
    return this;
  }

  /**
   * Get macFilter
   * @return macFilter
  */
  @ApiModelProperty(value = "")

  @Valid

  public SsidMacFilterOpenApiVo getMacFilter() {
    return macFilter;
  }

  public void setMacFilter(SsidMacFilterOpenApiVo macFilter) {
    this.macFilter = macFilter;
  }

  public SsidDetailOpenApiVo multiCast(SsidMultiCastOpenApiVo multiCast) {
    this.multiCast = multiCast;
    return this;
  }

  /**
   * Get multiCast
   * @return multiCast
  */
  @ApiModelProperty(value = "")

  @Valid

  public SsidMultiCastOpenApiVo getMultiCast() {
    return multiCast;
  }

  public void setMultiCast(SsidMultiCastOpenApiVo multiCast) {
    this.multiCast = multiCast;
  }

  public SsidDetailOpenApiVo dhcpOption82(SsidDhcpOptionOpenApiVo dhcpOption82) {
    this.dhcpOption82 = dhcpOption82;
    return this;
  }

  /**
   * Get dhcpOption82
   * @return dhcpOption82
  */
  @ApiModelProperty(value = "")

  @Valid

  public SsidDhcpOptionOpenApiVo getDhcpOption82() {
    return dhcpOption82;
  }

  public void setDhcpOption82(SsidDhcpOptionOpenApiVo dhcpOption82) {
    this.dhcpOption82 = dhcpOption82;
  }

  public SsidDetailOpenApiVo deviceType(Integer deviceType) {
    this.deviceType = deviceType;
    return this;
  }

  /**
   * SSID device type, identify which devices this SSID will take effect. The lowest bit indicates whether [EAP] is included, the second low bit indicates whether [Gateway] is included, 1 means included while 0 means not included; For example, 3(11) means that EAP/Gateway is enabled, 1(01) means that EAP is enabled.
   * @return deviceType
  */
  @ApiModelProperty(value = "SSID device type, identify which devices this SSID will take effect. The lowest bit indicates whether [EAP] is included, the second low bit indicates whether [Gateway] is included, 1 means included while 0 means not included; For example, 3(11) means that EAP/Gateway is enabled, 1(01) means that EAP is enabled.")


  public Integer getDeviceType() {
    return deviceType;
  }

  public void setDeviceType(Integer deviceType) {
    this.deviceType = deviceType;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidDetailOpenApiVo ssidDetailOpenApiVo = (SsidDetailOpenApiVo) o;
    return Objects.equals(this.ssidId, ssidDetailOpenApiVo.ssidId) &&
        Objects.equals(this.name, ssidDetailOpenApiVo.name) &&
        Objects.equals(this.band, ssidDetailOpenApiVo.band) &&
        Objects.equals(this.guestNetEnable, ssidDetailOpenApiVo.guestNetEnable) &&
        Objects.equals(this.security, ssidDetailOpenApiVo.security) &&
        Objects.equals(this.broadcast, ssidDetailOpenApiVo.broadcast) &&
        Objects.equals(this.vlanEnable, ssidDetailOpenApiVo.vlanEnable) &&
        Objects.equals(this.vlanId, ssidDetailOpenApiVo.vlanId) &&
        Objects.equals(this.pskSetting, ssidDetailOpenApiVo.pskSetting) &&
        Objects.equals(this.entSetting, ssidDetailOpenApiVo.entSetting) &&
        Objects.equals(this.ppskSetting, ssidDetailOpenApiVo.ppskSetting) &&
        Objects.equals(this.mloEnable, ssidDetailOpenApiVo.mloEnable) &&
        Objects.equals(this.pmfMode, ssidDetailOpenApiVo.pmfMode) &&
        Objects.equals(this.enable11r, ssidDetailOpenApiVo.enable11r) &&
        Objects.equals(this.clientRateLimit, ssidDetailOpenApiVo.clientRateLimit) &&
        Objects.equals(this.ssidRateLimit, ssidDetailOpenApiVo.ssidRateLimit) &&
        Objects.equals(this.wlanSchedule, ssidDetailOpenApiVo.wlanSchedule) &&
        Objects.equals(this.rateControl, ssidDetailOpenApiVo.rateControl) &&
        Objects.equals(this.macFilter, ssidDetailOpenApiVo.macFilter) &&
        Objects.equals(this.multiCast, ssidDetailOpenApiVo.multiCast) &&
        Objects.equals(this.dhcpOption82, ssidDetailOpenApiVo.dhcpOption82) &&
        Objects.equals(this.deviceType, ssidDetailOpenApiVo.deviceType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ssidId, name, band, guestNetEnable, security, broadcast, vlanEnable, vlanId, pskSetting, entSetting, ppskSetting, mloEnable, pmfMode, enable11r, clientRateLimit, ssidRateLimit, wlanSchedule, rateControl, macFilter, multiCast, dhcpOption82, deviceType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidDetailOpenApiVo {\n");
    
    sb.append("    ssidId: ").append(toIndentedString(ssidId)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    band: ").append(toIndentedString(band)).append("\n");
    sb.append("    guestNetEnable: ").append(toIndentedString(guestNetEnable)).append("\n");
    sb.append("    security: ").append(toIndentedString(security)).append("\n");
    sb.append("    broadcast: ").append(toIndentedString(broadcast)).append("\n");
    sb.append("    vlanEnable: ").append(toIndentedString(vlanEnable)).append("\n");
    sb.append("    vlanId: ").append(toIndentedString(vlanId)).append("\n");
    sb.append("    pskSetting: ").append(toIndentedString(pskSetting)).append("\n");
    sb.append("    entSetting: ").append(toIndentedString(entSetting)).append("\n");
    sb.append("    ppskSetting: ").append(toIndentedString(ppskSetting)).append("\n");
    sb.append("    mloEnable: ").append(toIndentedString(mloEnable)).append("\n");
    sb.append("    pmfMode: ").append(toIndentedString(pmfMode)).append("\n");
    sb.append("    enable11r: ").append(toIndentedString(enable11r)).append("\n");
    sb.append("    clientRateLimit: ").append(toIndentedString(clientRateLimit)).append("\n");
    sb.append("    ssidRateLimit: ").append(toIndentedString(ssidRateLimit)).append("\n");
    sb.append("    wlanSchedule: ").append(toIndentedString(wlanSchedule)).append("\n");
    sb.append("    rateControl: ").append(toIndentedString(rateControl)).append("\n");
    sb.append("    macFilter: ").append(toIndentedString(macFilter)).append("\n");
    sb.append("    multiCast: ").append(toIndentedString(multiCast)).append("\n");
    sb.append("    dhcpOption82: ").append(toIndentedString(dhcpOption82)).append("\n");
    sb.append("    deviceType: ").append(toIndentedString(deviceType)).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    ");
  }
}

