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

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

import javax.validation.constraints.NotNull;
import java.util.Objects;

/**
 * WPA-Personal SSID config. This is necessary when the value of security is 3(WPA-Personal), 4(PPSK without RADIUS), 5(PPSK with RADIUS).
 */
@ApiModel(description = "WPA-Personal SSID config. This is necessary when the value of security is 3(WPA-Personal), 4(PPSK without RADIUS), 5(PPSK with RADIUS).")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class SsidPskSettingOpenApiVo   {
  @JsonProperty("securityKey")
  private String securityKey;

  @JsonProperty("versionPsk")
  private Integer versionPsk;

  @JsonProperty("encryptionPsk")
  private Integer encryptionPsk;

  @JsonProperty("gikRekeyPskEnable")
  private Boolean gikRekeyPskEnable;

  @JsonProperty("rekeyPskInterval")
  private Integer rekeyPskInterval;

  @JsonProperty("intervalPskType")
  private Integer intervalPskType;

  public SsidPskSettingOpenApiVo securityKey(String securityKey) {
    this.securityKey = securityKey;
    return this;
  }

  /**
   * WPA-Personal SSID password. This is necessary when the value of security is 3(WPA-Personal);It should contain 8-63 printable ASCII characters or 8-63 hexadecimal digits.
   * @return securityKey
  */
  @ApiModelProperty(required = true, value = "WPA-Personal SSID password. This is necessary when the value of security is 3(WPA-Personal);It should contain 8-63 printable ASCII characters or 8-63 hexadecimal digits.")
  @NotNull


  public String getSecurityKey() {
    return securityKey;
  }

  public void setSecurityKey(String securityKey) {
    this.securityKey = securityKey;
  }

  public SsidPskSettingOpenApiVo versionPsk(Integer versionPsk) {
    this.versionPsk = versionPsk;
    return this;
  }

  /**
   * WPA-Personal version. This is necessary when the value of security is 3(WPA-Personal); It should be a value as follows: 1: WPA-PSK; 2: WPA2-PSK; 3: WPA/WPA2-PSK; 4: WPA3-SAE.
   * @return versionPsk
  */
  @ApiModelProperty(required = true, value = "WPA-Personal version. This is necessary when the value of security is 3(WPA-Personal); It should be a value as follows: 1: WPA-PSK; 2: WPA2-PSK; 3: WPA/WPA2-PSK; 4: WPA3-SAE.")
  @NotNull


  public Integer getVersionPsk() {
    return versionPsk;
  }

  public void setVersionPsk(Integer versionPsk) {
    this.versionPsk = versionPsk;
  }

  public SsidPskSettingOpenApiVo encryptionPsk(Integer encryptionPsk) {
    this.encryptionPsk = encryptionPsk;
    return this;
  }

  /**
   * WPA-Personal encryption. This is necessary when the value of security is 3(WPA-Personal); It should be a value as follows: 1: Auto; 3: AES; When versionPsk is WPA3-SAE, Parameter [encryptionPsk] must be AES.
   * @return encryptionPsk
  */
  @ApiModelProperty(required = true, value = "WPA-Personal encryption. This is necessary when the value of security is 3(WPA-Personal); It should be a value as follows: 1: Auto; 3: AES; When versionPsk is WPA3-SAE, Parameter [encryptionPsk] must be AES.")
  @NotNull


  public Integer getEncryptionPsk() {
    return encryptionPsk;
  }

  public void setEncryptionPsk(Integer encryptionPsk) {
    this.encryptionPsk = encryptionPsk;
  }

  public SsidPskSettingOpenApiVo gikRekeyPskEnable(Boolean gikRekeyPskEnable) {
    this.gikRekeyPskEnable = gikRekeyPskEnable;
    return this;
  }

  /**
   * WPA-Personal SSID group key update period config status. True: enable, false: disable.
   * @return gikRekeyPskEnable
  */
  @ApiModelProperty(required = true, value = "WPA-Personal SSID group key update period config status. True: enable, false: disable.")
  @NotNull


  public Boolean getGikRekeyPskEnable() {
    return gikRekeyPskEnable;
  }

  public void setGikRekeyPskEnable(Boolean gikRekeyPskEnable) {
    this.gikRekeyPskEnable = gikRekeyPskEnable;
  }

  public SsidPskSettingOpenApiVo rekeyPskInterval(Integer rekeyPskInterval) {
    this.rekeyPskInterval = rekeyPskInterval;
    return this;
  }

  /**
   * WPA-Personal SSID group key update period interval config. When the value of Parameter [intervalPskType] is 0 (Seconds), it should be within the range of 30-86400; when the value of Parameter [intervalPskType] is 1 (Minutes), it should be within the range of 1-1440; when the value of Parameter [intervalPskType] is 2 (Hours), it should be within the range of 1-24.
   * @return rekeyPskInterval
  */
  @ApiModelProperty(value = "WPA-Personal SSID group key update period interval config. When the value of Parameter [intervalPskType] is 0 (Seconds), it should be within the range of 30-86400; when the value of Parameter [intervalPskType] is 1 (Minutes), it should be within the range of 1-1440; when the value of Parameter [intervalPskType] is 2 (Hours), it should be within the range of 1-24.")


  public Integer getRekeyPskInterval() {
    return rekeyPskInterval;
  }

  public void setRekeyPskInterval(Integer rekeyPskInterval) {
    this.rekeyPskInterval = rekeyPskInterval;
  }

  public SsidPskSettingOpenApiVo intervalPskType(Integer intervalPskType) {
    this.intervalPskType = intervalPskType;
    return this;
  }

  /**
   * WPA-Personal SSID group key update period interval unit config. It should be a value as follows: 0: Seconds; 1: Minutes; 2: Hours.
   * @return intervalPskType
  */
  @ApiModelProperty(value = "WPA-Personal SSID group key update period interval unit config. It should be a value as follows: 0: Seconds; 1: Minutes; 2: Hours.")


  public Integer getIntervalPskType() {
    return intervalPskType;
  }

  public void setIntervalPskType(Integer intervalPskType) {
    this.intervalPskType = intervalPskType;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidPskSettingOpenApiVo ssidPskSettingOpenApiVo = (SsidPskSettingOpenApiVo) o;
    return Objects.equals(this.securityKey, ssidPskSettingOpenApiVo.securityKey) &&
        Objects.equals(this.versionPsk, ssidPskSettingOpenApiVo.versionPsk) &&
        Objects.equals(this.encryptionPsk, ssidPskSettingOpenApiVo.encryptionPsk) &&
        Objects.equals(this.gikRekeyPskEnable, ssidPskSettingOpenApiVo.gikRekeyPskEnable) &&
        Objects.equals(this.rekeyPskInterval, ssidPskSettingOpenApiVo.rekeyPskInterval) &&
        Objects.equals(this.intervalPskType, ssidPskSettingOpenApiVo.intervalPskType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(securityKey, versionPsk, encryptionPsk, gikRekeyPskEnable, rekeyPskInterval, intervalPskType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidPskSettingOpenApiVo {\n");
    
    sb.append("    securityKey: ").append(toIndentedString(securityKey)).append("\n");
    sb.append("    versionPsk: ").append(toIndentedString(versionPsk)).append("\n");
    sb.append("    encryptionPsk: ").append(toIndentedString(encryptionPsk)).append("\n");
    sb.append("    gikRekeyPskEnable: ").append(toIndentedString(gikRekeyPskEnable)).append("\n");
    sb.append("    rekeyPskInterval: ").append(toIndentedString(rekeyPskInterval)).append("\n");
    sb.append("    intervalPskType: ").append(toIndentedString(intervalPskType)).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    ");
  }
}

