Class SimpleFileSystemContentStorage

  • All Implemented Interfaces:
    org.flowable.content.api.ContentStorage

    public class SimpleFileSystemContentStorage
    extends java.lang.Object
    implements org.flowable.content.api.ContentStorage
    (Very) simple implementation of the ContentStorage that relies on the passed metadata to store content. Under a root folder, a division between 'task' and 'process-instance' content is made. New content gets a new UUID assigned and is placed in one of these folders. The id of the returned ContentObject indicates in which folder it is stored.
    Author:
    Joram Barrez
    • Field Detail

      • TYPE_PROCESS_INSTANCE

        public static final java.lang.String TYPE_PROCESS_INSTANCE
        See Also:
        Constant Field Values
      • TYPE_CASE_INSTANCE

        public static final java.lang.String TYPE_CASE_INSTANCE
        See Also:
        Constant Field Values
      • TYPE_UNCATEGORIZED

        public static final java.lang.String TYPE_UNCATEGORIZED
        See Also:
        Constant Field Values
      • PROCESS_INSTANCE_PREFIX

        public static final java.lang.String PROCESS_INSTANCE_PREFIX
        See Also:
        Constant Field Values
      • UNCATEGORIZED_PREFIX

        public static final java.lang.String UNCATEGORIZED_PREFIX
        See Also:
        Constant Field Values
      • contentFolderRoot

        protected java.io.File contentFolderRoot
      • taskFolder

        protected java.io.File taskFolder
      • processInstanceFolder

        protected java.io.File processInstanceFolder
      • caseFolder

        protected java.io.File caseFolder
      • uncategorizedFolder

        protected java.io.File uncategorizedFolder
    • Constructor Detail

      • SimpleFileSystemContentStorage

        public SimpleFileSystemContentStorage​(java.io.File contentFolderRoot)
    • Method Detail

      • validateOrCreateSubfolders

        protected void validateOrCreateSubfolders()
      • validateOrCreateFolder

        protected java.io.File validateOrCreateFolder​(java.lang.String folderName)
      • createContentObject

        public org.flowable.content.api.ContentObject createContentObject​(java.io.InputStream contentStream,
                                                                          java.util.Map<java.lang.String,​java.lang.Object> metadata)
        Specified by:
        createContentObject in interface org.flowable.content.api.ContentStorage
      • createContentObject

        public org.flowable.content.api.ContentObject createContentObject​(java.io.InputStream contentStream,
                                                                          org.flowable.content.api.ContentObjectStorageMetadata metaData)
        Specified by:
        createContentObject in interface org.flowable.content.api.ContentStorage
      • generateContentId

        protected java.lang.String generateContentId​(java.lang.String uuid,
                                                     org.flowable.content.api.ContentObjectStorageMetadata metadata)
      • updateContentObject

        public org.flowable.content.api.ContentObject updateContentObject​(java.lang.String id,
                                                                          java.io.InputStream contentStream,
                                                                          java.util.Map<java.lang.String,​java.lang.Object> metaData)
        Specified by:
        updateContentObject in interface org.flowable.content.api.ContentStorage
      • updateContentObject

        public org.flowable.content.api.ContentObject updateContentObject​(java.lang.String id,
                                                                          java.io.InputStream contentStream,
                                                                          org.flowable.content.api.ContentObjectStorageMetadata metaData)
        Specified by:
        updateContentObject in interface org.flowable.content.api.ContentStorage
      • getContentObject

        public org.flowable.content.api.ContentObject getContentObject​(java.lang.String id)
        Specified by:
        getContentObject in interface org.flowable.content.api.ContentStorage
      • getContentFile

        protected java.io.File getContentFile​(java.lang.String id)
      • getMetaData

        public java.util.Map<java.lang.String,​java.lang.Object> getMetaData()
        Specified by:
        getMetaData in interface org.flowable.content.api.ContentStorage
      • deleteContentObject

        public void deleteContentObject​(java.lang.String id)
        Specified by:
        deleteContentObject in interface org.flowable.content.api.ContentStorage
      • getContentStoreName

        public java.lang.String getContentStoreName()
        Specified by:
        getContentStoreName in interface org.flowable.content.api.ContentStorage
      • getContentFile

        protected java.io.File getContentFile​(org.flowable.content.api.ContentObjectStorageMetadata metaData,
                                              java.lang.String contentId)
      • determineType

        protected java.lang.String determineType​(org.flowable.content.api.ContentObjectStorageMetadata metaData)
      • createOrGetFolderBasedOnMetaData

        protected java.io.File createOrGetFolderBasedOnMetaData​(org.flowable.content.api.ContentObjectStorageMetadata metaData)
      • internalCreateOrGetFolder

        protected java.io.File internalCreateOrGetFolder​(java.io.File parentFolder,
                                                         java.lang.String id)