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

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

public class WanPortSettingOpenApiVo   {
  @JsonProperty("portId")
  private String portId;

  @JsonProperty("portName")
  private String portName;

  @JsonProperty("portDescription")
  private String portDescription;

  @JsonProperty("wanPortIpv4Setting")
  private WanPortIpv4SettingOpenApiVo wanPortIpv4Setting;

  @JsonProperty("wanPortIpv6Setting")
  private WanPortIpv6SettingOpenApiVo wanPortIpv6Setting;

  @JsonProperty("wanPortMacSetting")
  private WanPortMacSettingOpenApiVo wanPortMacSetting;

  @JsonProperty("dslSetting")
  private WanPortDslSettingOpenApiVo dslSetting;

  public WanPortSettingOpenApiVo portId(String portId) {
    this.portId = portId;
    return this;
  }

  /**
   * Port ID
   * @return portId
  */
  @ApiModelProperty(required = true, value = "Port ID")
  @NotNull


  public String getPortId() {
    return portId;
  }

  public void setPortId(String portId) {
    this.portId = portId;
  }

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

  /**
   * Port name
   * @return portName
  */
  @ApiModelProperty(value = "Port name")


  public String getPortName() {
    return portName;
  }

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

  public WanPortSettingOpenApiVo portDescription(String portDescription) {
    this.portDescription = portDescription;
    return this;
  }

  /**
   * Port description should contain 1 to 32 characters.
   * @return portDescription
  */
  @ApiModelProperty(value = "Port description should contain 1 to 32 characters.")


  public String getPortDescription() {
    return portDescription;
  }

  public void setPortDescription(String portDescription) {
    this.portDescription = portDescription;
  }

  public WanPortSettingOpenApiVo wanPortIpv4Setting(WanPortIpv4SettingOpenApiVo wanPortIpv4Setting) {
    this.wanPortIpv4Setting = wanPortIpv4Setting;
    return this;
  }

  /**
   * Get wanPortIpv4Setting
   * @return wanPortIpv4Setting
  */
  @ApiModelProperty(required = true, value = "")
  @NotNull

  @Valid

  public WanPortIpv4SettingOpenApiVo getWanPortIpv4Setting() {
    return wanPortIpv4Setting;
  }

  public void setWanPortIpv4Setting(WanPortIpv4SettingOpenApiVo wanPortIpv4Setting) {
    this.wanPortIpv4Setting = wanPortIpv4Setting;
  }

  public WanPortSettingOpenApiVo wanPortIpv6Setting(WanPortIpv6SettingOpenApiVo wanPortIpv6Setting) {
    this.wanPortIpv6Setting = wanPortIpv6Setting;
    return this;
  }

  /**
   * Get wanPortIpv6Setting
   * @return wanPortIpv6Setting
  */
  @ApiModelProperty(required = true, value = "")
  @NotNull

  @Valid

  public WanPortIpv6SettingOpenApiVo getWanPortIpv6Setting() {
    return wanPortIpv6Setting;
  }

  public void setWanPortIpv6Setting(WanPortIpv6SettingOpenApiVo wanPortIpv6Setting) {
    this.wanPortIpv6Setting = wanPortIpv6Setting;
  }

  public WanPortSettingOpenApiVo wanPortMacSetting(WanPortMacSettingOpenApiVo wanPortMacSetting) {
    this.wanPortMacSetting = wanPortMacSetting;
    return this;
  }

  /**
   * Get wanPortMacSetting
   * @return wanPortMacSetting
  */
  @ApiModelProperty(required = true, value = "")
  @NotNull

  @Valid

  public WanPortMacSettingOpenApiVo getWanPortMacSetting() {
    return wanPortMacSetting;
  }

  public void setWanPortMacSetting(WanPortMacSettingOpenApiVo wanPortMacSetting) {
    this.wanPortMacSetting = wanPortMacSetting;
  }

  public WanPortSettingOpenApiVo dslSetting(WanPortDslSettingOpenApiVo dslSetting) {
    this.dslSetting = dslSetting;
    return this;
  }

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

  @Valid

  public WanPortDslSettingOpenApiVo getDslSetting() {
    return dslSetting;
  }

  public void setDslSetting(WanPortDslSettingOpenApiVo dslSetting) {
    this.dslSetting = dslSetting;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WanPortSettingOpenApiVo wanPortSettingOpenApiVo = (WanPortSettingOpenApiVo) o;
    return Objects.equals(this.portId, wanPortSettingOpenApiVo.portId) &&
        Objects.equals(this.portName, wanPortSettingOpenApiVo.portName) &&
        Objects.equals(this.portDescription, wanPortSettingOpenApiVo.portDescription) &&
        Objects.equals(this.wanPortIpv4Setting, wanPortSettingOpenApiVo.wanPortIpv4Setting) &&
        Objects.equals(this.wanPortIpv6Setting, wanPortSettingOpenApiVo.wanPortIpv6Setting) &&
        Objects.equals(this.wanPortMacSetting, wanPortSettingOpenApiVo.wanPortMacSetting) &&
        Objects.equals(this.dslSetting, wanPortSettingOpenApiVo.dslSetting);
  }

  @Override
  public int hashCode() {
    return Objects.hash(portId, portName, portDescription, wanPortIpv4Setting, wanPortIpv6Setting, wanPortMacSetting, dslSetting);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WanPortSettingOpenApiVo {\n");
    
    sb.append("    portId: ").append(toIndentedString(portId)).append("\n");
    sb.append("    portName: ").append(toIndentedString(portName)).append("\n");
    sb.append("    portDescription: ").append(toIndentedString(portDescription)).append("\n");
    sb.append("    wanPortIpv4Setting: ").append(toIndentedString(wanPortIpv4Setting)).append("\n");
    sb.append("    wanPortIpv6Setting: ").append(toIndentedString(wanPortIpv6Setting)).append("\n");
    sb.append("    wanPortMacSetting: ").append(toIndentedString(wanPortMacSetting)).append("\n");
    sb.append("    dslSetting: ").append(toIndentedString(dslSetting)).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    ");
  }
}

