All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mongodb.client.gridfs.model.GridFSFile Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2008-present MongoDB, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License 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.mongodb.client.gridfs.model;

import com.mongodb.MongoGridFSException;
import com.mongodb.lang.Nullable;
import org.bson.BsonValue;
import org.bson.Document;
import org.bson.types.ObjectId;

import java.util.Date;
import java.util.List;

import static com.mongodb.assertions.Assertions.notNull;

/**
 * The GridFSFile
 *
 * @since 3.1
 */
public final class GridFSFile {
    private final BsonValue id;
    private final String filename;
    private final long length;
    private final int chunkSize;
    private final Date uploadDate;
    private final String md5;

    // Optional values
    private final Document metadata;

    // Deprecated values
    private final Document extraElements;

    /**
     * Creates a new GridFSFile
     *
     * @param id the id of the file
     * @param filename the filename
     * @param length the length, in bytes of the file
     * @param chunkSize the chunkSize, in bytes of the file
     * @param uploadDate the upload date of the file
     * @param md5 the hash of the files contents
     * @param metadata the optional metadata for the file
     * @deprecated there is no replacement for this constructor
     */
    @Deprecated
    public GridFSFile(final BsonValue id, final String filename, final long length, final int chunkSize, final Date uploadDate,
                      @Nullable final String md5, final Document metadata) {
        this(id, filename, length, chunkSize, uploadDate, md5, metadata, null);
    }

    /**
     * Creates a legacy implementation of the GridFSFile
     *
     * 

For GridFS files created in older versions of the driver.

* * @param id the id of the file * @param filename the filename * @param length the length, in bytes of the file * @param chunkSize the chunkSize, in bytes of the file * @param uploadDate the upload date of the file * @param md5 the hash of the files contents * @param metadata the optional metadata for the file * @param extraElements any extra data stored in the document * @deprecated there is no replacement for this constructor */ @Deprecated public GridFSFile(final BsonValue id, final String filename, final long length, final int chunkSize, final Date uploadDate, @Nullable final String md5, @Nullable final Document metadata, @Nullable final Document extraElements) { this.id = notNull("id", id); this.filename = notNull("filename", filename); this.length = notNull("length", length); this.chunkSize = notNull("chunkSize", chunkSize); this.uploadDate = notNull("uploadDate", uploadDate); this.md5 = md5; this.metadata = metadata != null && metadata.isEmpty() ? null : metadata; this.extraElements = extraElements; } /** * The {@link ObjectId} for this file. * * Throws a MongoGridFSException if the file id is not an ObjectId. * * @return the id for this file. */ public ObjectId getObjectId() { if (!id.isObjectId()) { throw new MongoGridFSException("Custom id type used for this GridFS file"); } return id.asObjectId().getValue(); } /** * The {@link BsonValue} id for this file. * * @return the id for this file */ public BsonValue getId() { return id; } /** * The filename * * @return the filename */ public String getFilename() { return filename; } /** * The length, in bytes of this file * * @return the length, in bytes of this file */ public long getLength() { return length; } /** * The size, in bytes, of each data chunk of this file * * @return the size, in bytes, of each data chunk of this file */ public int getChunkSize() { return chunkSize; } /** * The date and time this file was added to GridFS * * @return the date and time this file was added to GridFS */ public Date getUploadDate() { return uploadDate; } /** * The hash of the contents of the stored file * * @return the hash of the contents of the stored file or null if hashing the contents was disabled. * @deprecated file hashing is deprecated and may be removed in the future. */ @Deprecated @Nullable public String getMD5() { return md5; } /** * Any additional metadata stored along with the file * * @return the metadata document or null */ @Nullable public Document getMetadata() { return metadata; } /** * All deprecated top level elements including any contentType or aliases data * * @return the extra elements document or null * @deprecated any extra information should be stored in the metadata document instead. */ @Deprecated @Nullable public Document getExtraElements() { return extraElements; } /** * The content type of the file * * @return the content type of the file * @deprecated content type information should be stored the metadata document instead. */ @Deprecated public String getContentType() { if (extraElements != null && extraElements.containsKey("contentType")) { return extraElements.getString("contentType"); } else { throw new MongoGridFSException("No contentType data for this GridFS file"); } } /** * The aliases for the file * * @return the aliases of the file * @deprecated any aliases should be stored in the metadata document instead. */ @Deprecated @SuppressWarnings("unchecked") public List getAliases() { if (extraElements != null && extraElements.containsKey("aliases")) { return (List) extraElements.get("aliases"); } else { throw new MongoGridFSException("No aliases data for this GridFS file"); } } @Override public boolean equals(final Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } GridFSFile that = (GridFSFile) o; if (id != null ? !id.equals(that.id) : that.id != null) { return false; } if (!filename.equals(that.filename)) { return false; } if (length != that.length) { return false; } if (chunkSize != that.chunkSize) { return false; } if (!uploadDate.equals(that.uploadDate)) { return false; } if (md5 != null ? !md5.equals(that.md5) : that.md5 != null) { return false; } if (metadata != null ? !metadata.equals(that.metadata) : that.metadata != null) { return false; } if (extraElements != null ? !extraElements.equals(that.extraElements) : that.extraElements != null) { return false; } return true; } @Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + filename.hashCode(); result = 31 * result + (int) (length ^ (length >>> 32)); result = 31 * result + chunkSize; result = 31 * result + uploadDate.hashCode(); result = 31 * result + (md5 != null ? md5.hashCode() : 0); result = 31 * result + (metadata != null ? metadata.hashCode() : 0); result = 31 * result + (extraElements != null ? extraElements.hashCode() : 0); return result; } @Override public String toString() { return "GridFSFile{" + "id=" + id + ", filename='" + filename + '\'' + ", length=" + length + ", chunkSize=" + chunkSize + ", uploadDate=" + uploadDate + ", md5='" + md5 + '\'' + ", metadata=" + metadata + ", extraElements='" + extraElements + '\'' + '}'; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy