Class FSStorer

  • All Implemented Interfaces:
    Storer, Comparable<Storer>
    Direct Known Subclasses:
    MockStorer

    public class FSStorer
    extends AbstractStorer
    This class is an implementation of the Storer interface to persist documents in the filesystem. From the root of the documents storage, this implementation saves all document's files into a defined directory using the following logic. The document's id is tokenized by three chars tokens, than the doc/ dir is appended, so if the docId=12345, the document's path will be:123/45/doc.
    Since:
    4.5
    Author:
    Marco Meschieri - LogicalDOC
    • Constructor Detail

      • FSStorer

        public FSStorer()
    • Method Detail

      • delete

        public void delete​(long docId)
        Description copied from interface: Storer
        Deletes all resources of a document from the storage.
        Parameters:
        docId - The document identifier
      • delete

        public void delete​(long docId,
                           String resource)
        Description copied from interface: Storer
        Deletes a specific resource of a document from the storage.
        Parameters:
        docId - The document identifier
        resource - Name of the resource to be deleted
      • getContainer

        public File getContainer​(long docId)
        Finds the container where all document's files are stored
        Parameters:
        docId - The document identifier
        Returns:
        The document's container
      • getRoot

        public File getRoot()
      • store

        public void store​(InputStream stream,
                          long docId,
                          String resource)
                   throws IOException
        Description copied from interface: Storer
        This method has to store a resource in the document's container. The location where (DBMS, Filesystem, other) the document should be stored is defined by the concrete implementation. It is possible to store a new document or a new version of an existing document.
        Parameters:
        stream - Document as InputStream
        docId - The document identifier
        resource - Name of the resource to be stored
        Throws:
        IOException - the content cannot be stored
      • writeToFile

        public void writeToFile​(long docId,
                                String resource,
                                File out)
                         throws IOException
        Description copied from interface: Storer
        Writes the specified resource in a file
        Specified by:
        writeToFile in interface Storer
        Overrides:
        writeToFile in class AbstractStorer
        Parameters:
        docId - The document identifier
        resource - Name of the resource
        out - File that will receive the resource's content
        Throws:
        IOException - error writing the file or reading the resource
      • getStream

        public InputStream getStream​(long docId,
                                     String resource)
                              throws IOException
        Description copied from interface: Storer
        Obtains the document's content for the specified resource
        Parameters:
        docId - The document's identifier
        resource - Name of the resource
        Returns:
        The document file's content
        Throws:
        IOException - cannot open the stream
      • getTotalSize

        public long getTotalSize()
        Description copied from interface: Storer
        Computes the total size of the documents repository(in bytes)
        Returns:
        sum of the sizes of all the documents expressed in bytes
      • getBytes

        public byte[] getBytes​(long docId,
                               String resource,
                               long start,
                               long length)
                        throws IOException
        Description copied from interface: Storer
        Obtains the document's raw bytes for the specified resource
        Parameters:
        docId - The document's identifier
        resource - Name of the resource
        start - Index of the starting byte
        length - Total packet length
        Returns:
        The document file's bytes
        Throws:
        IOException - cannot open the resource to get the bytes
      • listResources

        public List<String> listResources​(long docId,
                                          String fileVersion)
        Description copied from interface: Storer
        Lists all resources in the document's container
        Parameters:
        docId - The document's identifier
        fileVersion - If specified, lists the resources for that specific file version only
        Returns:
        list of resource names
      • size

        public long size​(long docId,
                         String resource)
        Description copied from interface: Storer
        Computed the size of a specific resource.
        Parameters:
        docId - The document's identifier
        resource - The resource
        Returns:
        the size in bytes
      • exists

        public boolean exists​(long docId,
                              String resource)
        Description copied from interface: Storer
        Checks if the passed resource exists in the document's container
        Parameters:
        docId - ID of the document
        resource - Name of the resource
        Returns:
        true only if the resource already exists
      • getParameterNames

        public List<String> getParameterNames()
        Description copied from interface: Storer
        Implementations should return the list of the required parameters. A parameter is stored in the context as storer.id.parameter = value
        Returns:
        list of parameter names
      • moveResourcesToStore

        public int moveResourcesToStore​(long docId,
                                        int targetStorageId)
                                 throws IOException
        Description copied from interface: Storer
        Moves all the resources of a document from it's original location to a different storage
        Parameters:
        docId - identifier of the document to process
        targetStorageId - identifier of the storage that will receive the files
        Returns:
        number of moved resources
        Throws:
        IOException - In case of error during the process