/*
 * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
package com.amazonaws.services.medialive.model;
import java.io.Serializable;
import javax.annotation.Generated;
/**
 * Placeholder documentation for DescribeInputDeviceThumbnailResponse
 * 
 * @see AWS API Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class DescribeInputDeviceThumbnailResult extends com.amazonaws.AmazonWebServiceResult implements Serializable, Cloneable {
    /** The binary data for the thumbnail that the Link device has most recently sent to MediaLive. */
    private java.io.InputStream body;
    /** Specifies the media type of the thumbnail. */
    private String contentType;
    /** The length of the content. */
    private Long contentLength;
    /** The unique, cacheable version of this thumbnail. */
    private String eTag;
    /** The date and time the thumbnail was last updated at the device. */
    private java.util.Date lastModified;
    /**
     * The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     * 
     * @param body
     *        The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     */
    public void setBody(java.io.InputStream body) {
        this.body = body;
    }
    /**
     * The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     * 
     * @return The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     */
    public java.io.InputStream getBody() {
        return this.body;
    }
    /**
     * The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     * 
     * @param body
     *        The binary data for the thumbnail that the Link device has most recently sent to MediaLive.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeInputDeviceThumbnailResult withBody(java.io.InputStream body) {
        setBody(body);
        return this;
    }
    /**
     * Specifies the media type of the thumbnail.
     * 
     * @param contentType
     *        Specifies the media type of the thumbnail.
     * @see ContentType
     */
    public void setContentType(String contentType) {
        this.contentType = contentType;
    }
    /**
     * Specifies the media type of the thumbnail.
     * 
     * @return Specifies the media type of the thumbnail.
     * @see ContentType
     */
    public String getContentType() {
        return this.contentType;
    }
    /**
     * Specifies the media type of the thumbnail.
     * 
     * @param contentType
     *        Specifies the media type of the thumbnail.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ContentType
     */
    public DescribeInputDeviceThumbnailResult withContentType(String contentType) {
        setContentType(contentType);
        return this;
    }
    /**
     * Specifies the media type of the thumbnail.
     * 
     * @param contentType
     *        Specifies the media type of the thumbnail.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see ContentType
     */
    public DescribeInputDeviceThumbnailResult withContentType(ContentType contentType) {
        this.contentType = contentType.toString();
        return this;
    }
    /**
     * The length of the content.
     * 
     * @param contentLength
     *        The length of the content.
     */
    public void setContentLength(Long contentLength) {
        this.contentLength = contentLength;
    }
    /**
     * The length of the content.
     * 
     * @return The length of the content.
     */
    public Long getContentLength() {
        return this.contentLength;
    }
    /**
     * The length of the content.
     * 
     * @param contentLength
     *        The length of the content.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeInputDeviceThumbnailResult withContentLength(Long contentLength) {
        setContentLength(contentLength);
        return this;
    }
    /**
     * The unique, cacheable version of this thumbnail.
     * 
     * @param eTag
     *        The unique, cacheable version of this thumbnail.
     */
    public void setETag(String eTag) {
        this.eTag = eTag;
    }
    /**
     * The unique, cacheable version of this thumbnail.
     * 
     * @return The unique, cacheable version of this thumbnail.
     */
    public String getETag() {
        return this.eTag;
    }
    /**
     * The unique, cacheable version of this thumbnail.
     * 
     * @param eTag
     *        The unique, cacheable version of this thumbnail.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeInputDeviceThumbnailResult withETag(String eTag) {
        setETag(eTag);
        return this;
    }
    /**
     * The date and time the thumbnail was last updated at the device.
     * 
     * @param lastModified
     *        The date and time the thumbnail was last updated at the device.
     */
    public void setLastModified(java.util.Date lastModified) {
        this.lastModified = lastModified;
    }
    /**
     * The date and time the thumbnail was last updated at the device.
     * 
     * @return The date and time the thumbnail was last updated at the device.
     */
    public java.util.Date getLastModified() {
        return this.lastModified;
    }
    /**
     * The date and time the thumbnail was last updated at the device.
     * 
     * @param lastModified
     *        The date and time the thumbnail was last updated at the device.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public DescribeInputDeviceThumbnailResult withLastModified(java.util.Date lastModified) {
        setLastModified(lastModified);
        return this;
    }
    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getBody() != null)
            sb.append("Body: ").append(getBody()).append(",");
        if (getContentType() != null)
            sb.append("ContentType: ").append(getContentType()).append(",");
        if (getContentLength() != null)
            sb.append("ContentLength: ").append(getContentLength()).append(",");
        if (getETag() != null)
            sb.append("ETag: ").append(getETag()).append(",");
        if (getLastModified() != null)
            sb.append("LastModified: ").append(getLastModified());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof DescribeInputDeviceThumbnailResult == false)
            return false;
        DescribeInputDeviceThumbnailResult other = (DescribeInputDeviceThumbnailResult) obj;
        if (other.getBody() == null ^ this.getBody() == null)
            return false;
        if (other.getBody() != null && other.getBody().equals(this.getBody()) == false)
            return false;
        if (other.getContentType() == null ^ this.getContentType() == null)
            return false;
        if (other.getContentType() != null && other.getContentType().equals(this.getContentType()) == false)
            return false;
        if (other.getContentLength() == null ^ this.getContentLength() == null)
            return false;
        if (other.getContentLength() != null && other.getContentLength().equals(this.getContentLength()) == false)
            return false;
        if (other.getETag() == null ^ this.getETag() == null)
            return false;
        if (other.getETag() != null && other.getETag().equals(this.getETag()) == false)
            return false;
        if (other.getLastModified() == null ^ this.getLastModified() == null)
            return false;
        if (other.getLastModified() != null && other.getLastModified().equals(this.getLastModified()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getBody() == null) ? 0 : getBody().hashCode());
        hashCode = prime * hashCode + ((getContentType() == null) ? 0 : getContentType().hashCode());
        hashCode = prime * hashCode + ((getContentLength() == null) ? 0 : getContentLength().hashCode());
        hashCode = prime * hashCode + ((getETag() == null) ? 0 : getETag().hashCode());
        hashCode = prime * hashCode + ((getLastModified() == null) ? 0 : getLastModified().hashCode());
        return hashCode;
    }
    @Override
    public DescribeInputDeviceThumbnailResult clone() {
        try {
            return (DescribeInputDeviceThumbnailResult) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }
}