package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Objects;

/**
 * Advanced setting list of the VPN, only for Manual IPSec type.
 */
@ApiModel(description = "Advanced setting list of the VPN, only for Manual IPSec type.")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class VpnAdvancedSettingOpenApiVo   {
  @JsonProperty("keyExchangeVersion")
  private Integer keyExchangeVersion;

  @JsonProperty("phase1Proposal1")
  private Integer phase1Proposal1;

  @JsonProperty("phase1Proposal2")
  private Integer phase1Proposal2;

  @JsonProperty("phase1Proposal3")
  private Integer phase1Proposal3;

  @JsonProperty("exchangeMode")
  private Integer exchangeMode;

  @JsonProperty("negotiationMode")
  private Integer negotiationMode;

  @JsonProperty("localIdType")
  private Integer localIdType;

  @JsonProperty("localName")
  private String localName;

  @JsonProperty("remoteIdType")
  private Integer remoteIdType;

  @JsonProperty("remoteName")
  private String remoteName;

  @JsonProperty("saLifetime")
  private Integer saLifetime;

  @JsonProperty("dpd")
  private Boolean dpd;

  @JsonProperty("dpdInterval")
  private Integer dpdInterval;

  @JsonProperty("encapsulationMode")
  private Integer encapsulationMode;

  @JsonProperty("phase2Proposal1")
  private Integer phase2Proposal1;

  @JsonProperty("phase2Proposal2")
  private Integer phase2Proposal2;

  @JsonProperty("phase2Proposal3")
  private Integer phase2Proposal3;

  @JsonProperty("pfs")
  private Integer pfs;

  @JsonProperty("saLifetime2")
  private Integer saLifetime2;

  public VpnAdvancedSettingOpenApiVo keyExchangeVersion(Integer keyExchangeVersion) {
    this.keyExchangeVersion = keyExchangeVersion;
    return this;
  }

  /**
   * Key exchange version should be a value as follows: 0: IKEv1; 1: IKEv2.
   * @return keyExchangeVersion
  */
  @ApiModelProperty(value = "Key exchange version should be a value as follows: 0: IKEv1; 1: IKEv2.")


  public Integer getKeyExchangeVersion() {
    return keyExchangeVersion;
  }

  public void setKeyExchangeVersion(Integer keyExchangeVersion) {
    this.keyExchangeVersion = keyExchangeVersion;
  }

  public VpnAdvancedSettingOpenApiVo phase1Proposal1(Integer phase1Proposal1) {
    this.phase1Proposal1 = phase1Proposal1;
    return this;
  }

  /**
   * Phase1 proposal1 should be a value as follows: 0: MD5; 1: SHA1.
   * @return phase1Proposal1
  */
  @ApiModelProperty(value = "Phase1 proposal1 should be a value as follows: 0: MD5; 1: SHA1.")


  public Integer getPhase1Proposal1() {
    return phase1Proposal1;
  }

  public void setPhase1Proposal1(Integer phase1Proposal1) {
    this.phase1Proposal1 = phase1Proposal1;
  }

  public VpnAdvancedSettingOpenApiVo phase1Proposal2(Integer phase1Proposal2) {
    this.phase1Proposal2 = phase1Proposal2;
    return this;
  }

  /**
   * Phase1 proposal2 should be a value as follows: 0: DES; 1: 3DES; 2: AES128; 3: AES192; 4: AES256.
   * @return phase1Proposal2
  */
  @ApiModelProperty(value = "Phase1 proposal2 should be a value as follows: 0: DES; 1: 3DES; 2: AES128; 3: AES192; 4: AES256.")


  public Integer getPhase1Proposal2() {
    return phase1Proposal2;
  }

  public void setPhase1Proposal2(Integer phase1Proposal2) {
    this.phase1Proposal2 = phase1Proposal2;
  }

  public VpnAdvancedSettingOpenApiVo phase1Proposal3(Integer phase1Proposal3) {
    this.phase1Proposal3 = phase1Proposal3;
    return this;
  }

  /**
   * Phase1 proposal3 should be a value as follows: 0: DH1; 1: DH2; 2: DH5; 3: DH14; 4: DH15; 5: DH16; 6: DH19; 7: DH20; 8: DH21; 9: DH25; 10: DH26.
   * @return phase1Proposal3
  */
  @ApiModelProperty(value = "Phase1 proposal3 should be a value as follows: 0: DH1; 1: DH2; 2: DH5; 3: DH14; 4: DH15; 5: DH16; 6: DH19; 7: DH20; 8: DH21; 9: DH25; 10: DH26.")


  public Integer getPhase1Proposal3() {
    return phase1Proposal3;
  }

  public void setPhase1Proposal3(Integer phase1Proposal3) {
    this.phase1Proposal3 = phase1Proposal3;
  }

  public VpnAdvancedSettingOpenApiVo exchangeMode(Integer exchangeMode) {
    this.exchangeMode = exchangeMode;
    return this;
  }

  /**
   * Exchange mode should be a value as follows: 0: Main Mode; 1: Aggressive Mode.
   * @return exchangeMode
  */
  @ApiModelProperty(value = "Exchange mode should be a value as follows: 0: Main Mode; 1: Aggressive Mode.")


  public Integer getExchangeMode() {
    return exchangeMode;
  }

  public void setExchangeMode(Integer exchangeMode) {
    this.exchangeMode = exchangeMode;
  }

  public VpnAdvancedSettingOpenApiVo negotiationMode(Integer negotiationMode) {
    this.negotiationMode = negotiationMode;
    return this;
  }

  /**
   * Negotiation mode should be a value as follows: 0: Initiator; 1: Aggressive Mode.
   * @return negotiationMode
  */
  @ApiModelProperty(value = "Negotiation mode should be a value as follows: 0: Initiator; 1: Aggressive Mode.")


  public Integer getNegotiationMode() {
    return negotiationMode;
  }

  public void setNegotiationMode(Integer negotiationMode) {
    this.negotiationMode = negotiationMode;
  }

  public VpnAdvancedSettingOpenApiVo localIdType(Integer localIdType) {
    this.localIdType = localIdType;
    return this;
  }

  /**
   * Local ID type should be a value as follows: 0: IP Address; 1: Name.
   * @return localIdType
  */
  @ApiModelProperty(value = "Local ID type should be a value as follows: 0: IP Address; 1: Name.")


  public Integer getLocalIdType() {
    return localIdType;
  }

  public void setLocalIdType(Integer localIdType) {
    this.localIdType = localIdType;
  }

  public VpnAdvancedSettingOpenApiVo localName(String localName) {
    this.localName = localName;
    return this;
  }

  /**
   * Local name of the VPN advanced setting.
   * @return localName
  */
  @ApiModelProperty(value = "Local name of the VPN advanced setting.")


  public String getLocalName() {
    return localName;
  }

  public void setLocalName(String localName) {
    this.localName = localName;
  }

  public VpnAdvancedSettingOpenApiVo remoteIdType(Integer remoteIdType) {
    this.remoteIdType = remoteIdType;
    return this;
  }

  /**
   * Remote ID type should be a value as follows: 0: IP Address; 1: Name.
   * @return remoteIdType
  */
  @ApiModelProperty(value = "Remote ID type should be a value as follows: 0: IP Address; 1: Name.")


  public Integer getRemoteIdType() {
    return remoteIdType;
  }

  public void setRemoteIdType(Integer remoteIdType) {
    this.remoteIdType = remoteIdType;
  }

  public VpnAdvancedSettingOpenApiVo remoteName(String remoteName) {
    this.remoteName = remoteName;
    return this;
  }

  /**
   * Remote name of the VPN advanced setting.
   * @return remoteName
  */
  @ApiModelProperty(value = "Remote name of the VPN advanced setting.")


  public String getRemoteName() {
    return remoteName;
  }

  public void setRemoteName(String remoteName) {
    this.remoteName = remoteName;
  }

  public VpnAdvancedSettingOpenApiVo saLifetime(Integer saLifetime) {
    this.saLifetime = saLifetime;
    return this;
  }

  /**
   * SA lifetime of the VPN advanced setting.
   * @return saLifetime
  */
  @ApiModelProperty(value = "SA lifetime of the VPN advanced setting.")


  public Integer getSaLifetime() {
    return saLifetime;
  }

  public void setSaLifetime(Integer saLifetime) {
    this.saLifetime = saLifetime;
  }

  public VpnAdvancedSettingOpenApiVo dpd(Boolean dpd) {
    this.dpd = dpd;
    return this;
  }

  /**
   * DPD of the VPN advanced setting.
   * @return dpd
  */
  @ApiModelProperty(value = "DPD of the VPN advanced setting.")


  public Boolean getDpd() {
    return dpd;
  }

  public void setDpd(Boolean dpd) {
    this.dpd = dpd;
  }

  public VpnAdvancedSettingOpenApiVo dpdInterval(Integer dpdInterval) {
    this.dpdInterval = dpdInterval;
    return this;
  }

  /**
   * DPD interval of the VPN advanced setting.
   * @return dpdInterval
  */
  @ApiModelProperty(value = "DPD interval of the VPN advanced setting.")


  public Integer getDpdInterval() {
    return dpdInterval;
  }

  public void setDpdInterval(Integer dpdInterval) {
    this.dpdInterval = dpdInterval;
  }

  public VpnAdvancedSettingOpenApiVo encapsulationMode(Integer encapsulationMode) {
    this.encapsulationMode = encapsulationMode;
    return this;
  }

  /**
   * Encapsulation mode should be a value as follows: 0: Tunnel Mode; 1: Transport Mode.
   * @return encapsulationMode
  */
  @ApiModelProperty(value = "Encapsulation mode should be a value as follows: 0: Tunnel Mode; 1: Transport Mode.")


  public Integer getEncapsulationMode() {
    return encapsulationMode;
  }

  public void setEncapsulationMode(Integer encapsulationMode) {
    this.encapsulationMode = encapsulationMode;
  }

  public VpnAdvancedSettingOpenApiVo phase2Proposal1(Integer phase2Proposal1) {
    this.phase2Proposal1 = phase2Proposal1;
    return this;
  }

  /**
   * Phase2 proposal1 should be a value as follows: 0: AH; 1: ESP.
   * @return phase2Proposal1
  */
  @ApiModelProperty(value = "Phase2 proposal1 should be a value as follows: 0: AH; 1: ESP.")


  public Integer getPhase2Proposal1() {
    return phase2Proposal1;
  }

  public void setPhase2Proposal1(Integer phase2Proposal1) {
    this.phase2Proposal1 = phase2Proposal1;
  }

  public VpnAdvancedSettingOpenApiVo phase2Proposal2(Integer phase2Proposal2) {
    this.phase2Proposal2 = phase2Proposal2;
    return this;
  }

  /**
   * Phase2 proposal2 should be a value as follows: 0: MD; 1: SHA1.
   * @return phase2Proposal2
  */
  @ApiModelProperty(value = "Phase2 proposal2 should be a value as follows: 0: MD; 1: SHA1.")


  public Integer getPhase2Proposal2() {
    return phase2Proposal2;
  }

  public void setPhase2Proposal2(Integer phase2Proposal2) {
    this.phase2Proposal2 = phase2Proposal2;
  }

  public VpnAdvancedSettingOpenApiVo phase2Proposal3(Integer phase2Proposal3) {
    this.phase2Proposal3 = phase2Proposal3;
    return this;
  }

  /**
   * Phase2 proposal3 should be a value as follows: 0: DES; 1: 3DES; 2: AES128; 3: AES192; 4: AES256.
   * @return phase2Proposal3
  */
  @ApiModelProperty(value = "Phase2 proposal3 should be a value as follows: 0: DES; 1: 3DES; 2: AES128; 3: AES192; 4: AES256.")


  public Integer getPhase2Proposal3() {
    return phase2Proposal3;
  }

  public void setPhase2Proposal3(Integer phase2Proposal3) {
    this.phase2Proposal3 = phase2Proposal3;
  }

  public VpnAdvancedSettingOpenApiVo pfs(Integer pfs) {
    this.pfs = pfs;
    return this;
  }

  /**
   * PFS should be a value as follows: 0: None; 1: dh1; 2: dh2; 3: dh5; 14: dh14; 15: dh15.
   * @return pfs
  */
  @ApiModelProperty(value = "PFS should be a value as follows: 0: None; 1: dh1; 2: dh2; 3: dh5; 14: dh14; 15: dh15.")


  public Integer getPfs() {
    return pfs;
  }

  public void setPfs(Integer pfs) {
    this.pfs = pfs;
  }

  public VpnAdvancedSettingOpenApiVo saLifetime2(Integer saLifetime2) {
    this.saLifetime2 = saLifetime2;
    return this;
  }

  /**
   * SA lifetime2 of the VPN advanced setting.
   * @return saLifetime2
  */
  @ApiModelProperty(value = "SA lifetime2 of the VPN advanced setting.")


  public Integer getSaLifetime2() {
    return saLifetime2;
  }

  public void setSaLifetime2(Integer saLifetime2) {
    this.saLifetime2 = saLifetime2;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    VpnAdvancedSettingOpenApiVo vpnAdvancedSettingOpenApiVo = (VpnAdvancedSettingOpenApiVo) o;
    return Objects.equals(this.keyExchangeVersion, vpnAdvancedSettingOpenApiVo.keyExchangeVersion) &&
        Objects.equals(this.phase1Proposal1, vpnAdvancedSettingOpenApiVo.phase1Proposal1) &&
        Objects.equals(this.phase1Proposal2, vpnAdvancedSettingOpenApiVo.phase1Proposal2) &&
        Objects.equals(this.phase1Proposal3, vpnAdvancedSettingOpenApiVo.phase1Proposal3) &&
        Objects.equals(this.exchangeMode, vpnAdvancedSettingOpenApiVo.exchangeMode) &&
        Objects.equals(this.negotiationMode, vpnAdvancedSettingOpenApiVo.negotiationMode) &&
        Objects.equals(this.localIdType, vpnAdvancedSettingOpenApiVo.localIdType) &&
        Objects.equals(this.localName, vpnAdvancedSettingOpenApiVo.localName) &&
        Objects.equals(this.remoteIdType, vpnAdvancedSettingOpenApiVo.remoteIdType) &&
        Objects.equals(this.remoteName, vpnAdvancedSettingOpenApiVo.remoteName) &&
        Objects.equals(this.saLifetime, vpnAdvancedSettingOpenApiVo.saLifetime) &&
        Objects.equals(this.dpd, vpnAdvancedSettingOpenApiVo.dpd) &&
        Objects.equals(this.dpdInterval, vpnAdvancedSettingOpenApiVo.dpdInterval) &&
        Objects.equals(this.encapsulationMode, vpnAdvancedSettingOpenApiVo.encapsulationMode) &&
        Objects.equals(this.phase2Proposal1, vpnAdvancedSettingOpenApiVo.phase2Proposal1) &&
        Objects.equals(this.phase2Proposal2, vpnAdvancedSettingOpenApiVo.phase2Proposal2) &&
        Objects.equals(this.phase2Proposal3, vpnAdvancedSettingOpenApiVo.phase2Proposal3) &&
        Objects.equals(this.pfs, vpnAdvancedSettingOpenApiVo.pfs) &&
        Objects.equals(this.saLifetime2, vpnAdvancedSettingOpenApiVo.saLifetime2);
  }

  @Override
  public int hashCode() {
    return Objects.hash(keyExchangeVersion, phase1Proposal1, phase1Proposal2, phase1Proposal3, exchangeMode, negotiationMode, localIdType, localName, remoteIdType, remoteName, saLifetime, dpd, dpdInterval, encapsulationMode, phase2Proposal1, phase2Proposal2, phase2Proposal3, pfs, saLifetime2);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class VpnAdvancedSettingOpenApiVo {\n");
    
    sb.append("    keyExchangeVersion: ").append(toIndentedString(keyExchangeVersion)).append("\n");
    sb.append("    phase1Proposal1: ").append(toIndentedString(phase1Proposal1)).append("\n");
    sb.append("    phase1Proposal2: ").append(toIndentedString(phase1Proposal2)).append("\n");
    sb.append("    phase1Proposal3: ").append(toIndentedString(phase1Proposal3)).append("\n");
    sb.append("    exchangeMode: ").append(toIndentedString(exchangeMode)).append("\n");
    sb.append("    negotiationMode: ").append(toIndentedString(negotiationMode)).append("\n");
    sb.append("    localIdType: ").append(toIndentedString(localIdType)).append("\n");
    sb.append("    localName: ").append(toIndentedString(localName)).append("\n");
    sb.append("    remoteIdType: ").append(toIndentedString(remoteIdType)).append("\n");
    sb.append("    remoteName: ").append(toIndentedString(remoteName)).append("\n");
    sb.append("    saLifetime: ").append(toIndentedString(saLifetime)).append("\n");
    sb.append("    dpd: ").append(toIndentedString(dpd)).append("\n");
    sb.append("    dpdInterval: ").append(toIndentedString(dpdInterval)).append("\n");
    sb.append("    encapsulationMode: ").append(toIndentedString(encapsulationMode)).append("\n");
    sb.append("    phase2Proposal1: ").append(toIndentedString(phase2Proposal1)).append("\n");
    sb.append("    phase2Proposal2: ").append(toIndentedString(phase2Proposal2)).append("\n");
    sb.append("    phase2Proposal3: ").append(toIndentedString(phase2Proposal3)).append("\n");
    sb.append("    pfs: ").append(toIndentedString(pfs)).append("\n");
    sb.append("    saLifetime2: ").append(toIndentedString(saLifetime2)).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    ");
  }
}

