Package ghidra.program.database.bookmark
Class BookmarkDBManager
- java.lang.Object
-
- ghidra.program.database.bookmark.BookmarkDBManager
-
- All Implemented Interfaces:
ErrorHandler
,ManagerDB
,BookmarkManager
public class BookmarkDBManager extends java.lang.Object implements BookmarkManager, ErrorHandler, ManagerDB
-
-
Field Summary
-
Fields inherited from interface ghidra.program.model.listing.BookmarkManager
OLD_BOOKMARK_PROPERTY_OBJECT_CLASS1, OLD_BOOKMARK_PROPERTY_OBJECT_CLASS2
-
-
Constructor Summary
Constructors Constructor Description BookmarkDBManager(DBHandle handle, AddressMap addrMap, int openMode, Lock lock, TaskMonitor monitor)
Constructs a new CodeManager for a program.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dbError(java.io.IOException e)
Notification that an IO exception occurred.BookmarkType
defineType(java.lang.String type, javax.swing.ImageIcon icon, java.awt.Color color, int priority)
Define a bookmark type with its marker icon and color.void
deleteAddressRange(Address startAddr, Address endAddr, TaskMonitor monitor)
Delete all objects which have been applied to the address range startAddr to endAddr and update the database accordingly.Bookmark
getBookmark(long id)
Returns the bookmark that has the given id or null if no such bookmark exists.Bookmark
getBookmark(Address addr, java.lang.String type, java.lang.String category)
Get a specific bookmarkAddressSetView
getBookmarkAddresses(java.lang.String type)
Get addresses for bookmarks of a specified type.int
getBookmarkCount()
Returns the total number of bookmarks in the program.int
getBookmarkCount(java.lang.String type)
Return the number of bookmarks of the given type.Bookmark[]
getBookmarks(Address addr)
Get all bookmarks on a specific addressBookmark[]
getBookmarks(Address address, java.lang.String type)
Get bookmarks of the indicated type on a specific addressjava.util.Iterator<Bookmark>
getBookmarksIterator()
Returns an iterator over all bookmarks.java.util.Iterator<Bookmark>
getBookmarksIterator(Address startAddress, boolean forward)
Returns an iterator over all bookmark types, starting at the given address, with traversal in the given direction.java.util.Iterator<Bookmark>
getBookmarksIterator(java.lang.String type)
Get iterator over all bookmarks of the specified type.BookmarkType
getBookmarkType(java.lang.String type)
Get a bookmark typeBookmarkType[]
getBookmarkTypes()
Returns list of known bookmark types.java.lang.String[]
getCategories(java.lang.String type)
Get list of categories used for a specified typeProgram
getProgram()
Returns the program associated with this BookmarkManager.boolean
hasBookmarks(java.lang.String type)
Returns true if program contains one or more bookmarks of the given type.void
invalidateCache(boolean all)
Invalidate cached objects held by this manager.void
moveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor)
Move all objects within an address range to a new location.void
programReady(int openMode, int currentRevision, TaskMonitor monitor)
Callback from program made to each manager after the program has completed initialization.void
removeBookmark(Bookmark bookmark)
Remove bookmarkvoid
removeBookmarks(AddressSetView set, TaskMonitor monitor)
Removes all bookmarks over the given address set.void
removeBookmarks(AddressSetView set, java.lang.String type, TaskMonitor monitor)
Removes all bookmarks of the given type over the given address setvoid
removeBookmarks(AddressSetView set, java.lang.String type, java.lang.String category, TaskMonitor monitor)
Removes all bookmarks of the given type and category over the given address setvoid
removeBookmarks(java.lang.String type)
Remove bookmark(s)void
removeBookmarks(java.lang.String type, java.lang.String category, TaskMonitor monitor)
Removes all bookmarks with the given type and category.Bookmark
setBookmark(Address addr, java.lang.String type, java.lang.String category, java.lang.String comment)
Set a bookmark.void
setProgram(ProgramDB program)
Set associated program.
-
-
-
Constructor Detail
-
BookmarkDBManager
public BookmarkDBManager(DBHandle handle, AddressMap addrMap, int openMode, Lock lock, TaskMonitor monitor) throws VersionException, java.io.IOException
Constructs a new CodeManager for a program.- Parameters:
handle
- handle to databaseaddrMap
- addressMap to convert between addresses and long values.openMode
- either READ_ONLY, UPDATE, or UPGRADElock
- the program synchronization lockmonitor
- the task monitor use while upgrading.- Throws:
VersionException
- if the database is incompatable with the current schemajava.io.IOException
- if there is a problem accessing the database.
-
-
Method Detail
-
setProgram
public void setProgram(ProgramDB program)
Set associated program. This must be invoked once prior to invoking any other method.- Specified by:
setProgram
in interfaceManagerDB
- Parameters:
program
-
-
programReady
public void programReady(int openMode, int currentRevision, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from interface:ManagerDB
Callback from program made to each manager after the program has completed initialization. This method may be used by managers to perform additional upgrading which may have been deferred.- Specified by:
programReady
in interfaceManagerDB
- Parameters:
openMode
- the mode that the program is being opened.currentRevision
- current program revision. If openMode is UPGRADE, this value reflects the pre-upgrade value.monitor
- the task monitor to use in any upgrade operations.- Throws:
java.io.IOException
- if a database io error occurs.CancelledException
- if the user cancelled the operation via the task monitor.
-
dbError
public void dbError(java.io.IOException e)
Description copied from interface:ErrorHandler
Notification that an IO exception occurred.- Specified by:
dbError
in interfaceErrorHandler
-
invalidateCache
public void invalidateCache(boolean all)
Invalidate cached objects held by this manager.- Specified by:
invalidateCache
in interfaceManagerDB
- Parameters:
all
- if false, some managers may not need to update their cache if they can tell that its not necessary. If this flag is true, then all managers should clear their cache no matter what.
-
defineType
public BookmarkType defineType(java.lang.String type, javax.swing.ImageIcon icon, java.awt.Color color, int priority)
Define a bookmark type with its marker icon and color. The icon and color values are not permanently stored. Therefor, this method must be re-invoked by a plugin each time a program is opened if a custom icon and color are desired.- Specified by:
defineType
in interfaceBookmarkManager
- Parameters:
type
- bookmark typeicon
- marker icon which may get scaledcolor
- marker color- Returns:
- bookmark type object
- Throws:
java.io.IOException
- if a database error occurs while adding the new type.
-
getBookmarkTypes
public BookmarkType[] getBookmarkTypes()
Returns list of known bookmark types.- Specified by:
getBookmarkTypes
in interfaceBookmarkManager
-
getProgram
public Program getProgram()
Description copied from interface:BookmarkManager
Returns the program associated with this BookmarkManager.- Specified by:
getProgram
in interfaceBookmarkManager
- Returns:
- the program associated with this BookmarkManager.
-
getBookmarkType
public BookmarkType getBookmarkType(java.lang.String type)
Get a bookmark type- Specified by:
getBookmarkType
in interfaceBookmarkManager
- Parameters:
type
- bookmark type name- Returns:
- bookmark type or null if type is unknown
-
setBookmark
public Bookmark setBookmark(Address addr, java.lang.String type, java.lang.String category, java.lang.String comment)
Set a bookmark.- Specified by:
setBookmark
in interfaceBookmarkManager
- Parameters:
addr
-type
-category
-comment
-
-
getBookmark
public Bookmark getBookmark(Address addr, java.lang.String type, java.lang.String category)
Get a specific bookmark- Specified by:
getBookmark
in interfaceBookmarkManager
- Parameters:
addr
-type
-category
-- Returns:
-
removeBookmark
public void removeBookmark(Bookmark bookmark)
Remove bookmark- Specified by:
removeBookmark
in interfaceBookmarkManager
- Parameters:
bookmark
-
-
removeBookmarks
public void removeBookmarks(java.lang.String type)
Remove bookmark(s)- Specified by:
removeBookmarks
in interfaceBookmarkManager
- Parameters:
type
- bookmark type or null for all bookmarks
-
removeBookmarks
public void removeBookmarks(java.lang.String type, java.lang.String category, TaskMonitor monitor) throws CancelledException
Description copied from interface:BookmarkManager
Removes all bookmarks with the given type and category.- Specified by:
removeBookmarks
in interfaceBookmarkManager
- Parameters:
type
- the type of the bookmarks to be removed.category
- bookmark category of the types to be removed.monitor
- a task monitor to report the progress.- Throws:
CancelledException
- if the user (via the monitor) cancelled the operation.
-
getBookmarks
public Bookmark[] getBookmarks(Address addr)
Description copied from interface:BookmarkManager
Get all bookmarks on a specific address- Specified by:
getBookmarks
in interfaceBookmarkManager
- Parameters:
addr
- the address at which to retrieve all bookmarks.- Returns:
- array of bookmarks
-
getBookmarks
public Bookmark[] getBookmarks(Address address, java.lang.String type)
Description copied from interface:BookmarkManager
Get bookmarks of the indicated type on a specific address- Specified by:
getBookmarks
in interfaceBookmarkManager
- Parameters:
address
- the address at which to search for bookmarks.type
- bookmark type to search for- Returns:
- array of bookmarks
-
hasBookmarks
public boolean hasBookmarks(java.lang.String type)
Description copied from interface:BookmarkManager
Returns true if program contains one or more bookmarks of the given type.- Specified by:
hasBookmarks
in interfaceBookmarkManager
- Parameters:
type
- the type of bookmark to check for.
-
getCategories
public java.lang.String[] getCategories(java.lang.String type)
Description copied from interface:BookmarkManager
Get list of categories used for a specified type- Specified by:
getCategories
in interfaceBookmarkManager
- Parameters:
type
- bookmark type- Returns:
- array of category strings
-
getBookmarkAddresses
public AddressSetView getBookmarkAddresses(java.lang.String type)
Description copied from interface:BookmarkManager
Get addresses for bookmarks of a specified type.- Specified by:
getBookmarkAddresses
in interfaceBookmarkManager
- Parameters:
type
- bookmark type- Returns:
- address set containing bookmarks of the specified type.
-
getBookmark
public Bookmark getBookmark(long id)
Description copied from interface:BookmarkManager
Returns the bookmark that has the given id or null if no such bookmark exists.- Specified by:
getBookmark
in interfaceBookmarkManager
- Parameters:
id
- the id of the bookmark to be retrieved.
-
getBookmarkCount
public int getBookmarkCount()
Description copied from interface:BookmarkManager
Returns the total number of bookmarks in the program.- Specified by:
getBookmarkCount
in interfaceBookmarkManager
-
getBookmarkCount
public int getBookmarkCount(java.lang.String type)
Description copied from interface:BookmarkManager
Return the number of bookmarks of the given type.- Specified by:
getBookmarkCount
in interfaceBookmarkManager
- Parameters:
type
- the type of bookmarks to count.
-
getBookmarksIterator
public java.util.Iterator<Bookmark> getBookmarksIterator(java.lang.String type)
Description copied from interface:BookmarkManager
Get iterator over all bookmarks of the specified type.- Specified by:
getBookmarksIterator
in interfaceBookmarkManager
- Parameters:
type
- the bookmark type to search for- Returns:
- an iterator over all bookmarks of the specified type.
-
getBookmarksIterator
public java.util.Iterator<Bookmark> getBookmarksIterator(Address startAddress, boolean forward)
Description copied from interface:BookmarkManager
Returns an iterator over all bookmark types, starting at the given address, with traversal in the given direction.- Specified by:
getBookmarksIterator
in interfaceBookmarkManager
- Parameters:
startAddress
- the address at which to startforward
- true to iterate in the forward direction; false for backwards- Returns:
- an iterator over all bookmark types, starting at the given address, with traversal in the given direction.
-
getBookmarksIterator
public java.util.Iterator<Bookmark> getBookmarksIterator()
Description copied from interface:BookmarkManager
Returns an iterator over all bookmarks.- Specified by:
getBookmarksIterator
in interfaceBookmarkManager
-
removeBookmarks
public void removeBookmarks(AddressSetView set, TaskMonitor monitor) throws CancelledException
Description copied from interface:BookmarkManager
Removes all bookmarks over the given address set.- Specified by:
removeBookmarks
in interfaceBookmarkManager
- Parameters:
set
- the set of addresses from which to remove all bookmarks.monitor
- a taskmonitor to report the progress.- Throws:
CancelledException
- if the user (via the monitor) cancelled the operation.
-
removeBookmarks
public void removeBookmarks(AddressSetView set, java.lang.String type, TaskMonitor monitor) throws CancelledException
Description copied from interface:BookmarkManager
Removes all bookmarks of the given type over the given address set- Specified by:
removeBookmarks
in interfaceBookmarkManager
- Parameters:
set
- the set of addresses from which to remove all bookmarks of the given type.type
- the type of bookmarks to remove.monitor
- a taskmonitor to report the progress.- Throws:
CancelledException
- if the user (via the monitor) cancelled the operation.
-
removeBookmarks
public void removeBookmarks(AddressSetView set, java.lang.String type, java.lang.String category, TaskMonitor monitor) throws CancelledException
Description copied from interface:BookmarkManager
Removes all bookmarks of the given type and category over the given address set- Specified by:
removeBookmarks
in interfaceBookmarkManager
- Parameters:
set
- the set of addresses from which to remove all bookmarks of the given type and category.type
- the type of bookmarks to remove.category
- the category of bookmarks to remove.monitor
- a taskmonitor to report the progress.- Throws:
CancelledException
- if the user (via the monitor) cancelled the operation.
-
deleteAddressRange
public void deleteAddressRange(Address startAddr, Address endAddr, TaskMonitor monitor) throws CancelledException
Description copied from interface:ManagerDB
Delete all objects which have been applied to the address range startAddr to endAddr and update the database accordingly.- Specified by:
deleteAddressRange
in interfaceManagerDB
- Parameters:
startAddr
- the first address in the range.endAddr
- the last address in the range.monitor
- the task monitor to use in any upgrade operations.- Throws:
CancelledException
- if the user cancelled the operation via the task monitor.
-
moveAddressRange
public void moveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor) throws CancelledException
Description copied from interface:ManagerDB
Move all objects within an address range to a new location.- Specified by:
moveAddressRange
in interfaceManagerDB
- Parameters:
fromAddr
- the first address of the range to be moved.toAddr
- the address where to the range is to be moved.length
- the number of addresses to move.monitor
- the task monitor to use in any upgrade operations.- Throws:
CancelledException
- if the user cancelled the operation via the task monitor.
-
-