Class IndexedLocalFileSystem

  • All Implemented Interfaces:
    FileSystem
    Direct Known Subclasses:
    IndexedV1LocalFileSystem

    public class IndexedLocalFileSystem
    extends LocalFileSystem
    IndexedLocalFileSystem implements a case-sensitive indexed filesystem which uses a shallow storage hierarchy with no restriction on file name or path length. This filesystem is identified by the existence of an index file (~index.dat) and recovery journal (~index.jrn).
    • Field Detail

      • INDEX_ITEM_INDENT NEW

        protected static final java.lang.String INDEX_ITEM_INDENT
        See Also:
        Constant Field Values
      • INDEX_ITEM_SEPARATOR NEW

        protected static final java.lang.String INDEX_ITEM_SEPARATOR
        See Also:
        Constant Field Values

Constructor Detail

  • Method Detail

    • getIndexImplementationVersion

      public int getIndexImplementationVersion()
    • readIndexVersion

      public static int readIndexVersion​(java.lang.String rootPath)
                                  throws java.io.IOException
      Throws:
      java.io.IOException
    • findItemStorage NEW

      protected LocalFileSystem.ItemStorage findItemStorage​(java.lang.String folderPath,
                                                            java.lang.String itemName)
                                                     throws java.io.FileNotFoundException
      Find an existing storage location
      Specified by:
      findItemStorage in class LocalFileSystem
      Parameters:
      folderPath -
      itemName -
      Returns:
      storage location. A non-null value does not guarantee that the associated item actually exists.
      Throws:
      java.io.FileNotFoundException
    • deallocateItemStorage NEW

      protected void deallocateItemStorage​(java.lang.String folderPath,
                                           java.lang.String itemName)
                                    throws java.io.IOException
      Deallocate item storage
      Specified by:
      deallocateItemStorage in class LocalFileSystem
      Parameters:
      folderPath -
      itemName -
      Throws:
      java.io.IOException
    • itemDeleted NEW

      protected void itemDeleted​(java.lang.String folderPath,
                                 java.lang.String itemName)
                          throws java.io.IOException
      Description copied from class: LocalFileSystem
      Notify the filesystem that the property file and associated data files for an item have been removed from the filesystem.
      Overrides:
      itemDeleted in class LocalFileSystem
      Throws:
      java.io.IOException
    • getItemNames NEW

      protected java.lang.String[] getItemNames​(java.lang.String folderPath,
                                                boolean includeHiddenFiles)
                                         throws java.io.IOException
      Specified by:
      getItemNames in class LocalFileSystem
      Throws:
      java.io.IOException
    • getItemCount

      public int getItemCount()
                       throws java.io.IOException
      Description copied from interface: FileSystem
      Returns the number of folder items contained within this file-system.
      Throws:
      java.io.IOException
    • getFolderNames

      public java.lang.String[] getFolderNames​(java.lang.String folderPath)
                                        throws java.io.IOException
      Description copied from interface: FileSystem
      Return a list of subfolders (by name) that are stored within the specified folder path.
      Throws:
      java.io.FileNotFoundException - if folder path does not exist.
      java.io.IOException - if IO error occurs.
    • createFolder

      public void createFolder​(java.lang.String parentPath,
                               java.lang.String folderName)
                        throws InvalidNameException,
                               java.io.IOException
      Description copied from interface: FileSystem
      Creates a new subfolder within the specified parent folder.
      Parameters:
      parentPath - folder path of parent
      folderName - name of new subfolder
      Throws:
      InvalidNameException - if the name does not have all alphanumerics
      DuplicateFileException - if a folder exists with this name
      java.io.IOException - thrown if an IO error occurs.
    • deleteFolder

      public void deleteFolder​(java.lang.String folderPath)
                        throws java.io.IOException
      Description copied from interface: FileSystem
      Delete the specified folder.
      Parameters:
      folderPath - path of folder to be deleted
      Throws:
      FolderNotEmptyException - Thrown if the folder is not empty.
      java.io.FileNotFoundException - if there is no folder with the given path name.
      java.io.IOException - if error occured during delete.
    • moveItem

      public void moveItem​(java.lang.String folderPath,
                           java.lang.String name,
                           java.lang.String newFolderPath,
                           java.lang.String newName)
                    throws java.io.IOException,
                           InvalidNameException
      Description copied from interface: FileSystem
      Moves the specified item to a new folder.
      Specified by:
      moveItem in interface FileSystem
      Overrides:
      moveItem in class LocalFileSystem
      Parameters:
      folderPath - path of folder containing the item.
      name - name of the item to be moved.
      newFolderPath - path of folder where item is to be moved.
      Throws:
      java.io.FileNotFoundException - if the item does not exist.
      DuplicateFileException - if item with the same name exists within the new parent folder.
      FileInUseException - if the item is in-use or checked-out
      java.io.IOException - if an IO error occurs.
      InvalidNameException - if the newName is invalid
    • moveFolder

      public void moveFolder​(java.lang.String parentPath,
                             java.lang.String folderName,
                             java.lang.String newParentPath)
                      throws InvalidNameException,
                             java.io.IOException
      Description copied from interface: FileSystem
      Move the specified folder to the path specified by newFolderPath. The moved folder must not be an ancestor of the new Parent.
      Parameters:
      parentPath - path of parent folder that the moving folder currently resides in.
      folderName - name of the folder within the parentPath to be moved.
      newParentPath - path to where the folder is to be moved.
      Throws:
      InvalidNameException - if the new FolderPath contains an illegal file name.
      java.io.FileNotFoundException - if the moved folder does not exist.
      DuplicateFileException - if folder with the same name exists within the new parent folder
      FileInUseException - if any file within this folder or its decendents are in-use or checked-out
      java.io.IOException - if an IO error occurs.
    • renameFolder

      public void renameFolder​(java.lang.String parentPath,
                               java.lang.String folderName,
                               java.lang.String newFolderName)
                        throws InvalidNameException,
                               java.io.IOException
      Description copied from interface: FileSystem
      Renames the specified folder to a new name.
      Parameters:
      parentPath - the parent folder of the folder to be renamed.
      folderName - the current name of the folder to be renamed.
      newFolderName - the name the folder to be renamed to.
      Throws:
      InvalidNameException - if the new FolderName contains an illegal file name.
      java.io.FileNotFoundException - if the folder to be renamed does not exist.
      DuplicateFileException - if folder with the new name already exists.
      FileInUseException - if any file within this folder or its decendents are in-use or checked-out
      java.io.IOException - if an IO error occurs.
    • folderExists

      public boolean folderExists​(java.lang.String folderPath)
      Description copied from interface: FileSystem
      Returns true if the folder specified by the path exists.
      Specified by:
      folderExists in interface FileSystem
      Specified by:
      folderExists in class LocalFileSystem
      Parameters:
      folderPath - the name of the folder to check for existence.
      Returns:
      true if the folder exists.
    • isIndexed

      public static boolean isIndexed​(java.lang.String rootPath)
      Determine if the specified directory corresponds to an indexed filesystem.
      Parameters:
      rootPath - filesystem root
      Returns:
      true if filesystem contains an index (not mangled)
    • hasIndexedStructure

      public static boolean hasIndexedStructure​(java.lang.String rootPath)
      Determine if the specified directory contains a likely indexed filesystem.
      Parameters:
      rootPath - filesystem root
      Returns:
      true if filesystem appears to be indexed (not mangled)
    • rebuild

      public static boolean rebuild​(java.io.File rootDir)
                             throws java.io.IOException
      Completely rebuild filesystem index using item information contained within indexed property files. Empty folders will be lost.
      Parameters:
      rootDir -
      Throws:
      java.io.IOException