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

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

import java.util.Objects;

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

public class SsidMultiCastOpenApiVo   {
  @JsonProperty("multiCastEnable")
  private Boolean multiCastEnable;

  @JsonProperty("channelUtil")
  private Integer channelUtil;

  @JsonProperty("arpCastEnable")
  private Boolean arpCastEnable;

  @JsonProperty("ipv6CastEnable")
  private Boolean ipv6CastEnable;

  @JsonProperty("filterEnable")
  private Boolean filterEnable;

  @JsonProperty("filterMode")
  private Integer filterMode;

  @JsonProperty("macGroupId")
  private String macGroupId;

  public SsidMultiCastOpenApiVo multiCastEnable(Boolean multiCastEnable) {
    this.multiCastEnable = multiCastEnable;
    return this;
  }

  /**
   * Whether to enable multicast to unicast, which is disabled by default. True: enable, false: disable.
   * @return multiCastEnable
  */
  @ApiModelProperty(value = "Whether to enable multicast to unicast, which is disabled by default. True: enable, false: disable.")


  public Boolean getMultiCastEnable() {
    return multiCastEnable;
  }

  public void setMultiCastEnable(Boolean multiCastEnable) {
    this.multiCastEnable = multiCastEnable;
  }

  public SsidMultiCastOpenApiVo channelUtil(Integer channelUtil) {
    this.channelUtil = channelUtil;
    return this;
  }

  /**
   * This item indicates that when the channel utilization reaches the threshold, multicast will no longer be converted to unicast, the default threshold is 100, and the value should be within the range of 0-100.
   * @return channelUtil
  */
  @ApiModelProperty(value = "This item indicates that when the channel utilization reaches the threshold, multicast will no longer be converted to unicast, the default threshold is 100, and the value should be within the range of 0-100.")


  public Integer getChannelUtil() {
    return channelUtil;
  }

  public void setChannelUtil(Integer channelUtil) {
    this.channelUtil = channelUtil;
  }

  public SsidMultiCastOpenApiVo arpCastEnable(Boolean arpCastEnable) {
    this.arpCastEnable = arpCastEnable;
    return this;
  }

  /**
   * Whether to enable ARP cast to unicast, which is disabled by default. True: enable, false: disable.
   * @return arpCastEnable
  */
  @ApiModelProperty(value = "Whether to enable ARP cast to unicast, which is disabled by default. True: enable, false: disable.")


  public Boolean getArpCastEnable() {
    return arpCastEnable;
  }

  public void setArpCastEnable(Boolean arpCastEnable) {
    this.arpCastEnable = arpCastEnable;
  }

  public SsidMultiCastOpenApiVo ipv6CastEnable(Boolean ipv6CastEnable) {
    this.ipv6CastEnable = ipv6CastEnable;
    return this;
  }

  /**
   * Whether to enable IPv6 multicast to unicast, which is enabled by default. True: enable, false: disable.
   * @return ipv6CastEnable
  */
  @ApiModelProperty(value = "Whether to enable IPv6 multicast to unicast, which is enabled by default. True: enable, false: disable.")


  public Boolean getIpv6CastEnable() {
    return ipv6CastEnable;
  }

  public void setIpv6CastEnable(Boolean ipv6CastEnable) {
    this.ipv6CastEnable = ipv6CastEnable;
  }

  public SsidMultiCastOpenApiVo filterEnable(Boolean filterEnable) {
    this.filterEnable = filterEnable;
    return this;
  }

  /**
   * Whether to enable the multicast filter switch, which is disabled by default. True: enable, false: disable.
   * @return filterEnable
  */
  @ApiModelProperty(value = "Whether to enable the multicast filter switch, which is disabled by default. True: enable, false: disable.")


  public Boolean getFilterEnable() {
    return filterEnable;
  }

  public void setFilterEnable(Boolean filterEnable) {
    this.filterEnable = filterEnable;
  }

  public SsidMultiCastOpenApiVo filterMode(Integer filterMode) {
    this.filterMode = filterMode;
    return this;
  }

  /**
   * This item indicates the status of the filtering protocol. The lowest bit indicates whether IGMP is enabled; the second lowest bit indicates whether MDNS is enabled; and the third lowest bit indicates whether Others is enabled. 1 means enable while 0 means disable. For example, 7(111) means that all are enabled; 1(001) means that only IGMP is enabled. 
   * @return filterMode
  */
  @ApiModelProperty(value = "This item indicates the status of the filtering protocol. The lowest bit indicates whether IGMP is enabled; the second lowest bit indicates whether MDNS is enabled; and the third lowest bit indicates whether Others is enabled. 1 means enable while 0 means disable. For example, 7(111) means that all are enabled; 1(001) means that only IGMP is enabled. ")


  public Integer getFilterMode() {
    return filterMode;
  }

  public void setFilterMode(Integer filterMode) {
    this.filterMode = filterMode;
  }

  public SsidMultiCastOpenApiVo macGroupId(String macGroupId) {
    this.macGroupId = macGroupId;
    return this;
  }

  /**
   * This field represents MAC Group Profile ID. MAC Group Profile can be created using Create a new group profile interface, and MAC Group Profile ID can be obtained from Get group profile list by type interface.
   * @return macGroupId
  */
  @ApiModelProperty(value = "This field represents MAC Group Profile ID. MAC Group Profile can be created using Create a new group profile interface, and MAC Group Profile ID can be obtained from Get group profile list by type interface.")


  public String getMacGroupId() {
    return macGroupId;
  }

  public void setMacGroupId(String macGroupId) {
    this.macGroupId = macGroupId;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidMultiCastOpenApiVo ssidMultiCastOpenApiVo = (SsidMultiCastOpenApiVo) o;
    return Objects.equals(this.multiCastEnable, ssidMultiCastOpenApiVo.multiCastEnable) &&
        Objects.equals(this.channelUtil, ssidMultiCastOpenApiVo.channelUtil) &&
        Objects.equals(this.arpCastEnable, ssidMultiCastOpenApiVo.arpCastEnable) &&
        Objects.equals(this.ipv6CastEnable, ssidMultiCastOpenApiVo.ipv6CastEnable) &&
        Objects.equals(this.filterEnable, ssidMultiCastOpenApiVo.filterEnable) &&
        Objects.equals(this.filterMode, ssidMultiCastOpenApiVo.filterMode) &&
        Objects.equals(this.macGroupId, ssidMultiCastOpenApiVo.macGroupId);
  }

  @Override
  public int hashCode() {
    return Objects.hash(multiCastEnable, channelUtil, arpCastEnable, ipv6CastEnable, filterEnable, filterMode, macGroupId);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidMultiCastOpenApiVo {\n");
    
    sb.append("    multiCastEnable: ").append(toIndentedString(multiCastEnable)).append("\n");
    sb.append("    channelUtil: ").append(toIndentedString(channelUtil)).append("\n");
    sb.append("    arpCastEnable: ").append(toIndentedString(arpCastEnable)).append("\n");
    sb.append("    ipv6CastEnable: ").append(toIndentedString(ipv6CastEnable)).append("\n");
    sb.append("    filterEnable: ").append(toIndentedString(filterEnable)).append("\n");
    sb.append("    filterMode: ").append(toIndentedString(filterMode)).append("\n");
    sb.append("    macGroupId: ").append(toIndentedString(macGroupId)).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    ");
  }
}

