Package ghidra.formats.gfilesystem

# Class SingleFileSystemIndexHelper

java.lang.Object
ghidra.formats.gfilesystem.SingleFileSystemIndexHelper

public class SingleFileSystemIndexHelper extends Object
A helper class used by GFilesystem implementors that have a single file to handle lookups and requests for that file.

This class is patterned on FileSystemIndexHelper and has pretty much the same api.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SingleFileSystemIndexHelper(GFileSystem fs, FSRLRoot fsFSRL, String payloadFilename, long length, String payloadMD5)`
  Creates a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Clears the data held by this object.
  `int`
  `getFileCount()`
  Number of files in this index.
  `List<GFile>`
  `getListing(GFile directory)`
  Mirror's `GFileSystem.getListing(GFile)` interface.
  `GFile`
  `getPayloadFile()`
  Gets the 'payload' file, ie.
  `GFile`
  `getRootDir()`
  Gets the root `GFile` object for this filesystem index.
  `FSRL`
  `getRootDirFSRL()`
  Gets the root dir's FSRL.
  `boolean`
  `isClosed()`
  Returns true if this object has been `clear()`'ed.
  `boolean`
  `isPayloadFile(GFile file)`
  Returns true if the specified file is the payload file.
  `GFile`
  `lookup(GFile baseDir, String path, Comparator<String> nameComp)`
  Mirror's `GFileSystem.lookup(String)` interface.
  `GFile`
  `lookup(String path)`
  Mirror's `GFileSystem.lookup(String)` interface.
  `String`
  `toString()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SingleFileSystemIndexHelper

    public SingleFileSystemIndexHelper(GFileSystem fs, FSRLRoot fsFSRL, String payloadFilename, long length, String payloadMD5)
    Creates a new instance. A "root" directory GFile will be auto-created for the filesystem.

    Parameters:
      `fs` - the `GFileSystem` that this index will be for.
      `fsFSRL` - the `fsrl` of the filesystem itself. (this parameter is explicitly passed here so there is no possibility of trying to call back to the fs's `GFileSystem.getFSRL()` on a half-constructed filesystem.)
      `payloadFilename` - name of the single file that this filesystem holds.
      `length` - length of the payload file.
      `payloadMD5` - md5 of the payload file.

- ## Method Details

  - ### clear

    public void clear()
    Clears the data held by this object.

  - ### isPayloadFile

    public boolean isPayloadFile(GFile file)
    Returns true if the specified file is the payload file.
    Parameters:
      `file` - GFile to test
    Returns:
      boolean true if it is the payload file

  - ### isClosed

    public boolean isClosed()
    Returns true if this object has been `clear()`'ed.
    Returns:
      boolean true if data has been cleared.

  - ### getPayloadFile

    public GFile getPayloadFile()
    Gets the 'payload' file, ie. the main file of this filesystem.
    Returns:
      `GFile` payload file.

  - ### getRootDirFSRL

    public FSRL getRootDirFSRL()
    Gets the root dir's FSRL.
    Returns:
      `FSRL` of the root dir.

  - ### getRootDir

    public GFile getRootDir()
    Gets the root `GFile` object for this filesystem index.
    Returns:
      root `GFile` object.

  - ### getFileCount

    public int getFileCount()
    Number of files in this index.
    Returns:
      number of file in this index.

  - ### getListing

    public List<GFile> getListing(GFile directory) throws IOException
    Mirror's `GFileSystem.getListing(GFile)` interface.
    Parameters:
      `directory` - `GFile` directory to get the list of child files that have been added to this index, null means root directory.
    Returns:
      `List` of GFile files that are in the specified directory, never null.
    Throws:
      `IOException` - if already closed.

  - ### lookup

    public GFile lookup(String path)
    Mirror's `GFileSystem.lookup(String)` interface.
    Parameters:
      `path` - path and filename of a file to find (either "/" for root or the payload file's path).
    Returns:
      `GFile` instance or null if requested path is not the same as the payload file.

  - ### lookup

    public GFile lookup(GFile baseDir, String path, Comparator<String> nameComp)
    Mirror's `GFileSystem.lookup(String)` interface.
    Parameters:
      `baseDir` - starting directory
      `path` - path and filename of a file to find (either "/" for root or the payload file's path).
      `nameComp` - optional `Comparator` that compares file names. Suggested values are `String::compareTo` or `String::compareToIgnoreCase` or `null`.
    Returns:
      `GFile` instance or null if requested path is not the same as the payload file.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`