Package ghidra.program.database
Class ProgramContentHandler
- java.lang.Object
-
- ghidra.framework.data.DBContentHandler
-
- ghidra.program.database.ProgramContentHandler
-
- All Implemented Interfaces:
ContentHandler
,ExtensionPoint
public class ProgramContentHandler extends DBContentHandler
ProgramContentHandler
converts between Program instantiations and FolderItem storage. This class also produces the appropriate Icon for Program files.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ghidra.util.classfinder.ExtensionPoint
ExtensionPoint.Exclude, ExtensionPoint.Util
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
PROGRAM_CONTENT_TYPE
static javax.swing.ImageIcon
PROGRAM_ICON
-
Fields inherited from interface ghidra.framework.data.ContentHandler
MISSING_CONTENT, UNKNOWN_CONTENT
-
-
Constructor Summary
Constructors Constructor Description ProgramContentHandler()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
createFile(FileSystem fs, FileSystem userfs, java.lang.String path, java.lang.String name, DomainObject obj, TaskMonitor monitor)
Creates a new folder item within a specified file-system.ChangeSet
getChangeSet(FolderItem item, int fromVer, int toVer)
Returns the object change data which includes changes made to the specified olderVersion through to the specified newerVersion.java.lang.String
getContentType()
Returns list of unique content-types supported.java.lang.String
getContentTypeDisplayString()
A string that is meant to be presented to the user.java.lang.String
getDefaultToolName()
Returns the name of the default tool that should be used to open this content typeDomainObjectAdapter
getDomainObject(FolderItem item, FileSystem userfs, long checkoutId, boolean okToUpgrade, boolean recover, java.lang.Object consumer, TaskMonitor monitor)
Open a folder item for update.java.lang.Class<? extends DomainObject>
getDomainObjectClass()
Returns domain object implementation class supported.javax.swing.Icon
getIcon()
Returns the Icon associated with this handlers content type.DomainObjectAdapter
getImmutableObject(FolderItem item, java.lang.Object consumer, int version, int minChangeVersion, TaskMonitor monitor)
Open a folder item for immutable use.DomainObjectMergeManager
getMergeManager(DomainObject resultsObj, DomainObject sourceObj, DomainObject originalObj, DomainObject latestObj)
Get an instance of a suitable merge manager to be used during the merge of a Versioned object which has been modified by another user since it was last merged or checked-out.DomainObjectAdapter
getReadOnlyObject(FolderItem item, int version, boolean okToUpgrade, java.lang.Object consumer, TaskMonitor monitor)
Open a folder item for read-only use.boolean
isPrivateContentType()
Returns true if the content type is always private (i.e., can not be added to the versioned filesystem).-
Methods inherited from class ghidra.framework.data.DBContentHandler
createFile, openAssociatedUserFile, removeUserDataFile, saveUserDataFile
-
-
-
-
Field Detail
-
PROGRAM_ICON
public static javax.swing.ImageIcon PROGRAM_ICON
-
PROGRAM_CONTENT_TYPE
public static final java.lang.String PROGRAM_CONTENT_TYPE
- See Also:
- Constant Field Values
-
-
Method Detail
-
createFile
public long createFile(FileSystem fs, FileSystem userfs, java.lang.String path, java.lang.String name, DomainObject obj, TaskMonitor monitor) throws java.io.IOException, InvalidNameException, CancelledException
Description copied from interface:ContentHandler
Creates a new folder item within a specified file-system. If fs is versioned, the resulting item is marked as checked-out within the versioned file-system. The specified domainObj will become associated with the newly created database.- Parameters:
fs
- the file system in which to create the folder itemuserfs
- file system which contains associated user datapath
- the path of the folder itemname
- the name of the new folder itemobj
- the domain object to store in the newly created folder itemmonitor
- the monitor that allows the user to cancel- Returns:
- checkout ID for new item
- Throws:
java.io.IOException
- if an i/o error occursInvalidNameException
- if the specified name contains invalid charactersCancelledException
- if the user cancels
-
getImmutableObject
public DomainObjectAdapter getImmutableObject(FolderItem item, java.lang.Object consumer, int version, int minChangeVersion, TaskMonitor monitor) throws java.io.IOException, VersionException, CancelledException
Description copied from interface:ContentHandler
Open a folder item for immutable use. If any changes are attempted on the returned object, an IllegalStateException state exception may be thrown.- Parameters:
item
- stored folder itemconsumer
- consumer of the returned objectversion
- version of the stored folder item to be opened. DomainFile.DEFAULT_VERSION (-1) should be specified when not opening a specific file version.minChangeVersion
- the minimum version which should be included in the change set for the returned object. A value of -1 indicates the default change set.monitor
- the monitor that allows the user to cancel- Returns:
- immutable domain object
- Throws:
java.io.IOException
- if a folder item access error occursVersionException
- if unable to handle file content due to version difference which could not be handled.CancelledException
- if operation is cancelled by user
-
getReadOnlyObject
public DomainObjectAdapter getReadOnlyObject(FolderItem item, int version, boolean okToUpgrade, java.lang.Object consumer, TaskMonitor monitor) throws java.io.IOException, VersionException, CancelledException
Description copied from interface:ContentHandler
Open a folder item for read-only use. While changes are permitted on the returned object, the original folder item may not be overwritten / updated.- Parameters:
item
- stored folder itemversion
- version of the stored folder item to be opened. DomainFile.DEFAULT_VERSION should be specified when not opening a specific file version.okToUpgrade
- if true a version upgrade to the content will be done if necessary.consumer
- consumer of the returned objectmonitor
- the monitor that allows the user to cancel- Returns:
- read-only domain object
- Throws:
java.io.IOException
- if a folder item access error occursVersionException
- if unable to handle file content due to version difference which could not be handled.CancelledException
- if operation is cancelled by user
-
getDomainObject
public DomainObjectAdapter getDomainObject(FolderItem item, FileSystem userfs, long checkoutId, boolean okToUpgrade, boolean recover, java.lang.Object consumer, TaskMonitor monitor) throws java.io.IOException, VersionException, CancelledException
Description copied from interface:ContentHandler
Open a folder item for update. Changes made to the returned object may be saved to the original folder item.- Parameters:
item
- stored folder itemuserfs
- file system which contains associated user datacheckoutId
- an appropriate checout ID required to update the specified folder item.okToUpgrade
- if true a version upgrade to the content will be done if necessary.recover
- if true an attempt to recover any unsaved changes resulting from a crash will be attempted.consumer
- consumer of the returned objectmonitor
- cancelable task monitor- Returns:
- updateable domain object
- Throws:
java.io.IOException
- if a folder item access error occursVersionException
- if unable to handle file content due to version difference which could not be handled.CancelledException
- if operation is cancelled by user
-
getChangeSet
public ChangeSet getChangeSet(FolderItem item, int fromVer, int toVer) throws VersionException, java.io.IOException
Description copied from interface:ContentHandler
Returns the object change data which includes changes made to the specified olderVersion through to the specified newerVersion.- Parameters:
item
- versioned folder itemfromVer
- the older version numbertoVer
- the newer version number- Returns:
- the set of changes that were made
- Throws:
VersionException
- if a database version change prevents reading of data.java.io.IOException
- if a folder item access error occurs
-
getDomainObjectClass
public java.lang.Class<? extends DomainObject> getDomainObjectClass()
Description copied from interface:ContentHandler
Returns domain object implementation class supported.
-
getContentType
public java.lang.String getContentType()
Description copied from interface:ContentHandler
Returns list of unique content-types supported. A minimum of one content-type will be returned. If more than one is returned, these are considered equivalent aliases.
-
getContentTypeDisplayString
public java.lang.String getContentTypeDisplayString()
Description copied from interface:ContentHandler
A string that is meant to be presented to the user.
-
getDefaultToolName
public java.lang.String getDefaultToolName()
Description copied from interface:ContentHandler
Returns the name of the default tool that should be used to open this content type
-
getIcon
public javax.swing.Icon getIcon()
Description copied from interface:ContentHandler
Returns the Icon associated with this handlers content type.
-
isPrivateContentType
public boolean isPrivateContentType()
Description copied from interface:ContentHandler
Returns true if the content type is always private (i.e., can not be added to the versioned filesystem).
-
getMergeManager
public DomainObjectMergeManager getMergeManager(DomainObject resultsObj, DomainObject sourceObj, DomainObject originalObj, DomainObject latestObj)
Description copied from interface:ContentHandler
Get an instance of a suitable merge manager to be used during the merge of a Versioned object which has been modified by another user since it was last merged or checked-out.- Parameters:
resultsObj
- object to which merge results should be writtensourceObj
- object which contains user's changes to be mergedoriginalObj
- object which corresponds to checked-out version statelatestObj
- object which corresponds to latest version with which the sourceObj must be merged.- Returns:
- merge manager
-
-