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

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

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

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

public class ApOverviewInfo   {
  @JsonProperty("type")
  private String type;

  @JsonProperty("mac")
  private String mac;

  @JsonProperty("name")
  private String name;

  @JsonProperty("ip")
  private String ip;

  @JsonProperty("ipv6List")
  @Valid
  private List<String> ipv6List = null;

  @JsonProperty("wlan group id")
  private String wlanGroupId;

  @JsonProperty("wireless uplink info")
  private ApWirelessUplink wirelessUplinkInfo;

  @JsonProperty("model")
  private String model;

  @JsonProperty("firmwareVersion")
  private String firmwareVersion;

  @JsonProperty("cpuUtil")
  private Integer cpuUtil;

  @JsonProperty("memoryUtil")
  private Integer memoryUtil;

  @JsonProperty("uptimeLong")
  private Long uptimeLong;

  public ApOverviewInfo type(String type) {
    this.type = type;
    return this;
  }

  /**
   * Device type
   * @return type
  */
  @ApiModelProperty(value = "Device type")


  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }

  public ApOverviewInfo mac(String mac) {
    this.mac = mac;
    return this;
  }

  /**
   * Device MAC, e.g. 00-00-FF-FF-0C-E9
   * @return mac
  */
  @ApiModelProperty(value = "Device MAC, e.g. 00-00-FF-FF-0C-E9")


  public String getMac() {
    return mac;
  }

  public void setMac(String mac) {
    this.mac = mac;
  }

  public ApOverviewInfo name(String name) {
    this.name = name;
    return this;
  }

  /**
   * Device name
   * @return name
  */
  @ApiModelProperty(value = "Device name")


  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public ApOverviewInfo ip(String ip) {
    this.ip = ip;
    return this;
  }

  /**
   * Device IP
   * @return ip
  */
  @ApiModelProperty(value = "Device IP")


  public String getIp() {
    return ip;
  }

  public void setIp(String ip) {
    this.ip = ip;
  }

  public ApOverviewInfo ipv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
    return this;
  }

  public ApOverviewInfo addIpv6ListItem(String ipv6ListItem) {
    if (this.ipv6List == null) {
      this.ipv6List = new ArrayList<>();
    }
    this.ipv6List.add(ipv6ListItem);
    return this;
  }

  /**
   * Device IPv6
   * @return ipv6List
  */
  @ApiModelProperty(value = "Device IPv6")


  public List<String> getIpv6List() {
    return ipv6List;
  }

  public void setIpv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
  }

  public ApOverviewInfo wlanGroupId(String wlanGroupId) {
    this.wlanGroupId = wlanGroupId;
    return this;
  }

  /**
   * WLAN group ID
   * @return wlanGroupId
  */
  @ApiModelProperty(value = "WLAN group ID")


  public String getWlanGroupId() {
    return wlanGroupId;
  }

  public void setWlanGroupId(String wlanGroupId) {
    this.wlanGroupId = wlanGroupId;
  }

  public ApOverviewInfo wirelessUplinkInfo(ApWirelessUplink wirelessUplinkInfo) {
    this.wirelessUplinkInfo = wirelessUplinkInfo;
    return this;
  }

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

  @Valid

  public ApWirelessUplink getWirelessUplinkInfo() {
    return wirelessUplinkInfo;
  }

  public void setWirelessUplinkInfo(ApWirelessUplink wirelessUplinkInfo) {
    this.wirelessUplinkInfo = wirelessUplinkInfo;
  }

  public ApOverviewInfo model(String model) {
    this.model = model;
    return this;
  }

  /**
   * Device model
   * @return model
  */
  @ApiModelProperty(value = "Device model")


  public String getModel() {
    return model;
  }

  public void setModel(String model) {
    this.model = model;
  }

  public ApOverviewInfo firmwareVersion(String firmwareVersion) {
    this.firmwareVersion = firmwareVersion;
    return this;
  }

  /**
   * Device firmware version
   * @return firmwareVersion
  */
  @ApiModelProperty(value = "Device firmware version")


  public String getFirmwareVersion() {
    return firmwareVersion;
  }

  public void setFirmwareVersion(String firmwareVersion) {
    this.firmwareVersion = firmwareVersion;
  }

  public ApOverviewInfo cpuUtil(Integer cpuUtil) {
    this.cpuUtil = cpuUtil;
    return this;
  }

  /**
   * Device cpu util(like 1 means 1% cpu util)
   * @return cpuUtil
  */
  @ApiModelProperty(value = "Device cpu util(like 1 means 1% cpu util)")


  public Integer getCpuUtil() {
    return cpuUtil;
  }

  public void setCpuUtil(Integer cpuUtil) {
    this.cpuUtil = cpuUtil;
  }

  public ApOverviewInfo memoryUtil(Integer memoryUtil) {
    this.memoryUtil = memoryUtil;
    return this;
  }

  /**
   * Device memory util(like 50 means 50% memory util)
   * @return memoryUtil
  */
  @ApiModelProperty(value = "Device memory util(like 50 means 50% memory util)")


  public Integer getMemoryUtil() {
    return memoryUtil;
  }

  public void setMemoryUtil(Integer memoryUtil) {
    this.memoryUtil = memoryUtil;
  }

  public ApOverviewInfo uptimeLong(Long uptimeLong) {
    this.uptimeLong = uptimeLong;
    return this;
  }

  /**
   * Device uptime(unit:second)
   * @return uptimeLong
  */
  @ApiModelProperty(value = "Device uptime(unit:second)")


  public Long getUptimeLong() {
    return uptimeLong;
  }

  public void setUptimeLong(Long uptimeLong) {
    this.uptimeLong = uptimeLong;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApOverviewInfo apOverviewInfo = (ApOverviewInfo) o;
    return Objects.equals(this.type, apOverviewInfo.type) &&
        Objects.equals(this.mac, apOverviewInfo.mac) &&
        Objects.equals(this.name, apOverviewInfo.name) &&
        Objects.equals(this.ip, apOverviewInfo.ip) &&
        Objects.equals(this.ipv6List, apOverviewInfo.ipv6List) &&
        Objects.equals(this.wlanGroupId, apOverviewInfo.wlanGroupId) &&
        Objects.equals(this.wirelessUplinkInfo, apOverviewInfo.wirelessUplinkInfo) &&
        Objects.equals(this.model, apOverviewInfo.model) &&
        Objects.equals(this.firmwareVersion, apOverviewInfo.firmwareVersion) &&
        Objects.equals(this.cpuUtil, apOverviewInfo.cpuUtil) &&
        Objects.equals(this.memoryUtil, apOverviewInfo.memoryUtil) &&
        Objects.equals(this.uptimeLong, apOverviewInfo.uptimeLong);
  }

  @Override
  public int hashCode() {
    return Objects.hash(type, mac, name, ip, ipv6List, wlanGroupId, wirelessUplinkInfo, model, firmwareVersion, cpuUtil, memoryUtil, uptimeLong);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApOverviewInfo {\n");
    
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    mac: ").append(toIndentedString(mac)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    ip: ").append(toIndentedString(ip)).append("\n");
    sb.append("    ipv6List: ").append(toIndentedString(ipv6List)).append("\n");
    sb.append("    wlanGroupId: ").append(toIndentedString(wlanGroupId)).append("\n");
    sb.append("    wirelessUplinkInfo: ").append(toIndentedString(wirelessUplinkInfo)).append("\n");
    sb.append("    model: ").append(toIndentedString(model)).append("\n");
    sb.append("    firmwareVersion: ").append(toIndentedString(firmwareVersion)).append("\n");
    sb.append("    cpuUtil: ").append(toIndentedString(cpuUtil)).append("\n");
    sb.append("    memoryUtil: ").append(toIndentedString(memoryUtil)).append("\n");
    sb.append("    uptimeLong: ").append(toIndentedString(uptimeLong)).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    ");
  }
}

