Class DomainFileProxy

  • All Implemented Interfaces:
    DomainFile, java.lang.Comparable<DomainFile>

    public class DomainFileProxy
    extends java.lang.Object
    implements DomainFile
    Implements the DomainFile interface for DomainObjects that are not currently associated with any real DomainFile. This class enforces the sharing of objects between tools. After the first tool gets the implementation, all other gets() just get the same instance. This class also keeps track of which tools are using a its domain object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addToVersionControl​(java.lang.String comment, boolean keepCheckedOut, TaskMonitor monitor)
      Adds this private file to version control.
      boolean canAddToRepository()
      Returns true if this private file may be added to the associated repository.
      boolean canCheckin()
      Returns true if this file may be checked-in to the associated repository.
      boolean canCheckout()
      Returns true if this file may be checked-out from the associated repository.
      boolean canMerge()
      Returns true if this file can be merged with the current versioned file.
      boolean canRecover()
      Prior to invoking getDomainObject, this method can be used to determine if unsaved changes can be recovered on the next open.
      boolean canSave()
      Return whether this domain object can be saved (i.e., updated/overwritten).
      void checkin​(CheckinHandler checkinHandler, boolean okToUpgrade, TaskMonitor monitor)
      Performs check in to associated repository.
      boolean checkout​(boolean exclusive, TaskMonitor monitor)
      Checkout this file for update.
      int compareTo​(DomainFile df)  
      DomainFile copyTo​(DomainFolder newParent, TaskMonitor monitor)
      Copy this file into the newParent folder as a private file.
      DomainFile copyVersionTo​(int version, DomainFolder destFolder, TaskMonitor monitor)
      Copy a specific version of this file to the specified destFolder.
      void delete()
      Delete the entire database for this file, including any version files.
      void delete​(int fileVersion)
      Deletes a specific version of a file from the versioned filesystem.
      boolean equals​(java.lang.Object obj)  
      boolean exists()
      Check for existence of domain file.
      ChangeSet getChangesByOthersSinceCheckout()
      Returns changes made to versioned file by others since checkout was performed.
      ItemCheckoutStatus[] getCheckouts()
      Get a list of checkouts by all users for the associated versioned file.
      ItemCheckoutStatus getCheckoutStatus()
      Get checkout status associated with a versioned file.
      java.util.ArrayList<?> getConsumers()
      Get the list of consumers (Objects) for this domain file.
      java.lang.String getContentType()
      Returns content-type string
      DomainObject getDomainObject​(java.lang.Object consumer, boolean okToUpgrade, boolean okToRecover, TaskMonitor monitor)
      Opens and returns the current domain object.
      java.lang.Class<? extends DomainObject> getDomainObjectClass()
      Returns the underlying Class for the domain object in this domain file.
      java.lang.String getFileID()
      Returns a unique file-ID
      javax.swing.Icon getIcon​(boolean disabled)
      Get the state based Icon image for the domain file based upon its content class.
      DomainObject getImmutableDomainObject​(java.lang.Object consumer, int fileVersion, TaskMonitor monitor)
      Returns a new DomainObject that cannot be changed or saved to its original file.
      long getLastModifiedTime()
      Get a long value representing the time when the data was last modified.
      int getLatestVersion()
      Return the latest version
      java.util.Map<java.lang.String,​java.lang.String> getMetadata()
      Returns an ordered map containting the metadata that has been associated with the corresponding domain object.
      java.lang.String getName()
      Get the name of the StoredObj that is associated with the data.
      DomainObject getOpenedDomainObject​(java.lang.Object consumer)
      Returns the domainObject for this DomainFile only if it is already open.
      DomainFolder getParent()
      Get the parent domain folder for this domain file.
      java.lang.String getPathname()
      Returns the path name to the domain object.
      ProjectLocator getProjectLocator()
      Returns the local storage location for the project that this DomainFile belongs to.
      DomainObject getReadOnlyDomainObject​(java.lang.Object consumer, int fileVersion, TaskMonitor monitor)
      Returns a "read-only" version of the domain object.
      int getVersion()
      Return either the latest version if the file is not checked-out or the version that was checked-out or a specific version that was requested.
      Version[] getVersionHistory()
      Returns list of all available versions.
      int hashCode()  
      boolean isBusy()
      Returns true if the domain object in this domain file exists and has an open transaction.
      boolean isChanged()
      Return whether the domain object in this domain file has changed.
      boolean isCheckedOut()
      Returns true if this is a checked-out file.
      boolean isCheckedOutExclusive()
      Returns true if this a checked-out file with exclusive access.
      boolean isHijacked()
      Returns true if the file is versioned but a private copy also exists.
      boolean isInUse()  
      boolean isInWritableProject()
      Returns true if this file is in a writable project.
      boolean isLatestVersion()
      Returns true if this file represents the latest version of the associated domain object.
      boolean isOpen()
      Returns true if there is an open domainObject for this file.
      boolean isReadOnly()
      Returns whether the object is read-only.
      boolean isUsedBy​(java.lang.Object consumer)  
      boolean isUsedExclusivelyBy​(java.lang.Object consumer)  
      boolean isVersionControlSupported()
      Returns true if the versioned filesystem can be used to store this files content type.
      boolean isVersioned()
      Return true if this is a versioned database, else false
      long length()
      Returns the length of this domain file.
      void merge​(boolean okToUpgrade, TaskMonitor monitor)
      Performs merge from current version of versioned file into local checked-out file.
      boolean modifiedSinceCheckout()
      Returns true if this is a checked-out file which has been modified since it was checked-out.
      DomainFile moveTo​(DomainFolder newParent)
      Move this file into the newParent folder.
      void packFile​(java.io.File file, TaskMonitor monitor)
      Pack domain file into specified file.
      void save​(TaskMonitor monitor)
      Save the DomainObject associated with this file.
      DomainFile setName​(java.lang.String newName)
      Set the name on this domain file.
      void setReadOnly​(boolean state)
      Sets the object to read-only.
      boolean takeRecoverySnapshot()
      If the file has an updateable domain object with unsaved changes, generate a recovery snapshot.
      void terminateCheckout​(long checkoutId)
      Forcefully terminate a checkout for the associated versioned file.
      java.lang.String toString()  
      void undoCheckout​(boolean keep)
      Undo "checked-out" file.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • exists

        public boolean exists()
        Description copied from interface: DomainFile
        Check for existence of domain file.
        Specified by:
        exists in interface DomainFile
        Returns:
        true if file exists. A proxy domain file will always return false.
      • setName

        public DomainFile setName​(java.lang.String newName)
        Description copied from interface: DomainFile
        Set the name on this domain file.
        Specified by:
        setName in interface DomainFile
        Parameters:
        newName - domain file name
        Returns:
        renamed domain file (the original DomainFile object becomes invalid since it is immutable)
      • length

        public long length()
                    throws java.io.IOException
        Description copied from interface: DomainFile
        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 DomainFile
        Returns:
        file length
        Throws:
        java.io.IOException - thrown if IO or access error occurs
      • isReadOnly

        public boolean isReadOnly()
        Description copied from interface: DomainFile
        Returns whether the object is read-only. From a framework point of view a read-only object can never be changed.
        Specified by:
        isReadOnly in interface DomainFile
      • setReadOnly

        public void setReadOnly​(boolean state)
        Description copied from interface: DomainFile
        Sets the object to read-only. This method may only be invoked for private files (i.e., not versioned).
        Specified by:
        setReadOnly in interface DomainFile
        Parameters:
        state - if true file will be read-only and may not be updated, if false the file may be updated.
      • isInWritableProject

        public boolean isInWritableProject()
        Description copied from interface: DomainFile
        Returns true if this file is in a writable project.
        Specified by:
        isInWritableProject in interface DomainFile
      • getPathname

        public java.lang.String getPathname()
        Description copied from interface: DomainFile
        Returns the path name to the domain object.
        Specified by:
        getPathname in interface DomainFile
      • compareTo

        public int compareTo​(DomainFile df)
        Specified by:
        compareTo in interface java.lang.Comparable<DomainFile>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getName

        public java.lang.String getName()
        Description copied from interface: DomainFile
        Get the name of the StoredObj that is associated with the data.
        Specified by:
        getName in interface DomainFile
      • getFileID

        public java.lang.String getFileID()
        Description copied from interface: DomainFile
        Returns a unique file-ID
        Specified by:
        getFileID in interface DomainFile
        Returns:
      • getContentType

        public java.lang.String getContentType()
        Description copied from interface: DomainFile
        Returns content-type string
        Specified by:
        getContentType in interface DomainFile
      • getDomainObjectClass

        public java.lang.Class<? extends DomainObject> getDomainObjectClass()
        Description copied from interface: DomainFile
        Returns the underlying Class for the domain object in this domain file.
        Specified by:
        getDomainObjectClass in interface DomainFile
      • getLastModifiedTime

        public long getLastModifiedTime()
        Description copied from interface: DomainFile
        Get a long value representing the time when the data was last modified.
        Specified by:
        getLastModifiedTime in interface DomainFile
      • save

        public void save​(TaskMonitor monitor)
                  throws java.io.IOException
        Description copied from interface: DomainFile
        Save the DomainObject associated with this file.
        Specified by:
        save in interface DomainFile
        Parameters:
        monitor - monitor for the task that is doing the save on the file
        Throws:
        FileInUseException - if the file is open for update by someone else, or a transient-read is in progress.
        java.io.IOException - thrown if an IO error occurs.
      • canSave

        public boolean canSave()
        Description copied from interface: DomainFile
        Return whether this domain object can be saved (i.e., updated/overwritten).
        Specified by:
        canSave in interface DomainFile
        Returns:
        true if the user is the owner AND the file is in the active project AND the file is not read-only.
      • canRecover

        public boolean canRecover()
        Description copied from interface: DomainFile
        Prior to invoking getDomainObject, this method can be used to determine if unsaved changes can be recovered on the next open.
        Specified by:
        canRecover in interface DomainFile
        Returns:
        true if recovery data exists.
      • takeRecoverySnapshot

        public boolean takeRecoverySnapshot()
        Description copied from interface: DomainFile
        If the file has an updateable domain object with unsaved changes, generate a recovery snapshot.
        Specified by:
        takeRecoverySnapshot in interface DomainFile
        Returns:
        true if snapshot successful or not needed, false if file is busy which prevents snapshot, or snapshot was cancelled.
      • isInUse

        public boolean isInUse()
      • isUsedExclusivelyBy

        public boolean isUsedExclusivelyBy​(java.lang.Object consumer)
      • getConsumers

        public java.util.ArrayList<?> getConsumers()
        Description copied from interface: DomainFile
        Get the list of consumers (Objects) for this domain file.
        Specified by:
        getConsumers in interface DomainFile
        Returns:
        empty array list if there are no consumers
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • isUsedBy

        public boolean isUsedBy​(java.lang.Object consumer)
      • addToVersionControl

        public void addToVersionControl​(java.lang.String comment,
                                        boolean keepCheckedOut,
                                        TaskMonitor monitor)
                                 throws java.io.IOException,
                                        CancelledException
        Description copied from interface: DomainFile
        Adds this private file to version control.
        Specified by:
        addToVersionControl in interface DomainFile
        Parameters:
        comment - new version comment
        keepCheckedOut - if true, the file will be initially checked-out
        monitor - progress monitor
        Throws:
        FileInUseException - if this file is in-use.
        java.io.IOException - thrown if an IO or access error occurs. Also thrown if file is not private.
        CancelledException - if the monitor cancelled the operation
      • isVersionControlSupported

        public boolean isVersionControlSupported()
        Description copied from interface: DomainFile
        Returns true if the versioned filesystem can be used to store this files content type.
        Specified by:
        isVersionControlSupported in interface DomainFile
      • canAddToRepository

        public boolean canAddToRepository()
        Description copied from interface: DomainFile
        Returns true if this private file may be added to the associated repository.
        Specified by:
        canAddToRepository in interface DomainFile
      • isBusy

        public boolean isBusy()
        Description copied from interface: DomainFile
        Returns true if the domain object in this domain file exists and has an open transaction.
        Specified by:
        isBusy in interface DomainFile
      • canCheckout

        public boolean canCheckout()
        Description copied from interface: DomainFile
        Returns true if this file may be checked-out from the associated repository. User's with read-only repository access will not have checkout ability.
        Specified by:
        canCheckout in interface DomainFile
      • canCheckin

        public boolean canCheckin()
        Description copied from interface: DomainFile
        Returns true if this file may be checked-in to the associated repository.
        Specified by:
        canCheckin in interface DomainFile
      • canMerge

        public boolean canMerge()
        Description copied from interface: DomainFile
        Returns true if this file can be merged with the current versioned file.
        Specified by:
        canMerge in interface DomainFile
      • checkout

        public boolean checkout​(boolean exclusive,
                                TaskMonitor monitor)
        Description copied from interface: DomainFile
        Checkout this file for update. If this file is already private, this method does nothing.
        Specified by:
        checkout in interface DomainFile
        Parameters:
        exclusive - if true an exclusive checkout will be requested
        monitor - progress monitor
        Returns:
        true if checkout successful, false if an exclusive checkout was not possible due to other users having checkouts of this file. A request for a non-exclusive checkout will never return false.
      • checkin

        public void checkin​(CheckinHandler checkinHandler,
                            boolean okToUpgrade,
                            TaskMonitor monitor)
                     throws java.io.IOException,
                            VersionException,
                            CancelledException
        Description copied from interface: DomainFile
        Performs check in to associated repository. File must be checked-out and modified since checkout.
        Specified by:
        checkin in interface DomainFile
        Parameters:
        checkinHandler - provides user input data to complete checkin process.
        okToUpgrade - if true an upgrade will be performed if needed
        monitor - the TaskMonitor.
        Throws:
        java.io.IOException - if an IO or access error occurs
        VersionException - if unable to handle domain object version in versioned filesystem. If okToUpgrade was false, check exception to see if it can be upgraded sometime after doing a checkout.
        CancelledException - if task monitor cancelled operation
      • merge

        public void merge​(boolean okToUpgrade,
                          TaskMonitor monitor)
        Description copied from interface: DomainFile
        Performs merge from current version of versioned file into local checked-out file.
        Specified by:
        merge in interface DomainFile
        Parameters:
        okToUpgrade - if true an upgrade will be performed if needed
        monitor - task monitor
      • copyTo

        public DomainFile copyTo​(DomainFolder newParent,
                                 TaskMonitor monitor)
                          throws java.io.IOException,
                                 CancelledException
        Description copied from interface: DomainFile
        Copy this file into the newParent folder as a private file.
        Specified by:
        copyTo in interface DomainFile
        Parameters:
        newParent - new parent folder
        monitor - task monitor
        Returns:
        newly created domain file
        Throws:
        FileInUseException - if this file is in-use / checked-out.
        java.io.IOException - thrown if an IO or access error occurs.
        CancelledException - if task monitor cancelled operation.
      • delete

        public void delete()
                    throws java.io.IOException
        Description copied from interface: DomainFile
        Delete the entire database for this file, including any version files.
        Specified by:
        delete in interface DomainFile
        Throws:
        FileInUseException - if this file is in-use / checked-out.
        UserAccessException - if the user does not have permission to delete the file.
        java.io.IOException - thrown if an IO or access error occurs.
      • delete

        public void delete​(int fileVersion)
                    throws java.io.IOException
        Description copied from interface: DomainFile
        Deletes a specific version of a file from the versioned filesystem.
        Specified by:
        delete in interface DomainFile
        Parameters:
        fileVersion - specific version to be deleted. The version must either be the oldest or latest, or -1 which will attempt to remove all versions. When deleting the latest version, this method could take a long time to return since the previous version must be reconstructed within the versioned filesystem.
        Throws:
        java.io.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.
      • getLatestVersion

        public int getLatestVersion()
        Description copied from interface: DomainFile
        Return the latest version
        Specified by:
        getLatestVersion in interface DomainFile
      • isLatestVersion

        public boolean isLatestVersion()
        Description copied from interface: DomainFile
        Returns true if this file represents the latest version of the associated domain object.
        Specified by:
        isLatestVersion in interface DomainFile
      • getVersion

        public int getVersion()
        Description copied from interface: DomainFile
        Return either the latest version if the file is not checked-out or the version that was checked-out or a specific version that was requested.
        Specified by:
        getVersion in interface DomainFile
      • getVersionHistory

        public Version[] getVersionHistory()
                                    throws java.io.IOException
        Description copied from interface: DomainFile
        Returns list of all available versions.
        Specified by:
        getVersionHistory in interface DomainFile
        Throws:
        java.io.IOException
      • isCheckedOut

        public boolean isCheckedOut()
        Description copied from interface: DomainFile
        Returns true if this is a checked-out file.
        Specified by:
        isCheckedOut in interface DomainFile
      • isCheckedOutExclusive

        public boolean isCheckedOutExclusive()
        Description copied from interface: DomainFile
        Returns true if this a checked-out file with exclusive access.
        Specified by:
        isCheckedOutExclusive in interface DomainFile
      • moveTo

        public DomainFile moveTo​(DomainFolder newParent)
                          throws java.io.IOException
        Description copied from interface: DomainFile
        Move this file into the newParent folder.
        Specified by:
        moveTo in interface DomainFile
        Parameters:
        newParent - new parent folder within the same project
        Returns:
        the newly relocated domain file (the original DomainFile object becomes invalid since it is immutable)
        Throws:
        DuplicateFileException - if a file with the same name already exists in newParent folder.
        FileInUseException - if this file is in-use / checked-out.
        java.io.IOException - thrown if an IO or access error occurs.
      • undoCheckout

        public void undoCheckout​(boolean keep)
                          throws java.io.IOException
        Description copied from interface: DomainFile
        Undo "checked-out" file. The original repository file is restored.
        Specified by:
        undoCheckout in interface DomainFile
        Parameters:
        keep - if true, the private database will be renamed with a .keep extension.
        Throws:
        FileInUseException - if this file is in-use / checked-out.
        java.io.IOException - thrown if file is not checked-out or an IO / access error occurs.
      • getChangesByOthersSinceCheckout

        public ChangeSet getChangesByOthersSinceCheckout()
                                                  throws java.io.IOException
        Description copied from interface: DomainFile
        Returns changes made to versioned file by others since checkout was performed.
        Specified by:
        getChangesByOthersSinceCheckout in interface DomainFile
        Returns:
        change set or null
        Throws:
        java.io.IOException
      • getDomainObject

        public DomainObject getDomainObject​(java.lang.Object consumer,
                                            boolean okToUpgrade,
                                            boolean okToRecover,
                                            TaskMonitor monitor)
                                     throws VersionException,
                                            java.io.IOException
        Description copied from interface: DomainFile
        Opens and returns the current domain object. If the domain object is already opened, then the existing open domain object is returned.
        Specified by:
        getDomainObject in interface DomainFile
        Parameters:
        consumer - consumer of the domain object which is responsible for releasing it after use. When all the consumers using the domain object release it, then the object is closed and its resources released.
        okToUpgrade - if true, allows the system to upgrade out of data domain objects to be in compliance with the current version of Ghidra. A Version exception will be thrown if the domain object cannot be upgraded OR okToUpgrade is false and the domain object is out of date.
        okToRecover - if true, allows the system to recover unsaved file changes which resulted from a crash. If false, any existing recovery data will be deleted. This flag is only relevent if project is open for update (isInProject) and the file can be opened for update.
        monitor - permits monitoring of open progress.
        Returns:
        an open domain object can be modified and saved. (Not read-only)
        Throws:
        VersionException - if the domain object could not be read due to a version format change. If okToUpgrade is true, then a VersionException indicates that the domain object cannot be upgraded to the current format. If okToUpgrade is false, then the VersionException only means the object is not in the current format - it may or may not be possible to upgrade.
        java.io.IOException - thrown if an IO or access error occurs.
      • getOpenedDomainObject

        public DomainObject getOpenedDomainObject​(java.lang.Object consumer)
        Description copied from interface: DomainFile
        Returns the domainObject for this DomainFile only if it is already open.
        Specified by:
        getOpenedDomainObject in interface DomainFile
        Parameters:
        consumer - the consumer that will use the object.
        Returns:
        the already opened domainObject or null if it is not currently open.
      • isVersioned

        public boolean isVersioned()
        Description copied from interface: DomainFile
        Return true if this is a versioned database, else false
        Specified by:
        isVersioned in interface DomainFile
      • packFile

        public void packFile​(java.io.File file,
                             TaskMonitor monitor)
                      throws java.io.IOException,
                             CancelledException
        Description copied from interface: DomainFile
        Pack domain file into specified file. Specified file will be overwritten if it already exists.
        Specified by:
        packFile in interface DomainFile
        Parameters:
        file - destination file
        Throws:
        java.io.IOException
        CancelledException - if monitor cancels operation
      • getIcon

        public javax.swing.Icon getIcon​(boolean disabled)
        Description copied from interface: DomainFile
        Get the state based Icon image for the domain file based upon its content class.
        Specified by:
        getIcon in interface DomainFile
        Parameters:
        disabled - true if the icon return should be rendered as not enabled
        Returns:
        image icon
      • getImmutableDomainObject

        public DomainObject getImmutableDomainObject​(java.lang.Object consumer,
                                                     int fileVersion,
                                                     TaskMonitor monitor)
                                              throws VersionException,
                                                     java.io.IOException,
                                                     CancelledException
        Description copied from interface: DomainFile
        Returns a new DomainObject that cannot be changed or saved to its original file.
        Specified by:
        getImmutableDomainObject in interface DomainFile
        Parameters:
        consumer - consumer of the domain object which is responsible for releasing it after use.
        fileVersion - the domain object version requested. DEFAULT_VERSION should be specified to open the current version.
        monitor - permits monitoring of open progress.
        Returns:
        a new domain object that is disassociated from its original domain file and cannot be modified
        Throws:
        VersionException - if the domain object could not be read due to a version format change.
        java.io.FileNotFoundException - if the stored file/version was not found.
        java.io.IOException - thrown if an IO or access error occurs.
        CancelledException - if monitor cancelled operation
      • getReadOnlyDomainObject

        public DomainObject getReadOnlyDomainObject​(java.lang.Object consumer,
                                                    int fileVersion,
                                                    TaskMonitor monitor)
                                             throws VersionException,
                                                    java.io.IOException,
                                                    CancelledException
        Description copied from interface: DomainFile
        Returns a "read-only" version of the domain object. "Read-only" means that the domain object cannot be saved back into its original domain object. It can still be modified and saved to a new domain file. The domain object will be assigned a temporary domain file that will not allow a "save" operation. The user must do a "save as" to a new filename.
        Specified by:
        getReadOnlyDomainObject in interface DomainFile
        Parameters:
        consumer - consumer of the domain object which is responsible for releasing it after use.
        fileVersion - the domain object version requested. DEFAULT_VERSION should be specified to open the current version.
        monitor - permits monitoring of open progress.
        Returns:
        a new domain object that is disassociated from its original domain file.
        Throws:
        VersionException - if the domain object could not be read due to a version format change.
        java.io.FileNotFoundException - if the stored file/version was not found.
        java.io.IOException - thrown if an IO or access error occurs.
        CancelledException - if monitor cancelled operation
      • isHijacked

        public boolean isHijacked()
        Description copied from interface: DomainFile
        Returns true if the file is versioned but a private copy also exists.
        Specified by:
        isHijacked in interface DomainFile
      • modifiedSinceCheckout

        public boolean modifiedSinceCheckout()
        Description copied from interface: DomainFile
        Returns true if this is a checked-out file which has been modified since it was checked-out.
        Specified by:
        modifiedSinceCheckout in interface DomainFile
      • isChanged

        public boolean isChanged()
        Description copied from interface: DomainFile
        Return whether the domain object in this domain file has changed.
        Specified by:
        isChanged in interface DomainFile
      • isOpen

        public boolean isOpen()
        Description copied from interface: DomainFile
        Returns true if there is an open domainObject for this file.
        Specified by:
        isOpen in interface DomainFile
      • terminateCheckout

        public void terminateCheckout​(long checkoutId)
                               throws java.io.IOException
        Description copied from interface: DomainFile
        Forcefully terminate a checkout for the associated versioned file. The user must be the owner of the checkout or have admin priviledge on the versioned filesystem (i.e., repository).
        Specified by:
        terminateCheckout in interface DomainFile
        Parameters:
        checkoutId - checkout ID
        Throws:
        java.io.IOException - if an IO or access error occurs
      • getCheckouts

        public ItemCheckoutStatus[] getCheckouts()
                                          throws java.io.IOException
        Description copied from interface: DomainFile
        Get a list of checkouts by all users for the associated versioned file.
        Specified by:
        getCheckouts in interface DomainFile
        Returns:
        list of checkouts
        Throws:
        java.io.IOException - if an IO or access error occurs
      • getCheckoutStatus

        public ItemCheckoutStatus getCheckoutStatus()
                                             throws java.io.IOException
        Description copied from interface: DomainFile
        Get checkout status associated with a versioned file.
        Specified by:
        getCheckoutStatus in interface DomainFile
        Returns:
        checkout status or null if not checked-out to current associated project.
        Throws:
        java.io.IOException - if an IO or access error occurs
      • getMetadata

        public java.util.Map<java.lang.String,​java.lang.String> getMetadata()
        Description copied from interface: DomainFile
        Returns an ordered map containting the metadata that has been associated with the corresponding domain object. The map contains key,value pairs and are ordered by their insertion order.
        Specified by:
        getMetadata in interface DomainFile
        Returns:
        a map containting the metadata that has been associated with the corresponding domain object.