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 javax.validation.constraints.Pattern;
import java.util.Objects;

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

public class WanPortDslSettingOpenApiVo   {
  @JsonProperty("portName")
  private String portName;

  @JsonProperty("portUuid")
  private String portUuid;

  @JsonProperty("portDesc")
  private String portDesc;

  @JsonProperty("location")
  private String location;

  @JsonProperty("vpi")
  private Integer vpi;

  @JsonProperty("vci")
  private Integer vci;

  @JsonProperty("encapMode")
  private Integer encapMode;

  @JsonProperty("merEnable")
  private Boolean merEnable;

  @JsonProperty("merUsername")
  private String merUsername;

  @JsonProperty("merPassword")
  private String merPassword;

  @JsonProperty("isp")
  private Integer isp;

  @JsonProperty("modulationType")
  private Integer modulationType;

  public WanPortDslSettingOpenApiVo portName(String portName) {
    this.portName = portName;
    return this;
  }

  /**
   * Wan port name.
   * @return portName
  */
  @ApiModelProperty(value = "Wan port name.")


  public String getPortName() {
    return portName;
  }

  public void setPortName(String portName) {
    this.portName = portName;
  }

  public WanPortDslSettingOpenApiVo portUuid(String portUuid) {
    this.portUuid = portUuid;
    return this;
  }

  /**
   * Wan port UUID.
   * @return portUuid
  */
  @ApiModelProperty(required = true, value = "Wan port UUID.")
  @NotNull


  public String getPortUuid() {
    return portUuid;
  }

  public void setPortUuid(String portUuid) {
    this.portUuid = portUuid;
  }

  public WanPortDslSettingOpenApiVo portDesc(String portDesc) {
    this.portDesc = portDesc;
    return this;
  }

  /**
   * Wan port description.
   * @return portDesc
  */
  @ApiModelProperty(value = "Wan port description.")


  public String getPortDesc() {
    return portDesc;
  }

  public void setPortDesc(String portDesc) {
    this.portDesc = portDesc;
  }

  public WanPortDslSettingOpenApiVo location(String location) {
    this.location = location;
    return this;
  }

  /**
   * Your country/region.
   * @return location
  */
  @ApiModelProperty(required = true, value = "Your country/region.")
  @NotNull


  public String getLocation() {
    return location;
  }

  public void setLocation(String location) {
    this.location = location;
  }

  public WanPortDslSettingOpenApiVo vpi(Integer vpi) {
    this.vpi = vpi;
    return this;
  }

  /**
   * The VPI(0~255) assigned by your ISP to specify the virtual path between endpoints in an ATM network.
   * @return vpi
  */
  @ApiModelProperty(value = "The VPI(0~255) assigned by your ISP to specify the virtual path between endpoints in an ATM network.")


  public Integer getVpi() {
    return vpi;
  }

  public void setVpi(Integer vpi) {
    this.vpi = vpi;
  }

  public WanPortDslSettingOpenApiVo vci(Integer vci) {
    this.vci = vci;
    return this;
  }

  /**
   * The VCI(1~65535) assigned by your ISP to specify the virtual channel endpoints in an ATM network.
   * @return vci
  */
  @ApiModelProperty(value = "The VCI(1~65535) assigned by your ISP to specify the virtual channel endpoints in an ATM network.")


  public Integer getVci() {
    return vci;
  }

  public void setVci(Integer vci) {
    this.vci = vci;
  }

  public WanPortDslSettingOpenApiVo encapMode(Integer encapMode) {
    this.encapMode = encapMode;
    return this;
  }

  /**
   * Encap mode assigned by your ISP. 0: LLC, 1: VC-MUX, 2: VC/MUX, 3: 1483 Bridged IP LLC, 4: 1483 Routed IP LLC
   * @return encapMode
  */
  @ApiModelProperty(value = "Encap mode assigned by your ISP. 0: LLC, 1: VC-MUX, 2: VC/MUX, 3: 1483 Bridged IP LLC, 4: 1483 Routed IP LLC")


  public Integer getEncapMode() {
    return encapMode;
  }

  public void setEncapMode(Integer encapMode) {
    this.encapMode = encapMode;
  }

  public WanPortDslSettingOpenApiVo merEnable(Boolean merEnable) {
    this.merEnable = merEnable;
    return this;
  }

  /**
   * If your ISP requires MER for network connection(e.g., Sky VDSL).MER switch configuration, only configurable when in VDSL mode and DHCP dial-up mode.
   * @return merEnable
  */
  @ApiModelProperty(value = "If your ISP requires MER for network connection(e.g., Sky VDSL).MER switch configuration, only configurable when in VDSL mode and DHCP dial-up mode.")


  public Boolean getMerEnable() {
    return merEnable;
  }

  public void setMerEnable(Boolean merEnable) {
    this.merEnable = merEnable;
  }

  public WanPortDslSettingOpenApiVo merUsername(String merUsername) {
    this.merUsername = merUsername;
    return this;
  }

  /**
   * MER username configuration, only configurable when in VDSL mode and DHCP dial-up mode.
   * @return merUsername
  */
  @ApiModelProperty(value = "MER username configuration, only configurable when in VDSL mode and DHCP dial-up mode.")

@Pattern(regexp="^[^\\s]{1,63}$") 
  public String getMerUsername() {
    return merUsername;
  }

  public void setMerUsername(String merUsername) {
    this.merUsername = merUsername;
  }

  public WanPortDslSettingOpenApiVo merPassword(String merPassword) {
    this.merPassword = merPassword;
    return this;
  }

  /**
   * MER password configuration, only configurable when in VDSL mode and DHCP dial-up mode.
   * @return merPassword
  */
  @ApiModelProperty(value = "MER password configuration, only configurable when in VDSL mode and DHCP dial-up mode.")

@Pattern(regexp="^[^\\s]{1,63}$") 
  public String getMerPassword() {
    return merPassword;
  }

  public void setMerPassword(String merPassword) {
    this.merPassword = merPassword;
  }

  public WanPortDslSettingOpenApiVo isp(Integer isp) {
    this.isp = isp;
    return this;
  }

  /**
   * Your ISP (Internet Service Provider) from the drop-down list,Select Other to customize the settings.
   * @return isp
  */
  @ApiModelProperty(required = true, value = "Your ISP (Internet Service Provider) from the drop-down list,Select Other to customize the settings.")
  @NotNull


  public Integer getIsp() {
    return isp;
  }

  public void setIsp(Integer isp) {
    this.isp = isp;
  }

  public WanPortDslSettingOpenApiVo modulationType(Integer modulationType) {
    this.modulationType = modulationType;
    return this;
  }

  /**
   * The modulation type used for your DSL connection. 0: VDSL, 1: ADSL.
   * @return modulationType
  */
  @ApiModelProperty(required = true, value = "The modulation type used for your DSL connection. 0: VDSL, 1: ADSL.")
  @NotNull


  public Integer getModulationType() {
    return modulationType;
  }

  public void setModulationType(Integer modulationType) {
    this.modulationType = modulationType;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WanPortDslSettingOpenApiVo wanPortDslSettingOpenApiVo = (WanPortDslSettingOpenApiVo) o;
    return Objects.equals(this.portName, wanPortDslSettingOpenApiVo.portName) &&
        Objects.equals(this.portUuid, wanPortDslSettingOpenApiVo.portUuid) &&
        Objects.equals(this.portDesc, wanPortDslSettingOpenApiVo.portDesc) &&
        Objects.equals(this.location, wanPortDslSettingOpenApiVo.location) &&
        Objects.equals(this.vpi, wanPortDslSettingOpenApiVo.vpi) &&
        Objects.equals(this.vci, wanPortDslSettingOpenApiVo.vci) &&
        Objects.equals(this.encapMode, wanPortDslSettingOpenApiVo.encapMode) &&
        Objects.equals(this.merEnable, wanPortDslSettingOpenApiVo.merEnable) &&
        Objects.equals(this.merUsername, wanPortDslSettingOpenApiVo.merUsername) &&
        Objects.equals(this.merPassword, wanPortDslSettingOpenApiVo.merPassword) &&
        Objects.equals(this.isp, wanPortDslSettingOpenApiVo.isp) &&
        Objects.equals(this.modulationType, wanPortDslSettingOpenApiVo.modulationType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(portName, portUuid, portDesc, location, vpi, vci, encapMode, merEnable, merUsername, merPassword, isp, modulationType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WanPortDslSettingOpenApiVo {\n");
    
    sb.append("    portName: ").append(toIndentedString(portName)).append("\n");
    sb.append("    portUuid: ").append(toIndentedString(portUuid)).append("\n");
    sb.append("    portDesc: ").append(toIndentedString(portDesc)).append("\n");
    sb.append("    location: ").append(toIndentedString(location)).append("\n");
    sb.append("    vpi: ").append(toIndentedString(vpi)).append("\n");
    sb.append("    vci: ").append(toIndentedString(vci)).append("\n");
    sb.append("    encapMode: ").append(toIndentedString(encapMode)).append("\n");
    sb.append("    merEnable: ").append(toIndentedString(merEnable)).append("\n");
    sb.append("    merUsername: ").append(toIndentedString(merUsername)).append("\n");
    sb.append("    merPassword: ").append(toIndentedString(merPassword)).append("\n");
    sb.append("    isp: ").append(toIndentedString(isp)).append("\n");
    sb.append("    modulationType: ").append(toIndentedString(modulationType)).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    ");
  }
}

