Package ghidra.framework.model
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 Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addDomainFolderChangeListener(DomainFolderChangeListener listener)
Adds a listener that will be notified when any folder or file changes in the project.void
close()
Close the project storage associated with this project data object.void
convertProjectToShared(RepositoryAdapter repository, TaskMonitor monitor)
Convert a local project to a shared project.void
findOpenFiles(java.util.List<DomainFile> list)
Finds all open domain files and appends them to the specified list.DomainFile
getFile(java.lang.String path)
Get domain file specified by an absolute data path.DomainFile
getFileByID(java.lang.String fileID)
Get domain file specified by its unique fileID.int
getFileCount()
Get the approximate number of files contained within the project.DomainFolder
getFolder(java.lang.String path)
Get domain folder specified by an absolute data path.java.lang.Class<? extends LocalFileSystem>
getLocalStorageClass()
int
getMaxNameLength()
ProjectLocator
getProjectLocator()
Returns the projectLocator for the this ProjectData.RepositoryAdapter
getRepository()
Return the repository for this project data.DomainFolder
getRootFolder()
Returns the root folder of the project.java.net.URL
getSharedFileURL(java.lang.String path)
Get a GhidraURL for a shared domain file which is available within a remote repository.User
getUser()
Returns User object associated with remote repository or null if a remote repository is not used.java.lang.String
makeValidName(java.lang.String name)
Transform the specified name into an acceptable folder or file item name.void
refresh(boolean force)
Sync the Domain folder/file structure with the underlying file structure.void
removeDomainFolderChangeListener(DomainFolderChangeListener listener)
Removes the listener to be notified of folder and file changes.void
testValidName(java.lang.String name, boolean isPath)
Validate a folder/item name or path.void
updateRepositoryInfo(RepositoryAdapter repository, TaskMonitor monitor)
Update the repository for this project; the server may have changed or a different repository is being used.
-
-
-
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 filesystemCancelledException
- 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 usemonitor
- task monitor- Throws:
java.io.IOException
- thrown if files are still checked out, or if there was a problem accessing the filesystemCancelledException
- 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 nameisPath
- if true name represents full path- Throws:
InvalidNameException
- if name is invalid
-
-