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 java.util.ArrayList;
import java.util.List;
import java.util.Objects;

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

public class UpdateWidsConfigOpenApiVo   {
  @JsonProperty("status")
  private Boolean status;

  @JsonProperty("level")
  private Integer level;

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

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

  /**
   * Wireless IDS config status; true:enable, false:disable.
   * @return status
  */
  @ApiModelProperty(required = true, value = "Wireless IDS config status; true:enable, false:disable.")
  @NotNull


  public Boolean getStatus() {
    return status;
  }

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

  public UpdateWidsConfigOpenApiVo level(Integer level) {
    this.level = level;
    return this;
  }

  /**
   * Wireless IDS detection level; It should be a value as follows: 0:High; 1:Low; 2:Custom.
   * @return level
  */
  @ApiModelProperty(required = true, value = "Wireless IDS detection level; It should be a value as follows: 0:High; 1:Low; 2:Custom.")
  @NotNull


  public Integer getLevel() {
    return level;
  }

  public void setLevel(Integer level) {
    this.level = level;
  }

  public UpdateWidsConfigOpenApiVo detection(List<Integer> detection) {
    this.detection = detection;
    return this;
  }

  public UpdateWidsConfigOpenApiVo addDetectionItem(Integer detectionItem) {
    if (this.detection == null) {
      this.detection = new ArrayList<>();
    }
    this.detection.add(detectionItem);
    return this;
  }

  /**
   * Wireless IDS detection type, the value is returned only when level is custom(2); It should be a value as follows: 0: Signature_disassociation_broadcast; 1: Signature_deauth_broadcast; 2: Detect_apspoofing; 3: Detect_adhoc_using_valid_ssid; 4: Detect_malformed_large_duration; 5: Detect_overflow_eapol_key; 6: Detect_ap_impersonation; 7: Detect_ht_greenfield; 8: Detect_incomplete_ie; 9: Detect_malformed_htie; 10: Detect_malformed_frame_auth; 11: Detect_malformed_assoc_req; 12: Detect_valid_ssid_misuse; 13: Detect_adhoc_network; 14: Detect_client_flood; 15: Detect_hotspotter_attack; 16: Detect_power_save_dos_flood_attack; 17: Detect_violence_break.
   * @return detection
  */
  @ApiModelProperty(value = "Wireless IDS detection type, the value is returned only when level is custom(2); It should be a value as follows: 0: Signature_disassociation_broadcast; 1: Signature_deauth_broadcast; 2: Detect_apspoofing; 3: Detect_adhoc_using_valid_ssid; 4: Detect_malformed_large_duration; 5: Detect_overflow_eapol_key; 6: Detect_ap_impersonation; 7: Detect_ht_greenfield; 8: Detect_incomplete_ie; 9: Detect_malformed_htie; 10: Detect_malformed_frame_auth; 11: Detect_malformed_assoc_req; 12: Detect_valid_ssid_misuse; 13: Detect_adhoc_network; 14: Detect_client_flood; 15: Detect_hotspotter_attack; 16: Detect_power_save_dos_flood_attack; 17: Detect_violence_break.")


  public List<Integer> getDetection() {
    return detection;
  }

  public void setDetection(List<Integer> detection) {
    this.detection = detection;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    UpdateWidsConfigOpenApiVo updateWidsConfigOpenApiVo = (UpdateWidsConfigOpenApiVo) o;
    return Objects.equals(this.status, updateWidsConfigOpenApiVo.status) &&
        Objects.equals(this.level, updateWidsConfigOpenApiVo.level) &&
        Objects.equals(this.detection, updateWidsConfigOpenApiVo.detection);
  }

  @Override
  public int hashCode() {
    return Objects.hash(status, level, detection);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class UpdateWidsConfigOpenApiVo {\n");
    
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    level: ").append(toIndentedString(level)).append("\n");
    sb.append("    detection: ").append(toIndentedString(detection)).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    ");
  }
}

