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;

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

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

  @JsonProperty("portDescription")
  private String portDescription;

  @JsonProperty("configType")
  private Integer configType;

  @JsonProperty("autoConfig")
  private AutoConfigOpenApiVo autoConfig;

  @JsonProperty("manuallyConfig")
  private ManuallyConfigOpenApiVo manuallyConfig;

  @JsonProperty("connectionMode")
  private Integer connectionMode;

  @JsonProperty("pin")
  private String pin;

  @JsonProperty("authType")
  private Integer authType;

  @JsonProperty("mtuSize")
  private Integer mtuSize;

  @JsonProperty("dnsEnable")
  private Boolean dnsEnable;

  @JsonProperty("dnsConfig")
  private DnsConfigOpenApiVo dnsConfig;

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

  /**
   * 0: Auto; 1：Manually
   * @return configType
  */
  @ApiModelProperty(required = true, value = "0: Auto; 1：Manually")
  @NotNull


  public Integer getConfigType() {
    return configType;
  }

  public void setConfigType(Integer configType) {
    this.configType = configType;
  }

  public UsbLteSettingConfigOpenApiVo autoConfig(AutoConfigOpenApiVo autoConfig) {
    this.autoConfig = autoConfig;
    return this;
  }

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

  @Valid

  public AutoConfigOpenApiVo getAutoConfig() {
    return autoConfig;
  }

  public void setAutoConfig(AutoConfigOpenApiVo autoConfig) {
    this.autoConfig = autoConfig;
  }

  public UsbLteSettingConfigOpenApiVo manuallyConfig(ManuallyConfigOpenApiVo manuallyConfig) {
    this.manuallyConfig = manuallyConfig;
    return this;
  }

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

  @Valid

  public ManuallyConfigOpenApiVo getManuallyConfig() {
    return manuallyConfig;
  }

  public void setManuallyConfig(ManuallyConfigOpenApiVo manuallyConfig) {
    this.manuallyConfig = manuallyConfig;
  }

  public UsbLteSettingConfigOpenApiVo connectionMode(Integer connectionMode) {
    this.connectionMode = connectionMode;
    return this;
  }

  /**
   * 1: Connect Automatically, 2: Connect Manually.
   * @return connectionMode
  */
  @ApiModelProperty(required = true, value = "1: Connect Automatically, 2: Connect Manually.")
  @NotNull


  public Integer getConnectionMode() {
    return connectionMode;
  }

  public void setConnectionMode(Integer connectionMode) {
    this.connectionMode = connectionMode;
  }

  public UsbLteSettingConfigOpenApiVo pin(String pin) {
    this.pin = pin;
    return this;
  }

  /**
   * It is required when [usbModemMsgId] is 1 or 3.
   * @return pin
  */
  @ApiModelProperty(value = "It is required when [usbModemMsgId] is 1 or 3.")


  public String getPin() {
    return pin;
  }

  public void setPin(String pin) {
    this.pin = pin;
  }

  public UsbLteSettingConfigOpenApiVo authType(Integer authType) {
    this.authType = authType;
    return this;
  }

  /**
   * 0:Auto; 1:PAP; 2:CHAP.
   * @return authType
  */
  @ApiModelProperty(required = true, value = "0:Auto; 1:PAP; 2:CHAP.")
  @NotNull


  public Integer getAuthType() {
    return authType;
  }

  public void setAuthType(Integer authType) {
    this.authType = authType;
  }

  public UsbLteSettingConfigOpenApiVo mtuSize(Integer mtuSize) {
    this.mtuSize = mtuSize;
    return this;
  }

  /**
   * MTU ranges from 576 ~ 1500.
   * @return mtuSize
  */
  @ApiModelProperty(required = true, value = "MTU ranges from 576 ~ 1500.")
  @NotNull


  public Integer getMtuSize() {
    return mtuSize;
  }

  public void setMtuSize(Integer mtuSize) {
    this.mtuSize = mtuSize;
  }

  public UsbLteSettingConfigOpenApiVo dnsEnable(Boolean dnsEnable) {
    this.dnsEnable = dnsEnable;
    return this;
  }

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


  public Boolean getDnsEnable() {
    return dnsEnable;
  }

  public void setDnsEnable(Boolean dnsEnable) {
    this.dnsEnable = dnsEnable;
  }

  public UsbLteSettingConfigOpenApiVo dnsConfig(DnsConfigOpenApiVo dnsConfig) {
    this.dnsConfig = dnsConfig;
    return this;
  }

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

  @Valid

  public DnsConfigOpenApiVo getDnsConfig() {
    return dnsConfig;
  }

  public void setDnsConfig(DnsConfigOpenApiVo dnsConfig) {
    this.dnsConfig = dnsConfig;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    UsbLteSettingConfigOpenApiVo usbLteSettingConfigOpenApiVo = (UsbLteSettingConfigOpenApiVo) o;
    return Objects.equals(this.portId, usbLteSettingConfigOpenApiVo.portId) &&
        Objects.equals(this.portDescription, usbLteSettingConfigOpenApiVo.portDescription) &&
        Objects.equals(this.configType, usbLteSettingConfigOpenApiVo.configType) &&
        Objects.equals(this.autoConfig, usbLteSettingConfigOpenApiVo.autoConfig) &&
        Objects.equals(this.manuallyConfig, usbLteSettingConfigOpenApiVo.manuallyConfig) &&
        Objects.equals(this.connectionMode, usbLteSettingConfigOpenApiVo.connectionMode) &&
        Objects.equals(this.pin, usbLteSettingConfigOpenApiVo.pin) &&
        Objects.equals(this.authType, usbLteSettingConfigOpenApiVo.authType) &&
        Objects.equals(this.mtuSize, usbLteSettingConfigOpenApiVo.mtuSize) &&
        Objects.equals(this.dnsEnable, usbLteSettingConfigOpenApiVo.dnsEnable) &&
        Objects.equals(this.dnsConfig, usbLteSettingConfigOpenApiVo.dnsConfig);
  }

  @Override
  public int hashCode() {
    return Objects.hash(portId, portDescription, configType, autoConfig, manuallyConfig, connectionMode, pin, authType, mtuSize, dnsEnable, dnsConfig);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class UsbLteSettingConfigOpenApiVo {\n");
    
    sb.append("    portId: ").append(toIndentedString(portId)).append("\n");
    sb.append("    portDescription: ").append(toIndentedString(portDescription)).append("\n");
    sb.append("    configType: ").append(toIndentedString(configType)).append("\n");
    sb.append("    autoConfig: ").append(toIndentedString(autoConfig)).append("\n");
    sb.append("    manuallyConfig: ").append(toIndentedString(manuallyConfig)).append("\n");
    sb.append("    connectionMode: ").append(toIndentedString(connectionMode)).append("\n");
    sb.append("    pin: ").append(toIndentedString(pin)).append("\n");
    sb.append("    authType: ").append(toIndentedString(authType)).append("\n");
    sb.append("    mtuSize: ").append(toIndentedString(mtuSize)).append("\n");
    sb.append("    dnsEnable: ").append(toIndentedString(dnsEnable)).append("\n");
    sb.append("    dnsConfig: ").append(toIndentedString(dnsConfig)).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    ");
  }
}

