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 Details

    • FSStorer

      public FSStorer()
  • Method Details

    • 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(File file, long docId, String resource) throws IOException
      Description copied from interface: Storer
      Stores a file
      Specified by:
      store in interface Storer
      Overrides:
      store in class AbstractStorer
      Parameters:
      file - the file to store
      docId - identifier of the document
      resource - name of the resource
      Throws:
      IOException - the content cannot be stored
      See Also:
    • 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