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

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

public class VirtualWanIpv4PppoaOpenApiVo   {
  @JsonProperty("ipaddr")
  private String ipaddr;

  @JsonProperty("userName")
  private String userName;

  @JsonProperty("password")
  private String password;

  @JsonProperty("ipFromIsp")
  private String ipFromIsp;

  @JsonProperty("gateway")
  private String gateway;

  @JsonProperty("linkType")
  private String linkType;

  @JsonProperty("redialInterval")
  private Integer redialInterval;

  @JsonProperty("startTime")
  private String startTime;

  @JsonProperty("endTime")
  private String endTime;

  @JsonProperty("service")
  private String service;

  @JsonProperty("netmask")
  private String netmask;

  @JsonProperty("mtu")
  private Integer mtu;

  @JsonProperty("mru")
  private Integer mru;

  @JsonProperty("dns1")
  private String dns1;

  @JsonProperty("dns2")
  private String dns2;

  @JsonProperty("connect")
  private String connect;

  @JsonProperty("mssClampingType")
  private Integer mssClampingType;

  @JsonProperty("mssClampingValue")
  private Integer mssClampingValue;

  public VirtualWanIpv4PppoaOpenApiVo ipaddr(String ipaddr) {
    this.ipaddr = ipaddr;
    return this;
  }

  /**
   * IP address.
   * @return ipaddr
  */
  @ApiModelProperty(value = "IP address.")

@Pattern(regexp="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b") 
  public String getIpaddr() {
    return ipaddr;
  }

  public void setIpaddr(String ipaddr) {
    this.ipaddr = ipaddr;
  }

  public VirtualWanIpv4PppoaOpenApiVo userName(String userName) {
    this.userName = userName;
    return this;
  }

  /**
   * Username. Parameter [userName] should contain 1 to 255 ASCII characters.
   * @return userName
  */
  @ApiModelProperty(value = "Username. Parameter [userName] should contain 1 to 255 ASCII characters.")

@Pattern(regexp="^[A-Za-z0-9\\`\\~\\!\\@\\#\\$\\&\\*\\(\\)\\-\\=\\_\\+\\[\\]\\{\\}\\;\\:\\'\\\"\\\\\\|/\\?\\.\\,\\<\\>\\%\\^/]{1,255}$") 
  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public VirtualWanIpv4PppoaOpenApiVo password(String password) {
    this.password = password;
    return this;
  }

  /**
   * Password. Parameter [password] should contain 1 to 255 ASCII characters.
   * @return password
  */
  @ApiModelProperty(value = "Password. Parameter [password] should contain 1 to 255 ASCII characters.")

@Pattern(regexp="^[A-Za-z0-9\\`\\~\\!\\@\\#\\$\\&\\*\\(\\)\\-\\=\\_\\+\\[\\]\\{\\}\\;\\:\\'\\\"\\\\\\|/\\?\\.\\,\\<\\>\\%\\^/]{1,255}$") 
  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public VirtualWanIpv4PppoaOpenApiVo ipFromIsp(String ipFromIsp) {
    this.ipFromIsp = ipFromIsp;
    return this;
  }

  /**
   * Get IP address from ISP.
   * @return ipFromIsp
  */
  @ApiModelProperty(value = "Get IP address from ISP.")


  public String getIpFromIsp() {
    return ipFromIsp;
  }

  public void setIpFromIsp(String ipFromIsp) {
    this.ipFromIsp = ipFromIsp;
  }

  public VirtualWanIpv4PppoaOpenApiVo gateway(String gateway) {
    this.gateway = gateway;
    return this;
  }

  /**
   * Gateway IP.
   * @return gateway
  */
  @ApiModelProperty(value = "Gateway IP.")

@Pattern(regexp="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b") 
  public String getGateway() {
    return gateway;
  }

  public void setGateway(String gateway) {
    this.gateway = gateway;
  }

  public VirtualWanIpv4PppoaOpenApiVo linkType(String linkType) {
    this.linkType = linkType;
    return this;
  }

  /**
   * Connection Mode. Parameter [linkType] should be as follows: auto: Connect Automatically; demand: Connect Manually; time: Time-based.
   * @return linkType
  */
  @ApiModelProperty(value = "Connection Mode. Parameter [linkType] should be as follows: auto: Connect Automatically; demand: Connect Manually; time: Time-based.")


  public String getLinkType() {
    return linkType;
  }

  public void setLinkType(String linkType) {
    this.linkType = linkType;
  }

  public VirtualWanIpv4PppoaOpenApiVo redialInterval(Integer redialInterval) {
    this.redialInterval = redialInterval;
    return this;
  }

  /**
   * It is required when [linkType] is 0. Unit: Second.
   * @return redialInterval
  */
  @ApiModelProperty(value = "It is required when [linkType] is 0. Unit: Second.")


  public Integer getRedialInterval() {
    return redialInterval;
  }

  public void setRedialInterval(Integer redialInterval) {
    this.redialInterval = redialInterval;
  }

  public VirtualWanIpv4PppoaOpenApiVo startTime(String startTime) {
    this.startTime = startTime;
    return this;
  }

  /**
   * It is required when [linkType] is 2. For example, 12:30.
   * @return startTime
  */
  @ApiModelProperty(value = "It is required when [linkType] is 2. For example, 12:30.")


  public String getStartTime() {
    return startTime;
  }

  public void setStartTime(String startTime) {
    this.startTime = startTime;
  }

  public VirtualWanIpv4PppoaOpenApiVo endTime(String endTime) {
    this.endTime = endTime;
    return this;
  }

  /**
   * It is required when [linkType] is 2. For example, 12:30.
   * @return endTime
  */
  @ApiModelProperty(value = "It is required when [linkType] is 2. For example, 12:30.")


  public String getEndTime() {
    return endTime;
  }

  public void setEndTime(String endTime) {
    this.endTime = endTime;
  }

  public VirtualWanIpv4PppoaOpenApiVo service(String service) {
    this.service = service;
    return this;
  }

  /**
   * Parameter [service] should be 1 ~ 128 visible ASCII characters.
   * @return service
  */
  @ApiModelProperty(value = "Parameter [service] should be 1 ~ 128 visible ASCII characters.")

@Pattern(regexp="^[\\041-\\0176]{1,128}$") 
  public String getService() {
    return service;
  }

  public void setService(String service) {
    this.service = service;
  }

  public VirtualWanIpv4PppoaOpenApiVo netmask(String netmask) {
    this.netmask = netmask;
    return this;
  }

  /**
   * Subnet mask.
   * @return netmask
  */
  @ApiModelProperty(value = "Subnet mask.")

@Pattern(regexp="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b") 
  public String getNetmask() {
    return netmask;
  }

  public void setNetmask(String netmask) {
    this.netmask = netmask;
  }

  public VirtualWanIpv4PppoaOpenApiVo mtu(Integer mtu) {
    this.mtu = mtu;
    return this;
  }

  /**
   * Parameter [mtu] should be a value between 576 and 1492.
   * @return mtu
  */
  @ApiModelProperty(value = "Parameter [mtu] should be a value between 576 and 1492.")


  public Integer getMtu() {
    return mtu;
  }

  public void setMtu(Integer mtu) {
    this.mtu = mtu;
  }

  public VirtualWanIpv4PppoaOpenApiVo mru(Integer mru) {
    this.mru = mru;
    return this;
  }

  /**
   * Parameter [mru] should be a value between 576 and 1492.
   * @return mru
  */
  @ApiModelProperty(value = "Parameter [mru] should be a value between 576 and 1492.")


  public Integer getMru() {
    return mru;
  }

  public void setMru(Integer mru) {
    this.mru = mru;
  }

  public VirtualWanIpv4PppoaOpenApiVo dns1(String dns1) {
    this.dns1 = dns1;
    return this;
  }

  /**
   * Primary DNS server.
   * @return dns1
  */
  @ApiModelProperty(value = "Primary DNS server.")

@Pattern(regexp="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b") 
  public String getDns1() {
    return dns1;
  }

  public void setDns1(String dns1) {
    this.dns1 = dns1;
  }

  public VirtualWanIpv4PppoaOpenApiVo dns2(String dns2) {
    this.dns2 = dns2;
    return this;
  }

  /**
   * Secondary DNS server.
   * @return dns2
  */
  @ApiModelProperty(value = "Secondary DNS server.")

@Pattern(regexp="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b") 
  public String getDns2() {
    return dns2;
  }

  public void setDns2(String dns2) {
    this.dns2 = dns2;
  }

  public VirtualWanIpv4PppoaOpenApiVo connect(String connect) {
    this.connect = connect;
    return this;
  }

  /**
   * Get connect
   * @return connect
  */
  @ApiModelProperty(value = "")


  public String getConnect() {
    return connect;
  }

  public void setConnect(String connect) {
    this.connect = connect;
  }

  public VirtualWanIpv4PppoaOpenApiVo mssClampingType(Integer mssClampingType) {
    this.mssClampingType = mssClampingType;
    return this;
  }

  /**
   * It should be a value as follows: 0: Disable, 1: Auto, 2: Custom.
   * @return mssClampingType
  */
  @ApiModelProperty(value = "It should be a value as follows: 0: Disable, 1: Auto, 2: Custom.")


  public Integer getMssClampingType() {
    return mssClampingType;
  }

  public void setMssClampingType(Integer mssClampingType) {
    this.mssClampingType = mssClampingType;
  }

  public VirtualWanIpv4PppoaOpenApiVo mssClampingValue(Integer mssClampingValue) {
    this.mssClampingValue = mssClampingValue;
    return this;
  }

  /**
   * It is required when [mssClampingType] is 2, which ranges 532 ~ 1452.
   * @return mssClampingValue
  */
  @ApiModelProperty(value = "It is required when [mssClampingType] is 2, which ranges 532 ~ 1452.")


  public Integer getMssClampingValue() {
    return mssClampingValue;
  }

  public void setMssClampingValue(Integer mssClampingValue) {
    this.mssClampingValue = mssClampingValue;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    VirtualWanIpv4PppoaOpenApiVo virtualWanIpv4PppoaOpenApiVo = (VirtualWanIpv4PppoaOpenApiVo) o;
    return Objects.equals(this.ipaddr, virtualWanIpv4PppoaOpenApiVo.ipaddr) &&
        Objects.equals(this.userName, virtualWanIpv4PppoaOpenApiVo.userName) &&
        Objects.equals(this.password, virtualWanIpv4PppoaOpenApiVo.password) &&
        Objects.equals(this.ipFromIsp, virtualWanIpv4PppoaOpenApiVo.ipFromIsp) &&
        Objects.equals(this.gateway, virtualWanIpv4PppoaOpenApiVo.gateway) &&
        Objects.equals(this.linkType, virtualWanIpv4PppoaOpenApiVo.linkType) &&
        Objects.equals(this.redialInterval, virtualWanIpv4PppoaOpenApiVo.redialInterval) &&
        Objects.equals(this.startTime, virtualWanIpv4PppoaOpenApiVo.startTime) &&
        Objects.equals(this.endTime, virtualWanIpv4PppoaOpenApiVo.endTime) &&
        Objects.equals(this.service, virtualWanIpv4PppoaOpenApiVo.service) &&
        Objects.equals(this.netmask, virtualWanIpv4PppoaOpenApiVo.netmask) &&
        Objects.equals(this.mtu, virtualWanIpv4PppoaOpenApiVo.mtu) &&
        Objects.equals(this.mru, virtualWanIpv4PppoaOpenApiVo.mru) &&
        Objects.equals(this.dns1, virtualWanIpv4PppoaOpenApiVo.dns1) &&
        Objects.equals(this.dns2, virtualWanIpv4PppoaOpenApiVo.dns2) &&
        Objects.equals(this.connect, virtualWanIpv4PppoaOpenApiVo.connect) &&
        Objects.equals(this.mssClampingType, virtualWanIpv4PppoaOpenApiVo.mssClampingType) &&
        Objects.equals(this.mssClampingValue, virtualWanIpv4PppoaOpenApiVo.mssClampingValue);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ipaddr, userName, password, ipFromIsp, gateway, linkType, redialInterval, startTime, endTime, service, netmask, mtu, mru, dns1, dns2, connect, mssClampingType, mssClampingValue);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class VirtualWanIpv4PppoaOpenApiVo {\n");
    
    sb.append("    ipaddr: ").append(toIndentedString(ipaddr)).append("\n");
    sb.append("    userName: ").append(toIndentedString(userName)).append("\n");
    sb.append("    password: ").append(toIndentedString(password)).append("\n");
    sb.append("    ipFromIsp: ").append(toIndentedString(ipFromIsp)).append("\n");
    sb.append("    gateway: ").append(toIndentedString(gateway)).append("\n");
    sb.append("    linkType: ").append(toIndentedString(linkType)).append("\n");
    sb.append("    redialInterval: ").append(toIndentedString(redialInterval)).append("\n");
    sb.append("    startTime: ").append(toIndentedString(startTime)).append("\n");
    sb.append("    endTime: ").append(toIndentedString(endTime)).append("\n");
    sb.append("    service: ").append(toIndentedString(service)).append("\n");
    sb.append("    netmask: ").append(toIndentedString(netmask)).append("\n");
    sb.append("    mtu: ").append(toIndentedString(mtu)).append("\n");
    sb.append("    mru: ").append(toIndentedString(mru)).append("\n");
    sb.append("    dns1: ").append(toIndentedString(dns1)).append("\n");
    sb.append("    dns2: ").append(toIndentedString(dns2)).append("\n");
    sb.append("    connect: ").append(toIndentedString(connect)).append("\n");
    sb.append("    mssClampingType: ").append(toIndentedString(mssClampingType)).append("\n");
    sb.append("    mssClampingValue: ").append(toIndentedString(mssClampingValue)).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    ");
  }
}

