Interface DomainFolder

All Superinterfaces:
Comparable<DomainFolder>
All Known Implementing Classes:
GhidraFolder, RootGhidraFolder

public interface DomainFolder extends Comparable<DomainFolder>
DomainFolder provides a storage interface for project folders. A DomainFolder is an immutable reference to a folder contained within a project. The state of a DomainFolder object does not track name/parent changes made to the referenced project folder.
  • Field Details

    • SEPARATOR

      static final String SEPARATOR
      Character used to separate folder and item names within a path string.
      See Also:
    • COPY_SUFFIX

      static final String COPY_SUFFIX
      Name extension to add when attempting to avoid a duplicate name.
      See Also:
  • Method Details

    • getName

      String getName()
      Return this folder's name.
      Returns:
      the name
    • setName

      Set the name on this domain folder.
      Parameters:
      newName - domain folder name
      Returns:
      renamed domain file (the original DomainFolder object becomes invalid since it is immutable)
      Throws:
      InvalidNameException - if newName contains illegal characters
      DuplicateFileException - if a folder named newName already exists in this files domain folder.
      FileInUseException - if any file within this folder or its descendants is in-use / checked-out.
      IOException - thrown if an IO or access error occurs.
    • getProjectLocator

      ProjectLocator getProjectLocator()
      Returns the local storage location for the project that this DomainFolder belongs to.
      Returns:
      the locator
    • getProjectData

      ProjectData getProjectData()
      Returns the project data
      Returns:
      the project data
    • getPathname

      String getPathname()
      Returns the path name to the domain object.
      Returns:
      the path name
    • isInWritableProject

      boolean isInWritableProject()
      Returns true if this file is in a writable project.
      Returns:
      true if writable
    • getParent

      DomainFolder getParent()
      Return parent folder or null if this DomainFolder is the root folder.
      Returns:
      the parent
    • getFolders

      DomainFolder[] getFolders()
      Get DomainFolders in this folder. This returns cached information and does not force a full refresh.
      Returns:
      list of sub-folders
    • getFolder

      DomainFolder getFolder(String name)
      Return the folder for the given name.
      Parameters:
      name - of folder to retrieve
      Returns:
      folder or null if there is no folder by the given name.
    • getFile

      DomainFile getFile(String name)
      Get the domain file in this folder with the given name.
      Parameters:
      name - name of file in this folder to retrieve
      Returns:
      domain file or null if there is no domain file in this folder with the given name.
    • isEmpty

      boolean isEmpty()
      Determine if this folder contains any sub-folders or domain files.
      Returns:
      true if this folder is empty.
    • getFiles

      DomainFile[] getFiles()
      Get all domain files in this folder. This returns cached information and does not force a full refresh.
      Returns:
      list of domain files
    • createFile

      Add a domain object to this folder.
      Parameters:
      name - domain file name
      obj - domain object to be stored
      monitor - progress monitor
      Returns:
      domain file created as a result of adding the domain object to this folder
      Throws:
      DuplicateFileException - thrown if the file name already exists
      InvalidNameException - if name is an empty string or if it contains characters other than alphanumerics.
      IOException - if IO or access error occurs
      CancelledException - if the user cancels the create.
    • createFile

      DomainFile createFile(String name, File packFile, TaskMonitor monitor) throws InvalidNameException, IOException, CancelledException
      Add a new domain file to this folder.
      Parameters:
      name - domain file name
      packFile - packed file containing domain file data
      monitor - progress monitor
      Returns:
      domain file created as a result of adding the domain object to this folder
      Throws:
      DuplicateFileException - thrown if the file name already exists
      InvalidNameException - if name is an empty string or if it contains characters other than alphanumerics.
      IOException - if IO or access error occurs
      CancelledException - if the user cancels the create.
    • createFolder

      DomainFolder createFolder(String folderName) throws InvalidNameException, IOException
      Create a subfolder of this folder.
      Parameters:
      folderName - sub-folder name
      Returns:
      the folder
      Throws:
      DuplicateFileException - if a folder by this name already exists
      InvalidNameException - if name is an empty string of if it contains characters other than alphanumerics.
      IOException - if IO or access error occurs
    • delete

      void delete() throws IOException
      Deletes this folder and all of its contents
      Throws:
      IOException - if IO or access error occurs
      FolderNotEmptyException - Thrown if the subfolder is not empty.
    • moveTo

      DomainFolder moveTo(DomainFolder newParent) throws IOException
      Move this folder into the newParent folder. If connected to an archive this affects both private and repository folders and files. If not connected, only private folders and files are affected.
      Parameters:
      newParent - new parent folder within the same project
      Returns:
      the newly relocated folder (the original DomainFolder object becomes invalid since it is immutable)
      Throws:
      DuplicateFileException - if a folder with the same name already exists in newParent folder.
      FileInUseException - if this folder or one of its descendants contains a file which is in-use / checked-out.
      IOException - thrown if an IO or access error occurs.
    • copyTo

      Copy this folder into the newParent folder.
      Parameters:
      newParent - new parent folder
      monitor - the task monitor
      Returns:
      the copied folder
      Throws:
      DuplicateFileException - if a folder or file by this name already exists in the newParent folder
      IOException - thrown if an IO or access error occurs.
      CancelledException - if task monitor cancelled operation.
    • setActive

      void setActive()
      Allows the framework to react to a request to make this folder the "active" one.