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

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

public class VirtualWanIpv4PppoeOpenApiVo   {
  @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("ipv4Connection2")
  private VirtualWanIpv4Connection2OpenApiVo ipv4Connection2;

  @JsonProperty("mssClampingType")
  private Integer mssClampingType;

  @JsonProperty("mssClampingValue")
  private Integer mssClampingValue;

  public VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo redialInterval(Integer redialInterval) {
    this.redialInterval = redialInterval;
    return this;
  }

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


  public Integer getRedialInterval() {
    return redialInterval;
  }

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

  public VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo service(String service) {
    this.service = service;
    return this;
  }

  /**
   * Service name. Keep parameter [service] blank unless your ISP requires you to configure it.
   * @return service
  */
  @ApiModelProperty(value = "Service name. Keep parameter [service] blank unless your ISP requires you to configure it.")

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

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

  public VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo 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 VirtualWanIpv4PppoeOpenApiVo dns1(String dns1) {
    this.dns1 = dns1;
    return this;
  }

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

@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 VirtualWanIpv4PppoeOpenApiVo dns2(String dns2) {
    this.dns2 = dns2;
    return this;
  }

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

@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 VirtualWanIpv4PppoeOpenApiVo ipv4Connection2(VirtualWanIpv4Connection2OpenApiVo ipv4Connection2) {
    this.ipv4Connection2 = ipv4Connection2;
    return this;
  }

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

  @Valid

  public VirtualWanIpv4Connection2OpenApiVo getIpv4Connection2() {
    return ipv4Connection2;
  }

  public void setIpv4Connection2(VirtualWanIpv4Connection2OpenApiVo ipv4Connection2) {
    this.ipv4Connection2 = ipv4Connection2;
  }

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

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


  public Integer getMssClampingType() {
    return mssClampingType;
  }

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

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

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


  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;
    }
    VirtualWanIpv4PppoeOpenApiVo virtualWanIpv4PppoeOpenApiVo = (VirtualWanIpv4PppoeOpenApiVo) o;
    return Objects.equals(this.ipaddr, virtualWanIpv4PppoeOpenApiVo.ipaddr) &&
        Objects.equals(this.userName, virtualWanIpv4PppoeOpenApiVo.userName) &&
        Objects.equals(this.password, virtualWanIpv4PppoeOpenApiVo.password) &&
        Objects.equals(this.ipFromIsp, virtualWanIpv4PppoeOpenApiVo.ipFromIsp) &&
        Objects.equals(this.gateway, virtualWanIpv4PppoeOpenApiVo.gateway) &&
        Objects.equals(this.linkType, virtualWanIpv4PppoeOpenApiVo.linkType) &&
        Objects.equals(this.redialInterval, virtualWanIpv4PppoeOpenApiVo.redialInterval) &&
        Objects.equals(this.startTime, virtualWanIpv4PppoeOpenApiVo.startTime) &&
        Objects.equals(this.endTime, virtualWanIpv4PppoeOpenApiVo.endTime) &&
        Objects.equals(this.service, virtualWanIpv4PppoeOpenApiVo.service) &&
        Objects.equals(this.netmask, virtualWanIpv4PppoeOpenApiVo.netmask) &&
        Objects.equals(this.mtu, virtualWanIpv4PppoeOpenApiVo.mtu) &&
        Objects.equals(this.mru, virtualWanIpv4PppoeOpenApiVo.mru) &&
        Objects.equals(this.dns1, virtualWanIpv4PppoeOpenApiVo.dns1) &&
        Objects.equals(this.dns2, virtualWanIpv4PppoeOpenApiVo.dns2) &&
        Objects.equals(this.ipv4Connection2, virtualWanIpv4PppoeOpenApiVo.ipv4Connection2) &&
        Objects.equals(this.mssClampingType, virtualWanIpv4PppoeOpenApiVo.mssClampingType) &&
        Objects.equals(this.mssClampingValue, virtualWanIpv4PppoeOpenApiVo.mssClampingValue);
  }

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

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

