Interface ProjectData

  • All Known Implementing Classes:
    ProjectFileManager, TransientProjectData

    public interface ProjectData
    The ProjectData interface provides access to all the data files and folders in a project.
    • Method Detail

      • getLocalStorageClass

        java.lang.Class<? extends LocalFileSystem> getLocalStorageClass()
        Returns:
        local storage implementation class
      • getRootFolder

        DomainFolder getRootFolder()
        Returns the root folder of the project.
      • getFolder

        DomainFolder getFolder​(java.lang.String path)
        Get domain folder specified by an absolute data path.
        Parameters:
        path - the absolute path of domain folder relative to the data folder.
        Returns:
        domain folder or null if folder not found
      • getFileCount

        int getFileCount()
        Get the approximate number of files contained within the project. The number may be reduced if not connected to the shared repository. Only the newer indexed file-system supports this capability, a value of -1 will be returned for older projects utilizing the mangled file-system or if an IO Error occurs. An approximate number is provided since the two underlying file systems are consulted separately and the local private file-system does not distinguish between checked-out files and private files. This number is currently intended as a rough sizing number to disable certain features when very large projects are in use. Generally the larger of the two file counts will be returned.
        Returns:
        number of project files or -1 if unknown.
      • getFile

        DomainFile getFile​(java.lang.String path)
        Get domain file specified by an absolute data path.
        Parameters:
        path - the absolute path of domain file relative to the root folder.
        Returns:
        domain file or null if file not found
      • findOpenFiles

        void findOpenFiles​(java.util.List<DomainFile> list)
        Finds all open domain files and appends them to the specified list.
        Parameters:
        list - the list to receive the open domain files
      • getFileByID

        DomainFile getFileByID​(java.lang.String fileID)
        Get domain file specified by its unique fileID.
        Parameters:
        fileID - domain file ID
        Returns:
        domain file or null if file not found
      • getSharedFileURL

        java.net.URL getSharedFileURL​(java.lang.String path)
        Get a GhidraURL for a shared domain file which is available within a remote repository.
        Parameters:
        path - the absolute path of domain file relative to the root folder.
        Returns:
        URL object for accessing shared file from outside of a project, or null if file does not exist or is not shared.
        See Also:
        ghidra.framework.data.URLGhidraRepository
      • makeValidName

        java.lang.String makeValidName​(java.lang.String name)
        Transform the specified name into an acceptable folder or file item name. Only an individual folder or file name should be specified, since any separators will be stripped-out. NOTE: Uniqueness of name within the intended target folder is not considered.
        Parameters:
        name -
        Returns:
        valid name or "unknown" if no valid characters exist within name provided
      • getProjectLocator

        ProjectLocator getProjectLocator()
        Returns the projectLocator for the this ProjectData.
      • addDomainFolderChangeListener

        void addDomainFolderChangeListener​(DomainFolderChangeListener listener)
        Adds a listener that will be notified when any folder or file changes in the project.
        Parameters:
        listener - the listener to be notified of folder and file changes.
      • removeDomainFolderChangeListener

        void removeDomainFolderChangeListener​(DomainFolderChangeListener listener)
        Removes the listener to be notified of folder and file changes.
        Parameters:
        listener - the listener to be removed.
      • refresh

        void refresh​(boolean force)
              throws java.io.IOException
        Sync the Domain folder/file structure with the underlying file structure.
        Parameters:
        force - if true all folders will be be visited and refreshed, if false only those folders previously visited will be refreshed.
        Throws:
        java.io.IOException
      • getUser

        User getUser()
        Returns User object associated with remote repository or null if a remote repository is not used.
      • getRepository

        RepositoryAdapter getRepository()
        Return the repository for this project data.
        Returns:
        null if the project is not associated with a repository
      • convertProjectToShared

        void convertProjectToShared​(RepositoryAdapter repository,
                                    TaskMonitor monitor)
                             throws java.io.IOException,
                                    CancelledException
        Convert a local project to a shared project. NOTE: The project should be closed and then reopened after this method is called.
        Parameters:
        repository - the repository that the project will be associated with.
        monitor - task monitor
        Throws:
        java.io.IOException - thrown if files under version control are still checked out, or if there was a problem accessing the filesystem
        CancelledException - if the conversion was cancelled while versioned files were being converted to private files.
      • updateRepositoryInfo

        void updateRepositoryInfo​(RepositoryAdapter repository,
                                  TaskMonitor monitor)
                           throws java.io.IOException,
                                  CancelledException
        Update the repository for this project; the server may have changed or a different repository is being used. NOTE: The project should be closed and then reopened after this method is called.
        Parameters:
        repository - new repository to use
        monitor - task monitor
        Throws:
        java.io.IOException - thrown if files are still checked out, or if there was a problem accessing the filesystem
        CancelledException - if the user canceled the update
      • close

        void close()
        Close the project storage associated with this project data object. NOTE: This should not be invoked if this object is utilized by a Project instance.
      • getMaxNameLength

        int getMaxNameLength()
      • testValidName

        void testValidName​(java.lang.String name,
                           boolean isPath)
                    throws InvalidNameException
        Validate a folder/item name or path.
        Parameters:
        name - folder or item name
        isPath - if true name represents full path
        Throws:
        InvalidNameException - if name is invalid