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

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

import java.util.Objects;

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

public class ClassRuleDetailOpenApiVo   {
  @JsonProperty("id")
  private String id;

  @JsonProperty("enable")
  private Boolean enable;

  @JsonProperty("ipVersion")
  private Integer ipVersion;

  @JsonProperty("localIp")
  private String localIp;

  @JsonProperty("remoteIp")
  private String remoteIp;

  @JsonProperty("dscp")
  private String dscp;

  @JsonProperty("serviceType")
  private String serviceType;

  @JsonProperty("classType")
  private Integer classType;

  public ClassRuleDetailOpenApiVo id(String id) {
    this.id = id;
    return this;
  }

  /**
   * The ID of class rule.
   * @return id
  */
  @ApiModelProperty(value = "The ID of class rule.")


  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public ClassRuleDetailOpenApiVo enable(Boolean enable) {
    this.enable = enable;
    return this;
  }

  /**
   * The status of class rule. valid values are true or false.
   * @return enable
  */
  @ApiModelProperty(value = "The status of class rule. valid values are true or false.")


  public Boolean getEnable() {
    return enable;
  }

  public void setEnable(Boolean enable) {
    this.enable = enable;
  }

  public ClassRuleDetailOpenApiVo ipVersion(Integer ipVersion) {
    this.ipVersion = ipVersion;
    return this;
  }

  /**
   * The IP Version of class rule should be a value as follows: 0: IPv4; 1: IPv6.
   * @return ipVersion
  */
  @ApiModelProperty(value = "The IP Version of class rule should be a value as follows: 0: IPv4; 1: IPv6.")


  public Integer getIpVersion() {
    return ipVersion;
  }

  public void setIpVersion(Integer ipVersion) {
    this.ipVersion = ipVersion;
  }

  public ClassRuleDetailOpenApiVo localIp(String localIp) {
    this.localIp = localIp;
    return this;
  }

  /**
   * The ID of IP Group or IPv6 Group selected in the Local Address configuration. The ID can be obtained from 'Get group profile list' interface.
   * @return localIp
  */
  @ApiModelProperty(value = "The ID of IP Group or IPv6 Group selected in the Local Address configuration. The ID can be obtained from 'Get group profile list' interface.")


  public String getLocalIp() {
    return localIp;
  }

  public void setLocalIp(String localIp) {
    this.localIp = localIp;
  }

  public ClassRuleDetailOpenApiVo remoteIp(String remoteIp) {
    this.remoteIp = remoteIp;
    return this;
  }

  /**
   * The ID of IP Group or IPv6 Group selected in the Remote Address configuration. The ID can be obtained from 'Get group profile list' interface.
   * @return remoteIp
  */
  @ApiModelProperty(value = "The ID of IP Group or IPv6 Group selected in the Remote Address configuration. The ID can be obtained from 'Get group profile list' interface.")


  public String getRemoteIp() {
    return remoteIp;
  }

  public void setRemoteIp(String remoteIp) {
    this.remoteIp = remoteIp;
  }

  public ClassRuleDetailOpenApiVo dscp(String dscp) {
    this.dscp = dscp;
    return this;
  }

  /**
   * The DSCP value selected in the DSCP configuration should be a value as follows: any: any; 8: IP precedence 1; 16: IP precedence 2; 24: IP precedence 3; 32: IP precedence 4; 40: IP precedence 5; 48: IP precedence 6; 56: IP precedence 7; 10: AF Class 1 (Low Drop); 12: AF Class 1 (Medium Drop); 14: AF Class 1 (High Drop); 18: AF Class 2 (Low Drop); 20: AF Class 2 (Medium Drop); 22: AF Class 2 (High Drop); 26: AF Class 3 (Low Drop); 28: AF Class 3 (Medium Drop); 30: AF Class 3 (High Drop); 34: AF Class 4 (Low Drop); 36: AF Class 4 (Medium Drop); 38: AF Class 4 (High Drop); 46: EF Class.
   * @return dscp
  */
  @ApiModelProperty(value = "The DSCP value selected in the DSCP configuration should be a value as follows: any: any; 8: IP precedence 1; 16: IP precedence 2; 24: IP precedence 3; 32: IP precedence 4; 40: IP precedence 5; 48: IP precedence 6; 56: IP precedence 7; 10: AF Class 1 (Low Drop); 12: AF Class 1 (Medium Drop); 14: AF Class 1 (High Drop); 18: AF Class 2 (Low Drop); 20: AF Class 2 (Medium Drop); 22: AF Class 2 (High Drop); 26: AF Class 3 (Low Drop); 28: AF Class 3 (Medium Drop); 30: AF Class 3 (High Drop); 34: AF Class 4 (Low Drop); 36: AF Class 4 (Medium Drop); 38: AF Class 4 (High Drop); 46: EF Class.")


  public String getDscp() {
    return dscp;
  }

  public void setDscp(String dscp) {
    this.dscp = dscp;
  }

  public ClassRuleDetailOpenApiVo serviceType(String serviceType) {
    this.serviceType = serviceType;
    return this;
  }

  /**
   * The ID of Gateway Qos Service selected in the Service Name configuration. The ID can be obtained from 'Get all Gateway QoS Service's ID and name info' interface.
   * @return serviceType
  */
  @ApiModelProperty(value = "The ID of Gateway Qos Service selected in the Service Name configuration. The ID can be obtained from 'Get all Gateway QoS Service's ID and name info' interface.")


  public String getServiceType() {
    return serviceType;
  }

  public void setServiceType(String serviceType) {
    this.serviceType = serviceType;
  }

  public ClassRuleDetailOpenApiVo classType(Integer classType) {
    this.classType = classType;
    return this;
  }

  /**
   * The Class value selected in the Qos Class configuration should be a value as follows: 1: Class 1, 2: Class 2, 3: Class 3.
   * @return classType
  */
  @ApiModelProperty(value = "The Class value selected in the Qos Class configuration should be a value as follows: 1: Class 1, 2: Class 2, 3: Class 3.")


  public Integer getClassType() {
    return classType;
  }

  public void setClassType(Integer classType) {
    this.classType = classType;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ClassRuleDetailOpenApiVo classRuleDetailOpenApiVo = (ClassRuleDetailOpenApiVo) o;
    return Objects.equals(this.id, classRuleDetailOpenApiVo.id) &&
        Objects.equals(this.enable, classRuleDetailOpenApiVo.enable) &&
        Objects.equals(this.ipVersion, classRuleDetailOpenApiVo.ipVersion) &&
        Objects.equals(this.localIp, classRuleDetailOpenApiVo.localIp) &&
        Objects.equals(this.remoteIp, classRuleDetailOpenApiVo.remoteIp) &&
        Objects.equals(this.dscp, classRuleDetailOpenApiVo.dscp) &&
        Objects.equals(this.serviceType, classRuleDetailOpenApiVo.serviceType) &&
        Objects.equals(this.classType, classRuleDetailOpenApiVo.classType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, enable, ipVersion, localIp, remoteIp, dscp, serviceType, classType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ClassRuleDetailOpenApiVo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    enable: ").append(toIndentedString(enable)).append("\n");
    sb.append("    ipVersion: ").append(toIndentedString(ipVersion)).append("\n");
    sb.append("    localIp: ").append(toIndentedString(localIp)).append("\n");
    sb.append("    remoteIp: ").append(toIndentedString(remoteIp)).append("\n");
    sb.append("    dscp: ").append(toIndentedString(dscp)).append("\n");
    sb.append("    serviceType: ").append(toIndentedString(serviceType)).append("\n");
    sb.append("    classType: ").append(toIndentedString(classType)).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    ");
  }
}

