/*
 * Azure Blockchain Workbench REST API
 * The Azure Blockchain Workbench REST API is a Workbench extensibility point, which allows developers to create and manage blockchain applications, manage users and organizations within a consortium, integrate blockchain applications into services and platforms, perform transactions on a blockchain, and retrieve transactional and contract data from a blockchain.
 *
 * OpenAPI spec version: v1
 * 
 *
 * 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 io.swagger.client.model;

import java.util.Objects;
import java.util.Arrays;
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 io.swagger.client.model.EntityTagHeaderValue;
import io.swagger.client.model.Stream;
import java.io.IOException;
import org.joda.time.DateTime;

/**
 * FileStreamResult
 */

public class FileStreamResult {
  @SerializedName("fileStream")
  private Stream fileStream = null;

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

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

  @SerializedName("lastModified")
  private DateTime lastModified = null;

  @SerializedName("entityTag")
  private EntityTagHeaderValue entityTag = null;

  public FileStreamResult fileStream(Stream fileStream) {
    this.fileStream = fileStream;
    return this;
  }

   /**
   * Get fileStream
   * @return fileStream
  **/
  @ApiModelProperty(value = "")
  public Stream getFileStream() {
    return fileStream;
  }

  public void setFileStream(Stream fileStream) {
    this.fileStream = fileStream;
  }

   /**
   * Get contentType
   * @return contentType
  **/
  @ApiModelProperty(value = "")
  public String getContentType() {
    return contentType;
  }

  public FileStreamResult fileDownloadName(String fileDownloadName) {
    this.fileDownloadName = fileDownloadName;
    return this;
  }

   /**
   * Get fileDownloadName
   * @return fileDownloadName
  **/
  @ApiModelProperty(value = "")
  public String getFileDownloadName() {
    return fileDownloadName;
  }

  public void setFileDownloadName(String fileDownloadName) {
    this.fileDownloadName = fileDownloadName;
  }

  public FileStreamResult lastModified(DateTime lastModified) {
    this.lastModified = lastModified;
    return this;
  }

   /**
   * Get lastModified
   * @return lastModified
  **/
  @ApiModelProperty(value = "")
  public DateTime getLastModified() {
    return lastModified;
  }

  public void setLastModified(DateTime lastModified) {
    this.lastModified = lastModified;
  }

  public FileStreamResult entityTag(EntityTagHeaderValue entityTag) {
    this.entityTag = entityTag;
    return this;
  }

   /**
   * Get entityTag
   * @return entityTag
  **/
  @ApiModelProperty(value = "")
  public EntityTagHeaderValue getEntityTag() {
    return entityTag;
  }

  public void setEntityTag(EntityTagHeaderValue entityTag) {
    this.entityTag = entityTag;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    FileStreamResult fileStreamResult = (FileStreamResult) o;
    return Objects.equals(this.fileStream, fileStreamResult.fileStream) &&
        Objects.equals(this.contentType, fileStreamResult.contentType) &&
        Objects.equals(this.fileDownloadName, fileStreamResult.fileDownloadName) &&
        Objects.equals(this.lastModified, fileStreamResult.lastModified) &&
        Objects.equals(this.entityTag, fileStreamResult.entityTag);
  }

  @Override
  public int hashCode() {
    return Objects.hash(fileStream, contentType, fileDownloadName, lastModified, entityTag);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class FileStreamResult {\n");
    
    sb.append("    fileStream: ").append(toIndentedString(fileStream)).append("\n");
    sb.append("    contentType: ").append(toIndentedString(contentType)).append("\n");
    sb.append("    fileDownloadName: ").append(toIndentedString(fileDownloadName)).append("\n");
    sb.append("    lastModified: ").append(toIndentedString(lastModified)).append("\n");
    sb.append("    entityTag: ").append(toIndentedString(entityTag)).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    ");
  }

}

