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

  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(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 exists
  `void`
  `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 Details

  - ### length

    public long length() throws 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 interface `FolderItem`
    Returns:
      file length
    Throws:
      `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 interface `FolderItem`

  - ### getMinimumVersion

    public int getMinimumVersion() throws IOException
    Throws:
      `IOException`

  - ### clearCheckout

    public void clearCheckout() throws 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 interface `FolderItem`
    Overrides:
      `clearCheckout` in class `LocalFolderItem`
    Throws:
      `IOException`

  - ### open

    public LocalManagedBufferFile open(int version, int minChangeDataVer) throws 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 interface `DatabaseItem`
    Parameters:
      `version` - database version
      `minChangeDataVer` - 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).
      `IOException` - thrown if IO error occurs.
    See Also:
      - `ManagedBufferFile.getNextChangeDataFile(boolean)`

  - ### open

    public LocalManagedBufferFile open(int version) throws 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 interface `DatabaseItem`
    Parameters:
      `version` - database version
    Returns:
      buffer file
    Throws:
      `FileInUseException` - thrown if unable to obtain the required database lock(s).
      `IOException` - thrown if IO error occurs.

  - ### open

    public LocalManagedBufferFile open() throws 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 interface `DatabaseItem`
    Throws:
      `IOException` - thrown if IO error occurs.

  - ### openForUpdate

    public LocalManagedBufferFile openForUpdate(long checkoutId) throws IOException
    Open the latest database version for update.
    Specified by:
      `openForUpdate` in interface `DatabaseItem`
    Parameters:
      `checkoutId` - reqiured for update to a versioned item, otherwise set to -1 for a non-versioned private database.
    Returns:
      open database handle
    Throws:
      `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 interface `FolderItem`
    See Also:
      - `FolderItem.canRecover()`

  - ### output

    public void output(File outputFile, int version, TaskMonitor monitor) throws CancelledException, IOException
    Description copied from interface: `FolderItem`
    Serialize (i.e., pack) this item into the specified outputFile.
    Specified by:
      `output` in interface `FolderItem`
    Parameters:
      `outputFile` - packed output file to be created
      `version` - if this item is versioned, specifies the version to be output, otherwise -1 should be specified.
      `monitor` - progress monitor
    Throws:
      `CancelledException` - if monitor cancels operation
      `IOException`

  - ### updateCheckout

    public void updateCheckout(FolderItem versionedFolderItem, boolean updateItem, TaskMonitor monitor) throws 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 class `LocalFolderItem`
    Parameters:
      `versionedFolderItem` - versioned item which corresponds to this non-versioned item.
      `updateItem` - if true this items content is updated using the versionedFolderItem
      `monitor` - progress monitor for update
    Throws:
      `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 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 class `LocalFolderItem`
    Throws:
      `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 interface `FolderItem`
    Overrides:
      `lastModified` in class `LocalFolderItem`
    See Also:
      - `FolderItem.lastModified()`

  - ### refresh

    public LocalFolderItem refresh() throws IOException
    Description copied from interface: `FolderItem`
    Returns this instance after refresh or null if item no longer exists
    Specified by:
      `refresh` in interface `FolderItem`
    Overrides:
      `refresh` in class `LocalFolderItem`
    Throws:
      `IOException`