/*
 * Cloudera Manager API
 * <h1>Cloudera Manager API v50</h1>       <p>Introduced in Cloudera Manager 7.8.1</p>       <p><a href=\"http://www.cloudera.com/documentation.html\">Cloudera Product Documentation</a></p>
 *
 * OpenAPI spec version: 7.8.1
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.cloudera.api.swagger.model;

import java.util.Objects;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.math.BigDecimal;

/**
 * An HDFS file descriptor.
 */
@ApiModel(description = "An HDFS file descriptor.")
@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2022-11-17T16:38:34.097Z")
public class ApiHdfsFile {
  @SerializedName("absolutePath")
  private String absolutePath = null;

  @SerializedName("length")
  private java.math.BigDecimal length = null;

  @SerializedName("dir")
  private Boolean dir = null;

  @SerializedName("replication")
  private BigDecimal replication = null;

  @SerializedName("blockSize")
  private java.math.BigDecimal blockSize = null;

  @SerializedName("modificationTime")
  private String modificationTime = null;

  @SerializedName("accessTime")
  private String accessTime = null;

  @SerializedName("permission")
  private BigDecimal permission = null;

  @SerializedName("owner")
  private String owner = null;

  @SerializedName("group")
  private String group = null;

  public ApiHdfsFile absolutePath(String absolutePath) {
    this.absolutePath = absolutePath;
    return this;
  }

   /**
   * Fully qualified path of file.
   * @return absolutePath
  **/
  @ApiModelProperty(value = "Fully qualified path of file.")
  public String getAbsolutePath() {
    return absolutePath;
  }

  public void setAbsolutePath(String absolutePath) {
    this.absolutePath = absolutePath;
  }

  public ApiHdfsFile length(java.math.BigDecimal length) {
    this.length = length;
    return this;
  }

   /**
   * Size of file.
   * @return length
  **/
  @ApiModelProperty(required = true, value = "Size of file.")
  public java.math.BigDecimal getLength() {
    return length;
  }

  public void setLength(java.math.BigDecimal length) {
    this.length = length;
  }

  public ApiHdfsFile dir(Boolean dir) {
    this.dir = dir;
    return this;
  }

   /**
   * Indicates whether the file is a directory.
   * @return dir
  **/
  @ApiModelProperty(required = true, value = "Indicates whether the file is a directory.")
  public Boolean getDir() {
    return dir;
  }

  public void setDir(Boolean dir) {
    this.dir = dir;
  }

  public ApiHdfsFile replication(BigDecimal replication) {
    this.replication = replication;
    return this;
  }

   /**
   * Configured block replication factor of file.
   * @return replication
  **/
  @ApiModelProperty(required = true, value = "Configured block replication factor of file.")
  public BigDecimal getReplication() {
    return replication;
  }

  public void setReplication(BigDecimal replication) {
    this.replication = replication;
  }

  public ApiHdfsFile blockSize(java.math.BigDecimal blockSize) {
    this.blockSize = blockSize;
    return this;
  }

   /**
   * Configured block size of file in bytes.
   * @return blockSize
  **/
  @ApiModelProperty(required = true, value = "Configured block size of file in bytes.")
  public java.math.BigDecimal getBlockSize() {
    return blockSize;
  }

  public void setBlockSize(java.math.BigDecimal blockSize) {
    this.blockSize = blockSize;
  }

  public ApiHdfsFile modificationTime(String modificationTime) {
    this.modificationTime = modificationTime;
    return this;
  }

   /**
   * Last modification time of file in milliseconds since January 1, 1970 UTC.
   * @return modificationTime
  **/
  @ApiModelProperty(value = "Last modification time of file in milliseconds since January 1, 1970 UTC.")
  public String getModificationTime() {
    return modificationTime;
  }

  public void setModificationTime(String modificationTime) {
    this.modificationTime = modificationTime;
  }

  public ApiHdfsFile accessTime(String accessTime) {
    this.accessTime = accessTime;
    return this;
  }

   /**
   * Last access time of file in milliseconds since January 1, 1970 UTC.
   * @return accessTime
  **/
  @ApiModelProperty(value = "Last access time of file in milliseconds since January 1, 1970 UTC.")
  public String getAccessTime() {
    return accessTime;
  }

  public void setAccessTime(String accessTime) {
    this.accessTime = accessTime;
  }

  public ApiHdfsFile permission(BigDecimal permission) {
    this.permission = permission;
    return this;
  }

   /**
   * Permission of the file where the digits in order represent: Sticky bit, User action, Group action, Other action.
   * @return permission
  **/
  @ApiModelProperty(required = true, value = "Permission of the file where the digits in order represent: Sticky bit, User action, Group action, Other action.")
  public BigDecimal getPermission() {
    return permission;
  }

  public void setPermission(BigDecimal permission) {
    this.permission = permission;
  }

  public ApiHdfsFile owner(String owner) {
    this.owner = owner;
    return this;
  }

   /**
   * Owner of the file.
   * @return owner
  **/
  @ApiModelProperty(value = "Owner of the file.")
  public String getOwner() {
    return owner;
  }

  public void setOwner(String owner) {
    this.owner = owner;
  }

  public ApiHdfsFile group(String group) {
    this.group = group;
    return this;
  }

   /**
   * Group of the file.
   * @return group
  **/
  @ApiModelProperty(value = "Group of the file.")
  public String getGroup() {
    return group;
  }

  public void setGroup(String group) {
    this.group = group;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApiHdfsFile apiHdfsFile = (ApiHdfsFile) o;
    return Objects.equals(this.absolutePath, apiHdfsFile.absolutePath) &&
        Objects.equals(this.length, apiHdfsFile.length) &&
        Objects.equals(this.dir, apiHdfsFile.dir) &&
        Objects.equals(this.replication, apiHdfsFile.replication) &&
        Objects.equals(this.blockSize, apiHdfsFile.blockSize) &&
        Objects.equals(this.modificationTime, apiHdfsFile.modificationTime) &&
        Objects.equals(this.accessTime, apiHdfsFile.accessTime) &&
        Objects.equals(this.permission, apiHdfsFile.permission) &&
        Objects.equals(this.owner, apiHdfsFile.owner) &&
        Objects.equals(this.group, apiHdfsFile.group);
  }

  @Override
  public int hashCode() {
    return Objects.hash(absolutePath, length, dir, replication, blockSize, modificationTime, accessTime, permission, owner, group);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApiHdfsFile {\n");
    
    sb.append("    absolutePath: ").append(toIndentedString(absolutePath)).append("\n");
    sb.append("    length: ").append(toIndentedString(length)).append("\n");
    sb.append("    dir: ").append(toIndentedString(dir)).append("\n");
    sb.append("    replication: ").append(toIndentedString(replication)).append("\n");
    sb.append("    blockSize: ").append(toIndentedString(blockSize)).append("\n");
    sb.append("    modificationTime: ").append(toIndentedString(modificationTime)).append("\n");
    sb.append("    accessTime: ").append(toIndentedString(accessTime)).append("\n");
    sb.append("    permission: ").append(toIndentedString(permission)).append("\n");
    sb.append("    owner: ").append(toIndentedString(owner)).append("\n");
    sb.append("    group: ").append(toIndentedString(group)).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(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
  
}

