Class GFileSystemBase

  • All Implemented Interfaces:
    GFileSystem, ExtensionPoint, java.io.Closeable, java.lang.AutoCloseable

    public abstract class GFileSystemBase
    extends java.lang.Object
    implements GFileSystem
    This is the original GFileSystem implementation abstract base class, with most of the initially implemented filesystem types extending this class.

    The new GFileSystem interface is being retro-fitted into this equation to support better probing and factory syntax, and new implementations should be based on the interface instead of extending this abstract class.

    NOTE: ALL GFileSystem sub-CLASSES MUST END IN "FileSystem". If not, the ClassSearcher will not find them. Yes, it is an implementation detail.

    GFileSystemBase instances are constructed when probing a container file and are queried with isValid(TaskMonitor) to determine if the container file is handled by the GFileSystemBase subclass.

    The ByteProvider given to the constructor is not considered 'owned' by the GFileSystemBase instance until after it passes the isValid check and is opened.

Constructor Detail

  • Method Detail

    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • setFSRL

      public void setFSRL​(FSRLRoot fsrl)
    • setFilesystemService

      public void setFilesystemService​(FileSystemService fsService)
    • isValid

      public abstract boolean isValid​(TaskMonitor monitor)
                               throws java.io.IOException
      Returns true if this file system implementation can handle the bytes provided. This method should perform the minimal amount of checks required to determine validity. Keep it quick and tight!
      Parameters:
      monitor - a task monitor
      Returns:
      true if valid for the byte provider
      Throws:
      java.io.IOException - if an I/O error occurs
    • close

      public void close()
                 throws java.io.IOException
      Closes the file system. All resources should be released. (programs, temporary files, etc.)
      Specified by:
      close in interface java.lang.AutoCloseable
      Specified by:
      close in interface java.io.Closeable
      Throws:
      java.io.IOException - if an I/O error occurs
    • isClosed

      public boolean isClosed()
      Description copied from interface: GFileSystem
      Returns true if the filesystem has been closed
      Specified by:
      isClosed in interface GFileSystem
      Returns:
      boolean true if the filesystem has been closed.
    • getName

      public final java.lang.String getName()
      Returns the name of this file system.
      Specified by:
      getName in interface GFileSystem
      Returns:
      the name of this file system
    • getListing

      public abstract java.util.List<GFile> getListing​(GFile directory)
                                                throws java.io.IOException
      Description copied from interface: GFileSystem
      Returns a list of files that reside in the specified directory on this filesystem.

      Specified by:
      getListing in interface GFileSystem
      Parameters:
      directory - NULL means root of filesystem.
      Returns:
      List of GFile instances of file in the requested directory.
      Throws:
      java.io.IOException - if IO problem.
    • getInfo

      public abstract java.lang.String getInfo​(GFile file,
                                               TaskMonitor monitor)
                                        throws java.io.IOException
      Description copied from interface: GFileSystem
      Returns a multi-line string with information about the specified file.

      TODO: this method needs to be refactored to return a Map instead of a pre-formatted multi-line string.

      Specified by:
      getInfo in interface GFileSystem
      Parameters:
      file - GFile to get info message for.
      monitor - TaskMonitor to watch and update progress.
      Returns:
      multi-line formatted string with info about the file.
      Throws:
      java.io.IOException - if IO problem.
    • getInputStream

      public java.io.InputStream getInputStream​(GFile file,
                                                TaskMonitor monitor)
                                         throws CancelledException,
                                                java.io.IOException
      Description copied from interface: GFileSystem
      Returns an InputStream that contains the contents of the specified GFile.

      The caller is responsible for closing the stream.

      Specified by:
      getInputStream in interface GFileSystem
      Parameters:
      file - GFile to get an InputStream for
      monitor - TaskMonitor to watch and update progress
      Returns:
      new InputStream contains the contents of the file or NULL if the file doesn't have data.
      Throws:
      CancelledException - if user cancels.
      java.io.IOException - if IO problem
    • debug NEW

      protected void debug​(byte[] bytes,
                           java.lang.String fileName)
      Writes the given bytes to a tempfile in the temp directory.
      Parameters:
      bytes - the bytes to write
      fileName - the prefix of the temp file name
    • lookup

      public GFile lookup​(java.lang.String path)
                   throws java.io.IOException
      Description copied from interface: GFileSystem
      Retrieves a GFile from this filesystem based on its full path and filename.

      Specified by:
      lookup in interface GFileSystem
      Parameters:
      path - string path and filename of a file located in this filesystem
      Returns:
      GFile instance of requested file, null if not found.
      Throws:
      java.io.IOException - if IO error when looking up file.