Package ghidra.framework.store.local
Class LocalDatabaseItem
- java.lang.Object
-
- ghidra.framework.store.local.LocalFolderItem
-
- ghidra.framework.store.local.LocalDatabaseItem
-
- All Implemented Interfaces:
DatabaseItem
,FolderItem
public class LocalDatabaseItem extends LocalFolderItem implements DatabaseItem
LocalDatabaseItem
provides a FolderItem implementation for a local database. This item wraps an underlying VersionedDatabase if the file-system is versioned, otherwise a PrivateDatabase is wrapped.This item utilizes a data directory for storing all files relating to the database as well as history and checkout data files if this item is versioned.
-
-
Field Summary
-
Fields inherited from interface ghidra.framework.store.FolderItem
DATABASE_FILE_TYPE, DATAFILE_FILE_TYPE, DEFAULT_CHECKOUT_ID, LATEST_VERSION, UNKNOWN_FILE_TYPE
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canRecover()
Returns true if unsaved file changes can be recovered.void
clearCheckout()
Clears the checkout data associated with this non-shared file.int
getCurrentVersion()
Return the latest/current version.int
getMinimumVersion()
long
lastModified()
Return The time that this item was last modified.long
length()
Returns the length of this domain file.LocalManagedBufferFile
open()
Open the current version of the stored database for non-update use.LocalManagedBufferFile
open(int version)
Open a specific version of the stored database for non-update use.LocalManagedBufferFile
open(int version, int minChangeDataVer)
Open a specific version of the stored database for non-update use.LocalManagedBufferFile
openForUpdate(long checkoutId)
Open the latest database version for update.void
output(java.io.File outputFile, int version, TaskMonitor monitor)
Serialize (i.e., pack) this item into the specified outputFile.LocalFolderItem
refresh()
Returns this instance after refresh or null if item no longer existsvoid
updateCheckout(FolderItem versionedFolderItem, boolean updateItem, TaskMonitor monitor)
Update this non-versioned item with the latest version of the specified versioned item.void
updateCheckout(FolderItem item, int checkoutVersion)
Update this non-versioned item with the contents of the specified item which must be within the same non-versioned fileSystem.-
Methods inherited from class ghidra.framework.store.local.LocalFolderItem
checkout, delete, equals, getCheckout, getCheckoutId, getCheckouts, getCheckoutVersion, getContentType, getContentTypeVersion, getFileID, getLocalCheckoutVersion, getName, getParentPath, getPathName, getVersions, hasCheckouts, isCheckedOut, isCheckedOutExclusive, isCheckinActive, isReadOnly, isVersioned, resetFileID, setCheckout, setContentTypeVersion, setReadOnly, terminateCheckout, updateCheckoutVersion
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ghidra.framework.store.FolderItem
checkout, delete, getCheckout, getCheckoutId, getCheckouts, getCheckoutVersion, getContentType, getContentTypeVersion, getFileID, getLocalCheckoutVersion, getName, getParentPath, getPathName, getVersions, hasCheckouts, isCheckedOut, isCheckedOutExclusive, isCheckinActive, isReadOnly, isVersioned, resetFileID, setCheckout, setContentTypeVersion, setReadOnly, terminateCheckout, updateCheckoutVersion
-
-
-
-
Method Detail
-
length
public long length() throws java.io.IOException
Description copied from interface:FolderItem
Returns the length of this domain file. This size is the minimum disk space used for storing this file, but does not account for additional storage space used to tracks changes, etc.- Specified by:
length
in interfaceFolderItem
- Returns:
- file length
- Throws:
java.io.IOException
- thrown if IO or access error occurs
-
getCurrentVersion
public int getCurrentVersion()
Description copied from interface:FolderItem
Return the latest/current version.- Specified by:
getCurrentVersion
in interfaceFolderItem
-
getMinimumVersion
public int getMinimumVersion() throws java.io.IOException
- Throws:
java.io.IOException
-
clearCheckout
public void clearCheckout() throws java.io.IOException
Description copied from interface:FolderItem
Clears the checkout data associated with this non-shared file. NOTE: This method is only valid for a local non-versioned file-system.- Specified by:
clearCheckout
in interfaceFolderItem
- Overrides:
clearCheckout
in classLocalFolderItem
- Throws:
java.io.IOException
-
open
public LocalManagedBufferFile open(int version, int minChangeDataVer) throws java.io.IOException
Description copied from interface:DatabaseItem
Open a specific version of the stored database for non-update use. Historical change data from minChangeDataVer through version is available. The returned BufferFile does not support the BufferMgr's Save operation.- Specified by:
open
in interfaceDatabaseItem
- Parameters:
version
- database versionminChangeDataVer
- indicates the oldest change data version to be included in change set. A -1 indicates only the last change data buffer file is applicable.- Returns:
- buffer file
- Throws:
FileInUseException
- thrown if unable to obtain the required database lock(s).java.io.IOException
- thrown if IO error occurs.- See Also:
ManagedBufferFile.getNextChangeDataFile(boolean)
-
open
public LocalManagedBufferFile open(int version) throws java.io.IOException
Description copied from interface:DatabaseItem
Open a specific version of the stored database for non-update use. Change data will not be available. The returned BufferFile does not support the BufferMgr's Save operation.- Specified by:
open
in interfaceDatabaseItem
- Parameters:
version
- database version- Returns:
- buffer file
- Throws:
FileInUseException
- thrown if unable to obtain the required database lock(s).java.io.IOException
- thrown if IO error occurs.
-
open
public LocalManagedBufferFile open() throws java.io.IOException
Description copied from interface:DatabaseItem
Open the current version of the stored database for non-update use. Change data will not be available. The returned BufferFile does not support the BufferMgr's Save operation.- Specified by:
open
in interfaceDatabaseItem
- Throws:
java.io.IOException
- thrown if IO error occurs.
-
openForUpdate
public LocalManagedBufferFile openForUpdate(long checkoutId) throws java.io.IOException
Open the latest database version for update.- Specified by:
openForUpdate
in interfaceDatabaseItem
- Parameters:
checkoutId
- reqiured for update to a versioned item, otherwise set to -1 for a non-versioned private database.- Returns:
- open database handle
- Throws:
java.io.IOException
FileInUseException
- thrown if unable to obtain the required database lock(s).
-
canRecover
public boolean canRecover()
Description copied from interface:FolderItem
Returns true if unsaved file changes can be recovered.- Specified by:
canRecover
in interfaceFolderItem
- See Also:
FolderItem.canRecover()
-
output
public void output(java.io.File outputFile, int version, TaskMonitor monitor) throws CancelledException, java.io.IOException
Description copied from interface:FolderItem
Serialize (i.e., pack) this item into the specified outputFile.- Specified by:
output
in interfaceFolderItem
- Parameters:
outputFile
- packed output file to be createdversion
- if this item is versioned, specifies the version to be output, otherwise -1 should be specified.monitor
- progress monitor- Throws:
CancelledException
- if monitor cancels operationjava.io.IOException
-
updateCheckout
public void updateCheckout(FolderItem versionedFolderItem, boolean updateItem, TaskMonitor monitor) throws java.io.IOException, CancelledException
Description copied from class:LocalFolderItem
Update this non-versioned item with the latest version of the specified versioned item.- Specified by:
updateCheckout
in classLocalFolderItem
- Parameters:
versionedFolderItem
- versioned item which corresponds to this non-versioned item.updateItem
- if true this items content is updated using the versionedFolderItemmonitor
- progress monitor for update- Throws:
java.io.IOException
- if this file is not a checked-out non-versioned file or an IO error occurs.CancelledException
- if monitor cancels operation
-
updateCheckout
public void updateCheckout(FolderItem item, int checkoutVersion) throws java.io.IOException
Description copied from class:LocalFolderItem
Update this non-versioned item with the contents of the specified item which must be within the same non-versioned fileSystem. If successful, the specified item will be removed after its content has been moved into this item.- Specified by:
updateCheckout
in classLocalFolderItem
- Throws:
java.io.IOException
- if this file is not a checked-out non-versioned file or an IO error occurs.
-
lastModified
public long lastModified()
Description copied from interface:FolderItem
Return The time that this item was last modified.- Specified by:
lastModified
in interfaceFolderItem
- Overrides:
lastModified
in classLocalFolderItem
- See Also:
FolderItem.lastModified()
-
refresh
public LocalFolderItem refresh() throws java.io.IOException
Description copied from interface:FolderItem
Returns this instance after refresh or null if item no longer exists- Specified by:
refresh
in interfaceFolderItem
- Overrides:
refresh
in classLocalFolderItem
- Throws:
java.io.IOException
-
-