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

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

import javax.validation.constraints.NotNull;
import java.util.Objects;

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

public class ModifyHistoryRetentionOpenApiVo   {
  @JsonProperty("override")
  private Boolean override;

  @JsonProperty("clientsDataEnable")
  private Boolean clientsDataEnable;

  @JsonProperty("knownClient")
  private Integer knownClient;

  @JsonProperty("clientHistory")
  private Integer clientHistory;

  @JsonProperty("daily")
  private Integer daily;

  @JsonProperty("weekly")
  private Integer weekly;

  @JsonProperty("portalAuth")
  private Integer portalAuth;

  @JsonProperty("log")
  private Integer log;

  @JsonProperty("rogueAp")
  private Integer rogueAp;

  @JsonProperty("widsData")
  private Integer widsData;

  public ModifyHistoryRetentionOpenApiVo override(Boolean override) {
    this.override = override;
    return this;
  }

  /**
   * Whether the customer overrides the retention configuration of MSP. This configuration applies to the customer in MSP mode only. If true, customer retention configuration will be used (excluding daily, clientHistory, log and widsData).
   * @return override
  */
  @ApiModelProperty(value = "Whether the customer overrides the retention configuration of MSP. This configuration applies to the customer in MSP mode only. If true, customer retention configuration will be used (excluding daily, clientHistory, log and widsData).")


  public Boolean getOverride() {
    return override;
  }

  public void setOverride(Boolean override) {
    this.override = override;
  }

  public ModifyHistoryRetentionOpenApiVo clientsDataEnable(Boolean clientsDataEnable) {
    this.clientsDataEnable = clientsDataEnable;
    return this;
  }

  /**
   * Whether the clients' history data is recorded.
   * @return clientsDataEnable
  */
  @ApiModelProperty(required = true, value = "Whether the clients' history data is recorded.")
  @NotNull


  public Boolean getClientsDataEnable() {
    return clientsDataEnable;
  }

  public void setClientsDataEnable(Boolean clientsDataEnable) {
    this.clientsDataEnable = clientsDataEnable;
  }

  public ModifyHistoryRetentionOpenApiVo knownClient(Integer knownClient) {
    this.knownClient = knownClient;
    return this;
  }

  /**
   * Retention configuration of known client Data, knownClient should be a value as follows: -1: Disabled; 0: All Time(Windows, Linux Only); 1: 1day; 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return knownClient
  */
  @ApiModelProperty(value = "Retention configuration of known client Data, knownClient should be a value as follows: -1: Disabled; 0: All Time(Windows, Linux Only); 1: 1day; 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getKnownClient() {
    return knownClient;
  }

  public void setKnownClient(Integer knownClient) {
    this.knownClient = knownClient;
  }

  public ModifyHistoryRetentionOpenApiVo clientHistory(Integer clientHistory) {
    this.clientHistory = clientHistory;
    return this;
  }

  /**
   * Retention configuration of client History(only effective in local controller), clientHistory should be a value as follows: -1: Disabled; 0: All Time(Windows, Linux Only); 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return clientHistory
  */
  @ApiModelProperty(value = "Retention configuration of client History(only effective in local controller), clientHistory should be a value as follows: -1: Disabled; 0: All Time(Windows, Linux Only); 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getClientHistory() {
    return clientHistory;
  }

  public void setClientHistory(Integer clientHistory) {
    this.clientHistory = clientHistory;
  }

  public ModifyHistoryRetentionOpenApiVo daily(Integer daily) {
    this.daily = daily;
    return this;
  }

  /**
   * Retention configuration of time series with daily granularity, daily should be a value as follows: 90: 90days; 180: 180days; 365: 365days(Fixed value in Cloud Based Controller as 365 days).
   * @return daily
  */
  @ApiModelProperty(value = "Retention configuration of time series with daily granularity, daily should be a value as follows: 90: 90days; 180: 180days; 365: 365days(Fixed value in Cloud Based Controller as 365 days).")


  public Integer getDaily() {
    return daily;
  }

  public void setDaily(Integer daily) {
    this.daily = daily;
  }

  public ModifyHistoryRetentionOpenApiVo weekly(Integer weekly) {
    this.weekly = weekly;
    return this;
  }

  /**
   * Retention configuration of time series with weekly granularity, weekly should be a value as follows: 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return weekly
  */
  @ApiModelProperty(value = "Retention configuration of time series with weekly granularity, weekly should be a value as follows: 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getWeekly() {
    return weekly;
  }

  public void setWeekly(Integer weekly) {
    this.weekly = weekly;
  }

  public ModifyHistoryRetentionOpenApiVo portalAuth(Integer portalAuth) {
    this.portalAuth = portalAuth;
    return this;
  }

  /**
   * Retention configuration of portal authentication records, portalAuth should be a value as follows: 0: All Time(Windows, Linux Only); 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return portalAuth
  */
  @ApiModelProperty(value = "Retention configuration of portal authentication records, portalAuth should be a value as follows: 0: All Time(Windows, Linux Only); 7: 7days; 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getPortalAuth() {
    return portalAuth;
  }

  public void setPortalAuth(Integer portalAuth) {
    this.portalAuth = portalAuth;
  }

  public ModifyHistoryRetentionOpenApiVo log(Integer log) {
    this.log = log;
    return this;
  }

  /**
   * Retention Configuration of log data(only effective in local controller), log should be a value as follows: 0: All Time(Windows, Linux Only); 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return log
  */
  @ApiModelProperty(value = "Retention Configuration of log data(only effective in local controller), log should be a value as follows: 0: All Time(Windows, Linux Only); 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getLog() {
    return log;
  }

  public void setLog(Integer log) {
    this.log = log;
  }

  public ModifyHistoryRetentionOpenApiVo rogueAp(Integer rogueAp) {
    this.rogueAp = rogueAp;
    return this;
  }

  /**
   * Retention Configuration of rogue ap data, rogueAp should be a value as follows: 0: All Time(Windows, Linux Only); 31: 31days; 90: 90days; 180: 180days; 365: 365days.
   * @return rogueAp
  */
  @ApiModelProperty(value = "Retention Configuration of rogue ap data, rogueAp should be a value as follows: 0: All Time(Windows, Linux Only); 31: 31days; 90: 90days; 180: 180days; 365: 365days.")


  public Integer getRogueAp() {
    return rogueAp;
  }

  public void setRogueAp(Integer rogueAp) {
    this.rogueAp = rogueAp;
  }

  public ModifyHistoryRetentionOpenApiVo widsData(Integer widsData) {
    this.widsData = widsData;
    return this;
  }

  /**
   * Retention Configuration of wids data(only effective in local pro controller), widsData should be a value as follows: 0: All Time(Windows, Linux Only); 90: 90days; 180: 180days; 365: 365days.
   * @return widsData
  */
  @ApiModelProperty(value = "Retention Configuration of wids data(only effective in local pro controller), widsData should be a value as follows: 0: All Time(Windows, Linux Only); 90: 90days; 180: 180days; 365: 365days.")


  public Integer getWidsData() {
    return widsData;
  }

  public void setWidsData(Integer widsData) {
    this.widsData = widsData;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ModifyHistoryRetentionOpenApiVo modifyHistoryRetentionOpenApiVo = (ModifyHistoryRetentionOpenApiVo) o;
    return Objects.equals(this.override, modifyHistoryRetentionOpenApiVo.override) &&
        Objects.equals(this.clientsDataEnable, modifyHistoryRetentionOpenApiVo.clientsDataEnable) &&
        Objects.equals(this.knownClient, modifyHistoryRetentionOpenApiVo.knownClient) &&
        Objects.equals(this.clientHistory, modifyHistoryRetentionOpenApiVo.clientHistory) &&
        Objects.equals(this.daily, modifyHistoryRetentionOpenApiVo.daily) &&
        Objects.equals(this.weekly, modifyHistoryRetentionOpenApiVo.weekly) &&
        Objects.equals(this.portalAuth, modifyHistoryRetentionOpenApiVo.portalAuth) &&
        Objects.equals(this.log, modifyHistoryRetentionOpenApiVo.log) &&
        Objects.equals(this.rogueAp, modifyHistoryRetentionOpenApiVo.rogueAp) &&
        Objects.equals(this.widsData, modifyHistoryRetentionOpenApiVo.widsData);
  }

  @Override
  public int hashCode() {
    return Objects.hash(override, clientsDataEnable, knownClient, clientHistory, daily, weekly, portalAuth, log, rogueAp, widsData);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ModifyHistoryRetentionOpenApiVo {\n");
    
    sb.append("    override: ").append(toIndentedString(override)).append("\n");
    sb.append("    clientsDataEnable: ").append(toIndentedString(clientsDataEnable)).append("\n");
    sb.append("    knownClient: ").append(toIndentedString(knownClient)).append("\n");
    sb.append("    clientHistory: ").append(toIndentedString(clientHistory)).append("\n");
    sb.append("    daily: ").append(toIndentedString(daily)).append("\n");
    sb.append("    weekly: ").append(toIndentedString(weekly)).append("\n");
    sb.append("    portalAuth: ").append(toIndentedString(portalAuth)).append("\n");
    sb.append("    log: ").append(toIndentedString(log)).append("\n");
    sb.append("    rogueAp: ").append(toIndentedString(rogueAp)).append("\n");
    sb.append("    widsData: ").append(toIndentedString(widsData)).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    ");
  }
}

