Class FSStore

All Implemented Interfaces:
Store, Comparable<Store>
Direct Known Subclasses:
MockStore

public class FSStore extends AbstractStore
This class is an implementation of the Store interface to persist documents in the filesystem. From the root of the documents store, 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

    • FSStore

      public FSStore()
  • Method Details

    • delete

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

      public void delete(long docId, String resource)
      Description copied from interface: Store
      Deletes a specific resource of a document from the store.
      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: Store
      Stores a file
      Specified by:
      store in interface Store
      Overrides:
      store in class AbstractStore
      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: Store
      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: Store
      Writes the specified resource in a file
      Specified by:
      writeToFile in interface Store
      Overrides:
      writeToFile in class AbstractStore
      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: Store
      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: Store
      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: Store
      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: Store
      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: Store
      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: Store
      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: Store
      Implementations should return the list of the required parameters. A parameter is stored in the context as store.id.parameter = value
      Returns:
      list of parameter names
    • moveResourcesToStore

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