Class LocalFolderItem

java.lang.Object
ghidra.framework.store.local.LocalFolderItem
All Implemented Interfaces:
FolderItem
Direct Known Subclasses:
LocalDatabaseItem, LocalDataFile, UnknownFolderItem

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.

  • 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:
    • 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:
    • 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:
    • 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:
    • getName

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

      public String getParentPath()
      Description copied from interface: FolderItem
      Returns the path of the parent folder.
      Specified by:
      getParentPath in interface FolderItem
      See Also:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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
    • 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
      Throws:
      IOException - if an IO error occurs.