package eu.europeana.cloud.common.model; import eu.europeana.cloud.service.mcs.Storage; import java.net.URI; import javax.xml.bind.annotation.XmlRootElement; import static eu.europeana.cloud.service.mcs.Storage.OBJECT_STORAGE; /** * Metadata of a file (content) in a certain representation version of a record. */ @XmlRootElement public class File { /** * Name of a file - primary identifier of a file inside a certain representation of a record. */ private String fileName; /** * Mime type of a content. */ private String mimeType; /** * MD5 hash of a content. */ private String md5; /** * Last content modification date. */ private String date; /** * Number of bytes in content. */ private long contentLength; /** * Uri to content. */ private URI contentUri; /** * Indicate where file is stored. </br> * * Default value {@link Storage#OBJECT_STORAGE} */ private Storage fileStorage; public File() { this.fileStorage = OBJECT_STORAGE; } public File(String fileName, String mimeType, String md5, String date, long contentLength, URI contentUri, Storage fileStorage) { super(); this.fileName = fileName; this.mimeType = mimeType; this.md5 = md5; this.date = date; this.contentLength = contentLength; this.contentUri = contentUri; this.fileStorage = fileStorage; } public File(String fileName, String mimeType, String md5, String date, long contentLength, URI contentUri) { this(fileName,mimeType,md5,date,contentLength,contentUri, OBJECT_STORAGE); } public File(final File file) { this(file.getFileName(), file.getMimeType(), file.getMd5(), file.getDate(), file.getContentLength(), file. getContentUri(), file.fileStorage); } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getMimeType() { return mimeType; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public String getMd5() { return md5; } public void setMd5(String md5) { this.md5 = md5; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public long getContentLength() { return contentLength; } public void setContentLength(long contentLength) { this.contentLength = contentLength; } public URI getContentUri() { return contentUri; } public void setContentUri(URI contentUri) { this.contentUri = contentUri; } public Storage getFileStorage() { return fileStorage; } public void setFileStorage(Storage fileStorage) { this.fileStorage = fileStorage; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof File)) return false; File file = (File) o; if (contentLength != file.contentLength) return false; if (fileStorage != file.fileStorage) return false; if (fileName != null ? !fileName.equals(file.fileName) : file.fileName != null) return false; if (mimeType != null ? !mimeType.equals(file.mimeType) : file.mimeType != null) return false; if (md5 != null ? !md5.equals(file.md5) : file.md5 != null) return false; if (date != null ? !date.equals(file.date) : file.date != null) return false; return contentUri != null ? contentUri.equals(file.contentUri) : file.contentUri == null; } @Override public int hashCode() { int result = fileName != null ? fileName.hashCode() : 0; result = 31 * result + (mimeType != null ? mimeType.hashCode() : 0); result = 31 * result + (md5 != null ? md5.hashCode() : 0); result = 31 * result + (date != null ? date.hashCode() : 0); result = 31 * result + (int) (contentLength ^ (contentLength >>> 32)); result = 31 * result + (contentUri != null ? contentUri.hashCode() : 0); result = 31 * result + (fileStorage != null ? fileStorage.hashCode() : 0); return result; } @Override public String toString() { return "File{" + "fileName='" + fileName + '\'' + ", mimeType='" + mimeType + '\'' + ", md5='" + md5 + '\'' + ", date='" + date + '\'' + ", contentLength=" + contentLength + ", contentUri=" + contentUri + ", fileStorage=" + fileStorage + '}'; } }