package com.jivesoftware.addon.example.storage.file.storage.models; public class ExStorageFileEntity extends ExStorageResourcefulDTO implements CoreIdentifiable, ExternallyIdentifiable { public enum Resources { /** * <p>Called when file metadata changes for a document. Examples for metadata changes would include document name, * document description, resources, etc...</p> * @returns {@link ExStorageFileEntity} with the updated file metadata */ editFileMetadata, /** * <p>Called when a a document is deleted in Jive. When this resource is invoked, the ESP would need to delete * the file copy it obtains</p> */ deleteFile, /** * <p>Called when a previous version of a document is chosen to be restored as latest in Jive</p> * * @takes The file object representing the file that needs to be restored including the last version for that file * @returns {@link ExStorageFileEntity} with updated latest version */ restoreVersion, /** * <p>Called when the document is deleted in Jive. ESP should trash the File with an ability to restore it.</p> * <p>This resource is optional. If not returned, DELETE self would be called when users choose to delete * documents in Jive. If this resource is returned you must also return a {@link Resources#untrashFile} resource</p> * @returns {@link ExStorageFileEntity} metadata for the trashed file */ trashFile, /** * <p>Called when the document is restored from trash in Jive.</p> * <p>This resource is optional, depending on whether or not {@link Resources#trashFile} is present.</p> * @returns {@link ExStorageFileEntity} metadata for the restored file */ untrashFile, /** * <p>Called when document's tags are changed in Jive. The ESP should be able to update its own tags.</p> * <p>This resource is optional, if not present tags will not be synchronized</p> */ tags, /** * <p>Called when a new version has been uploaded for a document in Jive</p> * <p>This call means that a new version was uploaded on Jive. The ESP should now save the binary under a specific * document, and return the File entity (including all required File entity resources) for that saved version</p> * <p>Note that the File entity returned by the call should have its size property set to the amount of bytes * written by the ESP</p> * * @takes The binary stream that should be uploaded as a version to the document * @returns {@link ExStorageFileEntity} containing the file with the latest uploaded version */ uploadVersion, /** * <p>Called when a comment has been added to a file in Jive. The ESP should create a new comment with the same * values to the File that's paired to the Jive document in question.</p> * * @takes {@link ExStorageCommentEntity} of the added comment data * @returns {@link ExStorageCommentEntity} as was written to ESP */ addComment, } private Long id; private String externalId; private ExStorageFileVersionEntity version; private ExStorageUserEntity creator; private Long creationDate; private Integer versionCount; public ExStorageFileEntity() { } public ExStorageFileEntity(ExStorageFileEntity toCopy) { super(toCopy); this.id = toCopy.id; this.externalId = toCopy.externalId; this.version = toCopy.version == null ? null : new ExStorageFileVersionEntity(toCopy.version); this.creator = toCopy.creator == null ? null : new ExStorageUserEntity(toCopy.creator); this.creationDate = toCopy.creationDate; this.versionCount = toCopy.versionCount; } /** * <p>The internal Jive ID given to this object.</p> */ public Long getId() { return id; } public void setId(Long id) { this.id = id; } /** * <p>The external ID given to this object by the ESP. This is an arbitrary string that uniquely identifies the * object in the provider.</p> */ public String getExternalId() { return externalId; } public void setExternalId(String externalId) { this.externalId = externalId; } /** * <p>The {@link ExStorageUserEntity} that created the {@link ExStorageFileEntity}</p> */ public ExStorageUserEntity getCreator() { return creator; } /** * <p>The latest {@link ExStorageFileVersionEntity} for this File entity</p> */ public ExStorageFileVersionEntity getVersion() { return version; } public void setVersion(ExStorageFileVersionEntity version) { this.version = version; } public void setCreator(ExStorageUserEntity creator) { this.creator = creator; } /** * <p>The date the File was created in</p> */ public Long getCreationDate() { return creationDate; } public void setCreationDate(Long creationDate) { this.creationDate = creationDate; } /** * <p>The number of version that currently exist for the document</p> */ public Integer getVersionCount() { return versionCount; } public void setVersionCount(Integer versionCount) { this.versionCount = versionCount; } public static boolean includesOnlyFileResources(ExStorageFileEntity fileDTO) { return fileDTO.getVersion() == null && fileDTO.getCreationDate() == null && fileDTO.getCreator() == null && fileDTO.getVersionCount() == null && fileDTO.getResources() != null; } }