Package ghidra.framework.store.local

# Class LocalFolderItem

java.lang.Object
ghidra.framework.store.local.LocalFolderItem

All Implemented Interfaces:
  `FolderItem`

Direct Known Subclasses:
  `LocalDatabaseItem`, `LocalDataFileItem`, `LocalTextDataItem`, `LocalUnknownFolderItem`

public abstract class LocalFolderItem extends Object implements FolderItem
`LocalFolderItem` provides an abstract implementation of a folder item which resides on a local file-system. An item is defined by a property file and generally has a hidden data directory which contains the actual data file(s).

An item may be either private or shared (i.e., versioned) as defined by the associated file-system. A shared item utilizes a CheckoutManager and HistoryManager for tracking version control data related to this item.

- ## Field Summary

  ### Fields inherited from interface ghidra.framework.store.FolderItem

  `DATABASE_FILE_TYPE, DATAFILE_FILE_TYPE, DEFAULT_CHECKOUT_ID, LATEST_VERSION, LINK_FILE_TYPE, UNKNOWN_FILE_TYPE`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ItemCheckoutStatus`
  `checkout(CheckoutType checkoutType, String user, String projectPath)`
  Checkout this folder item.
  `void`
  `clearCheckout()`
  Clears the checkout data associated with this non-shared file.
  `void`
  `delete(int version, String user)`
  Deletes the item or a specific version.
  `boolean`
  `equals(Object obj)`
  `ItemCheckoutStatus`
  `getCheckout(long checkoutId)`
  Get the checkout status which corresponds to the specified checkout ID.
  `long`
  `getCheckoutId()`
  Returns the checkoutId for this file.
  `ItemCheckoutStatus[]`
  `getCheckouts()`
  Get all current checkouts for this item.
  `int`
  `getCheckoutVersion()`
  Returns the item version which was checked-out.
  `String`
  `getContentType()`
  Return The content type name for this item.
  `int`
  `getContentTypeVersion()`
  Returns the version of content type.
  `String`
  `getFileID()`
  Return the file ID if one has been established or null
  `int`
  `getLocalCheckoutVersion()`
  Returns the local item version at the time the checkout was completed.
  `String`
  `getName()`
  Return The display name for this item.
  `String`
  `getParentPath()`
  Returns the path of the parent folder.
  `String`
  `getPathName()`
  Return The concatenation of the pathname and the basename which can be used to uniquely identify a folder item.
  `Version[]`
  `getVersions()`
  Returns list of all available versions or null if item is not versioned.
  `boolean`
  `hasCheckouts()`
  Returns true if this item is versioned and has one or more checkouts.
  `int`
  `hashCode()`
  `boolean`
  `isCheckedOut()`
  Returns true if this item is a checked-out copy from a versioned file system.
  `boolean`
  `isCheckedOutExclusive()`
  Returns true if this item is a checked-out copy with exclusive access from a versioned file system.
  `boolean`
  `isCheckinActive()`
  Returns true if this item is versioned and has a checkin in-progress.
  `boolean`
  `isReadOnly()`
  Returns true if item can be overwritten/deleted.
  `boolean`
  `isVersioned()`
  Return true if this is a versioned item, else false
  `long`
  `lastModified()`
  Return The time that this item was last modified.
  `LocalFolderItem`
  `refresh()`
  Returns this instance after refresh or null if item no longer exists
  `String`
  `resetFileID()`
  Assign a new file-ID to this local non-versioned file.
  `void`
  `setCheckout(long checkoutId, boolean exclusive, int checkoutVersion, int localVersion)`
  Set the checkout data associated with this non-shared file.
  `void`
  `setContentTypeVersion(int version)`
  Sets the version for the content type.
  `void`
  `setReadOnly(boolean state)`
  Set the state of the read-only indicator for this non-shared item.
  `void`
  `terminateCheckout(long checkoutId, boolean notify)`
  Terminates a checkout.
  `abstract void`
  `updateCheckout(FolderItem versionedFolderItem, boolean updateItem, TaskMonitor monitor)`
  Update this non-versioned item with the latest version of the specified versioned item.
  `abstract 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.
  `void`
  `updateCheckoutVersion(long checkoutId, int checkoutVersion, String user)`
  Update the checkout version associated with this versioned item.

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface ghidra.framework.store.FolderItem

  `canRecover, getCurrentVersion, length, output`

- ## Method Details

  - ### 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`
    Throws:
      `IOException`

  - ### delete

    public void delete(int version, String user) throws IOException
    Description copied from interface: `FolderItem`
    Deletes the item or a specific version. If a specific version is specified, it must either be the oldest or latest (i.e., current).
    Specified by:
      `delete` in interface `FolderItem`
    Parameters:
      `version` - specific version to be deleted, or -1 to remove all versions.
      `user` - user name
    Throws:
      `IOException` - if an IO error occurs, including the inability to delete a version because this item is checked-out, the user does not have permission, or the specified version is not the oldest or latest.
    See Also:
      - `FolderItem.delete(int, java.lang.String)`

  - ### getContentType

    public String getContentType()
    Description copied from interface: `FolderItem`
    Return The content type name for this item.
    Specified by:
      `getContentType` in interface `FolderItem`
    See Also:
      - `FolderItem.getContentType()`

  - ### getFileID

    public String getFileID()
    Description copied from interface: `FolderItem`
    Return the file ID if one has been established or null
    Specified by:
      `getFileID` in interface `FolderItem`
    See Also:
      - `FolderItem.getFileID()`

  - ### resetFileID

    public String resetFileID() throws IOException
    Description copied from interface: `FolderItem`
    Assign a new file-ID to this local non-versioned file. NOTE: This method is only valid for a local non-versioned file-system.
    Specified by:
      `resetFileID` in interface `FolderItem`
    Returns:
      new file-ID
    Throws:
      `IOException` - thrown if IO or access error occurs
    See Also:
      - `FolderItem.resetFileID()`

  - ### getName

    public String getName()
    Description copied from interface: `FolderItem`
    Return The display name for this item.
    Specified by:
      `getName` in interface `FolderItem`
    See Also:
      - `FolderItem.getName()`

  - ### getParentPath

    public String getParentPath()
    Description copied from interface: `FolderItem`
    Returns the path of the parent folder.
    Specified by:
      `getParentPath` in interface `FolderItem`
    See Also:
      - `FolderItem.getParentPath()`

  - ### getPathName

    public String getPathName()
    Description copied from interface: `FolderItem`
    Return The concatenation of the pathname and the basename which can be used to uniquely identify a folder item.
    Specified by:
      `getPathName` in interface `FolderItem`
    See Also:
      - `FolderItem.getPathName()`

  - ### isCheckedOut

    public boolean isCheckedOut()
    Description copied from interface: `FolderItem`
    Returns true if this item is a checked-out copy from a versioned file system.
    Specified by:
      `isCheckedOut` in interface `FolderItem`
    See Also:
      - `FolderItem.isCheckedOut()`

  - ### isCheckedOutExclusive

    public boolean isCheckedOutExclusive()
    Description copied from interface: `FolderItem`
    Returns true if this item is a checked-out copy with exclusive access from a versioned file system.
    Specified by:
      `isCheckedOutExclusive` in interface `FolderItem`

  - ### isVersioned

    public boolean isVersioned() throws IOException
    Description copied from interface: `FolderItem`
    Return true if this is a versioned item, else false
    Specified by:
      `isVersioned` in interface `FolderItem`
    Throws:
      `IOException` - thrown if an IO error occurs.
    See Also:
      - `FolderItem.isVersioned()`

  - ### getVersions

    public Version[] getVersions() throws IOException
    Description copied from interface: `FolderItem`
    Returns list of all available versions or null if item is not versioned.
    Specified by:
      `getVersions` in interface `FolderItem`
    Throws:
      `IOException` - thrown if an IO error occurs.
    See Also:
      - `FolderItem.getVersions()`

  - ### lastModified

    public long lastModified()
    Description copied from interface: `FolderItem`
    Return The time that this item was last modified.
    Specified by:
      `lastModified` in interface `FolderItem`
    See Also:
      - `FolderItem.lastModified()`

  - ### isReadOnly

    public boolean isReadOnly()
    Description copied from interface: `FolderItem`
    Returns true if item can be overwritten/deleted.
    Specified by:
      `isReadOnly` in interface `FolderItem`
    See Also:
      - `FolderItem.isReadOnly()`

  - ### setReadOnly

    public void setReadOnly(boolean state) throws IOException
    Description copied from interface: `FolderItem`
    Set the state of the read-only indicator for this non-shared item.
    Specified by:
      `setReadOnly` in interface `FolderItem`
    Parameters:
      `state` - read-only state
    Throws:
      `IOException` - if an IO error occurs or item is stored on a shared file-system
    See Also:
      - `FolderItem.setReadOnly(boolean)`

  - ### getContentTypeVersion

    public int getContentTypeVersion()
    Description copied from interface: `FolderItem`
    Returns the version of content type. Note this is the version of the structure/storage for the content type, Not the users version of their data.
    Specified by:
      `getContentTypeVersion` in interface `FolderItem`

  - ### setContentTypeVersion

    public void setContentTypeVersion(int version) throws IOException
    Description copied from interface: `FolderItem`
    Sets the version for the content type. This will change whenever the domain objects are upgraded.
    Specified by:
      `setContentTypeVersion` in interface `FolderItem`
    Parameters:
      `version` - the new version for the content type.
    Throws:
      `IOException` - if an IO error occurs or item is stored on a shared file-system

  - ### checkout

    public ItemCheckoutStatus checkout(CheckoutType checkoutType, String user, String projectPath) throws IOException
    Description copied from interface: `FolderItem`
    Checkout this folder item.
    Specified by:
      `checkout` in interface `FolderItem`
    Parameters:
      `checkoutType` - type of checkout
      `user` - user requesting checkout
      `projectPath` - path of project where checkout was made
    Returns:
      checkout status or null if exclusive checkout request failed
    Throws:
      `IOException` - if an IO error occurs or this item is not versioned

  - ### terminateCheckout

    public void terminateCheckout(long checkoutId, boolean notify) throws IOException
    Description copied from interface: `FolderItem`
    Terminates a checkout. The checkout ID becomes invalid, therefore the associated checkout copy should either be removed or converted to a private file.
    Specified by:
      `terminateCheckout` in interface `FolderItem`
    Parameters:
      `checkoutId` - checkout ID
      `notify` - if true item change notification will be sent
    Throws:
      `IOException` - if an IO error occurs or this item is not versioned

  - ### getCheckout

    public ItemCheckoutStatus getCheckout(long checkoutId) throws IOException
    Description copied from interface: `FolderItem`
    Get the checkout status which corresponds to the specified checkout ID.
    Specified by:
      `getCheckout` in interface `FolderItem`
    Parameters:
      `checkoutId` - checkout ID
    Returns:
      checkout status or null if checkout ID not found.
    Throws:
      `IOException` - if an IO error occurs or this item is not versioned

  - ### getCheckouts

    public ItemCheckoutStatus[] getCheckouts() throws IOException
    Description copied from interface: `FolderItem`
    Get all current checkouts for this item.
    Specified by:
      `getCheckouts` in interface `FolderItem`
    Returns:
      array of checkouts
    Throws:
      `IOException` - if an IO error occurs or this item is not versioned

  - ### getCheckoutId

    public long getCheckoutId()
    Description copied from interface: `FolderItem`
    Returns the checkoutId for this file. A value of -1 indicates a private item. NOTE: This method is only valid for a local non-versioned file-system.
    Specified by:
      `getCheckoutId` in interface `FolderItem`

  - ### getCheckoutVersion

    public int getCheckoutVersion() throws IOException
    Description copied from interface: `FolderItem`
    Returns the item version which was checked-out. A value of -1 indicates a private item. NOTE: This method is only valid for a local non-versioned file-system.
    Specified by:
      `getCheckoutVersion` in interface `FolderItem`
    Throws:
      `IOException`

  - ### getLocalCheckoutVersion

    public int getLocalCheckoutVersion()
    Description copied from interface: `FolderItem`
    Returns the local item version at the time the checkout was completed. A value of -1 indicates a private item. NOTE: This method is only valid for a local non-versioned file-system.
    Specified by:
      `getLocalCheckoutVersion` in interface `FolderItem`

  - ### setCheckout

    public void setCheckout(long checkoutId, boolean exclusive, int checkoutVersion, int localVersion) throws IOException
    Description copied from interface: `FolderItem`
    Set the checkout data associated with this non-shared file. NOTE: This method is only valid for a local non-versioned file-system.
    Specified by:
      `setCheckout` in interface `FolderItem`
    Parameters:
      `checkoutId` - checkout ID (provided by ItemCheckoutStatus).
      `exclusive` - true if checkout is exclusive
      `checkoutVersion` - the item version which was checked-out (provided by ItemCheckoutStatus).
      `localVersion` - the local item version at the time the checkout was completed.
    Throws:
      `IOException` - if an IO error occurs or item is stored on a shared file-system

  - ### 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`
    Throws:
      `IOException`

  - ### hasCheckouts

    public boolean hasCheckouts()
    Description copied from interface: `FolderItem`
    Returns true if this item is versioned and has one or more checkouts.
    Specified by:
      `hasCheckouts` in interface `FolderItem`

  - ### isCheckinActive

    public boolean isCheckinActive()
    Description copied from interface: `FolderItem`
    Returns true if this item is versioned and has a checkin in-progress.
    Specified by:
      `isCheckinActive` in interface `FolderItem`

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### updateCheckout

    public abstract void updateCheckout(FolderItem versionedFolderItem, boolean updateItem, TaskMonitor monitor) throws IOException, CancelledException
    Update this non-versioned item with the latest version of the specified versioned item.
    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 abstract void updateCheckout(FolderItem item, int checkoutVersion) throws IOException
    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.
    Parameters:
      `item` -
      `checkoutVersion` -
    Throws:
      `IOException` - if this file is not a checked-out non-versioned file or an IO error occurs.

  - ### updateCheckoutVersion

    public void updateCheckoutVersion(long checkoutId, int checkoutVersion, String user) throws IOException
    Description copied from interface: `FolderItem`
    Update the checkout version associated with this versioned item.
    Specified by:
      `updateCheckoutVersion` in interface `FolderItem`
    Parameters:
      `checkoutId` - id corresponding to an existing checkout
      `checkoutVersion` -
      `user` -
    Throws:
      `IOException` - if an IO error occurs.