Package ghidra.framework.project
Class DefaultProject
- java.lang.Object
-
- ghidra.framework.project.DefaultProject
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, boolean resetOwner)
Constructor for opening a project.protected
DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, RepositoryAdapter repository)
Constructor for creating a New projectprotected
DefaultProject(DefaultProjectManager projectManager, GhidraURLConnection connection)
Constructor for opening a URL-based project
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ProjectData
addProjectView(java.net.URL url)
Add the given project URL to this project's list project views.void
close()
Close the project.ToolChest
getLocalToolChest()
Get the local tool chest for the user logged in.java.lang.String
getName()
Convenience method to get the name of this project.java.util.List<DomainFile>
getOpenData()
Get list of domain files that are open.ProjectData
getProjectData()
Get the root domain data folder in the project.ProjectData
getProjectData(ProjectLocator locator)
Returns the Project Data for the given Project locator.ProjectData
getProjectData(java.net.URL url)
Returns the Project Data for the given Project URL.ProjectLocator
getProjectLocator()
Get the project URL for this project.ProjectManager
getProjectManager()
Returns the project manager of this project.ProjectLocator[]
getProjectViews()
Return the list of project views in this project.RepositoryAdapter
getRepository()
Get the repository that this project is associated with.SaveState
getSaveableData(java.lang.String key)
The analog forProject.setSaveableData(String, SaveState)
.ToolManager
getToolManager()
Return the tool manager for this project.ToolServices
getToolServices()
Get the tool services for this project.ToolTemplate
getToolTemplate(java.lang.String tag)
Get the tool template with the given tag.ProjectData[]
getViewedProjectData()
Get the project data for other projects that are currently being viewed.boolean
hasChanged()
Return whether the project configuration has changed.boolean
isClosed()
Returns whether this project instance has been closedvoid
releaseFiles(java.lang.Object consumer)
Releases all DomainObjects used by the given consumervoid
removeProjectView(java.net.URL url)
Remove the view from this project.void
restore()
Restore this project's state.void
save()
Save the project and the list of project views.boolean
saveSessionTools()
Saves any tools that are associated with the opened project when the project is closed.void
saveToolTemplate(java.lang.String tag, ToolTemplate template)
Save the given tool template as part of the project.void
setSaveableData(java.lang.String key, SaveState saveState)
Allows the user to store data related to the project.java.lang.String
toString()
-
-
-
Constructor Detail
-
DefaultProject
protected DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, RepositoryAdapter repository) throws java.io.IOException, LockException
Constructor for creating a New project- Parameters:
projectManager
- the manager of this projectprojectLocator
- location and name of projectrepository
- shared repository associated with the new project. Can be null for non-shared projects- Throws:
java.io.IOException
- if I/O error occurs.LockException
- if unable to establish project lock
-
DefaultProject
protected DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, boolean resetOwner) throws java.io.IOException, NotOwnerException, LockException
Constructor for opening a project.- Parameters:
projectManager
- the manager of this projectprojectLocator
- location and name of projectresetOwner
- if true, set the owner to the current user- Throws:
java.io.FileNotFoundException
- project directory not foundjava.io.IOException
- if I/O error occurs.NotOwnerException
- if userName is not the owner of the project.LockException
- if unable to establish project lock
-
DefaultProject
protected DefaultProject(DefaultProjectManager projectManager, GhidraURLConnection connection) throws java.io.IOException
Constructor for opening a URL-based project- Parameters:
connection
- project connection- Throws:
java.io.IOException
- if I/O error occurs.
-
-
Method Detail
-
getProjectManager
public ProjectManager getProjectManager()
Description copied from interface:Project
Returns the project manager of this project.- Specified by:
getProjectManager
in interfaceProject
- Returns:
- the project manager of this project.
-
getProjectLocator
public ProjectLocator getProjectLocator()
Get the project URL for this project.- Specified by:
getProjectLocator
in interfaceProject
-
addProjectView
public ProjectData addProjectView(java.net.URL url) throws java.io.IOException, java.net.MalformedURLException
Description copied from interface:Project
Add the given project URL to this project's list project views. The project view allows users to look at data files from another project.- Specified by:
addProjectView
in interfaceProject
- Parameters:
url
- identifier for the project view- Returns:
- project data for this view
- Throws:
java.io.IOException
- if I/O error occurs or if project/repository not foundjava.net.MalformedURLException
- if projectURL is invalid
-
removeProjectView
public void removeProjectView(java.net.URL url)
Remove the view from this project.- Specified by:
removeProjectView
in interfaceProject
- Parameters:
url
- identifier for the project
-
getToolServices
public ToolServices getToolServices()
Get the tool services for this project.- Specified by:
getToolServices
in interfaceProject
-
getLocalToolChest
public ToolChest getLocalToolChest()
Get the local tool chest for the user logged in.- Specified by:
getLocalToolChest
in interfaceProject
- Returns:
- the tool chest
-
getName
public java.lang.String getName()
Description copied from interface:Project
Convenience method to get the name of this project.
-
getToolManager
public ToolManager getToolManager()
Description copied from interface:Project
Return the tool manager for this project.- Specified by:
getToolManager
in interfaceProject
-
hasChanged
public boolean hasChanged()
Description copied from interface:Project
Return whether the project configuration has changed.- Specified by:
hasChanged
in interfaceProject
-
getProjectViews
public ProjectLocator[] getProjectViews()
Description copied from interface:Project
Return the list of project views in this project.- Specified by:
getProjectViews
in interfaceProject
-
getRepository
public RepositoryAdapter getRepository()
Description copied from interface:Project
Get the repository that this project is associated with.- Specified by:
getRepository
in interfaceProject
- Returns:
- null if the project is not associated with a remote repository
-
close
public void close()
Description copied from interface:Project
Close the project.
-
isClosed
public boolean isClosed()
Description copied from interface:Project
Returns whether this project instance has been closed
-
saveSessionTools
public boolean saveSessionTools()
Description copied from interface:Project
Saves any tools that are associated with the opened project when the project is closed.- Specified by:
saveSessionTools
in interfaceProject
- Returns:
- True if the save was not cancelled.
-
restore
public void restore()
Description copied from interface:Project
Restore this project's state.
-
save
public void save()
Description copied from interface:Project
Save the project and the list of project views.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
saveToolTemplate
public void saveToolTemplate(java.lang.String tag, ToolTemplate template)
Description copied from interface:Project
Save the given tool template as part of the project.- Specified by:
saveToolTemplate
in interfaceProject
- Parameters:
tag
- ID or name for the tool templatetemplate
- template to save
-
getToolTemplate
public ToolTemplate getToolTemplate(java.lang.String tag)
Description copied from interface:Project
Get the tool template with the given tag.- Specified by:
getToolTemplate
in interfaceProject
- Parameters:
tag
- ID or name for the tool template to get- Returns:
- tool template
-
getOpenData
public java.util.List<DomainFile> getOpenData()
Description copied from interface:Project
Get list of domain files that are open.- Specified by:
getOpenData
in interfaceProject
- Returns:
- the files; empty if no files
-
getProjectData
public ProjectData getProjectData()
Description copied from interface:Project
Get the root domain data folder in the project.- Specified by:
getProjectData
in interfaceProject
-
setSaveableData
public void setSaveableData(java.lang.String key, SaveState saveState)
Description copied from interface:Project
Allows the user to store data related to the project.- Specified by:
setSaveableData
in interfaceProject
- Parameters:
key
- A value used to store and lookup saved datasaveState
- a container of data that will be written out when persisted
-
getSaveableData
public SaveState getSaveableData(java.lang.String key)
Description copied from interface:Project
The analog forProject.setSaveableData(String, SaveState)
.- Specified by:
getSaveableData
in interfaceProject
-
getProjectData
public ProjectData getProjectData(ProjectLocator locator)
Description copied from interface:Project
Returns the Project Data for the given Project locator. The Project locator must be either the current active project or an currently open project view.- Specified by:
getProjectData
in interfaceProject
-
getProjectData
public ProjectData getProjectData(java.net.URL url)
Description copied from interface:Project
Returns the Project Data for the given Project URL. The Project URL must correspond to the current active project or an currently open project view.- Specified by:
getProjectData
in interfaceProject
-
getViewedProjectData
public ProjectData[] getViewedProjectData()
Description copied from interface:Project
Get the project data for other projects that are currently being viewed.- Specified by:
getViewedProjectData
in interfaceProject
- Returns:
- zero length array if there are no viewed projects open
-
releaseFiles
public void releaseFiles(java.lang.Object consumer)
Description copied from interface:Project
Releases all DomainObjects used by the given consumer- Specified by:
releaseFiles
in interfaceProject
- Parameters:
consumer
- object no longer using any DomainObjects.
-
-