Interface ProjectData

All Known Implementing Classes:
DefaultProjectData, TransientProjectData

public interface ProjectData
The ProjectData interface provides access to all the data files and folders in a project.
  • Method Details

    • getLocalStorageClass

      Class<? extends LocalFileSystem> getLocalStorageClass()
      Returns:
      local storage implementation class
    • getRootFolder

      DomainFolder getRootFolder()
      Returns the root folder of the project.
      Returns:
      root DomainFolder within project.
    • getFolder

      DomainFolder getFolder(String path)
      Get domain folder specified by an absolute data path.
      Parameters:
      path - the absolute path of domain folder relative to the data folder.
      Returns:
      domain folder or null if folder not found
    • getFileCount

      int getFileCount()
      Get the approximate number of files contained within the project. The number may be reduced if not connected to the shared repository. Only the newer indexed file-system supports this capability, a value of -1 will be returned for older projects utilizing the mangled file-system or if an IO Error occurs. An approximate number is provided since the two underlying file systems are consulted separately and the local private file-system does not distinguish between checked-out files and private files. This number is currently intended as a rough sizing number to disable certain features when very large projects are in use. Generally the larger of the two file counts will be returned.
      Returns:
      number of project files or -1 if unknown.
    • getFile

      DomainFile getFile(String path)
      Get domain file specified by an absolute data path.
      Parameters:
      path - the absolute path of domain file relative to the root folder.
      Returns:
      domain file or null if file not found
    • findOpenFiles

      void findOpenFiles(List<DomainFile> list)
      Finds all open domain files and appends them to the specified list.
      Parameters:
      list - the list to receive the open domain files
    • findCheckedOutFiles

      List<DomainFile> findCheckedOutFiles(TaskMonitor monitor) throws IOException, CancelledException
      Find all project files which are currently checked-out to this project
      Parameters:
      monitor - task monitor (no progress updates)
      Returns:
      list of current checkout files
      Throws:
      IOException - if IO error occurs
      CancelledException - if task cancelled
    • hasInvalidCheckouts

      boolean hasInvalidCheckouts(List<DomainFile> checkoutList, RepositoryAdapter newRepository, TaskMonitor monitor) throws IOException, CancelledException
      Determine if any domain files listed do not correspond to a checkout in the specified newRespository prior to invoking updateRepositoryInfo(RepositoryAdapter, boolean, TaskMonitor).
      Parameters:
      checkoutList - project domain files to check
      newRepository - repository to check against before updating
      monitor - task monitor
      Returns:
      true if one or more files are not valid checkouts in newRepository
      Throws:
      IOException - if IO error occurs
      CancelledException - if task cancelled
    • getFileByID

      DomainFile getFileByID(String fileID)
      Get domain file specified by its unique fileID.
      Parameters:
      fileID - domain file ID
      Returns:
      domain file or null if file not found
    • makeValidName

      String makeValidName(String name)
      Transform the specified name into an acceptable folder or file item name. Only an individual folder or file name should be specified, since any separators will be stripped-out. NOTE: Uniqueness of name within the intended target folder is not considered.
      Parameters:
      name -
      Returns:
      valid name or "unknown" if no valid characters exist within name provided
    • getProjectLocator

      ProjectLocator getProjectLocator()
      Returns the projectLocator for the this ProjectData.
      Returns:
      project locator object
    • addDomainFolderChangeListener

      void addDomainFolderChangeListener(DomainFolderChangeListener listener)
      Adds a listener that will be notified when any folder or file changes in the project.
      Parameters:
      listener - the listener to be notified of folder and file changes.
    • removeDomainFolderChangeListener

      void removeDomainFolderChangeListener(DomainFolderChangeListener listener)
      Removes the listener to be notified of folder and file changes.
      Parameters:
      listener - the listener to be removed.
    • refresh

      void refresh(boolean force) throws IOException
      Sync the Domain folder/file structure with the underlying file structure.
      Parameters:
      force - if true all folders will be be visited and refreshed, if false only those folders previously visited will be refreshed.
      Throws:
      IOException - if an IO error occurs
    • getUser

      User getUser()
      Returns User object associated with remote repository or null if a remote repository is not used.
      Returns:
      current remote user identity or null
    • getRepository

      RepositoryAdapter getRepository()
      Return the repository for this project data.
      Returns:
      null if the project is not associated with a repository
    • convertProjectToShared

      void convertProjectToShared(RepositoryAdapter repository, TaskMonitor monitor) throws IOException, CancelledException
      Convert a local project to a shared project. NOTE: The project should be closed and then reopened after this method is called.
      Parameters:
      repository - the repository that the project will be associated with.
      monitor - task monitor
      Throws:
      IOException - thrown if files under version control are still checked out, or if there was a problem accessing the filesystem
      CancelledException - if the conversion was cancelled while versioned files were being converted to private files.
    • updateRepositoryInfo

      void updateRepositoryInfo(RepositoryAdapter newRepository, boolean force, TaskMonitor monitor) throws IOException, CancelledException
      Update the repository for this project; the server may have changed or a different repository is being used. Any existing checkout which is not recognized/valid by newRepository will be terminated and a local .keep file created. NOTE: The project should be closed and then reopened after this method is called.
      Parameters:
      newRepository - new repository to use
      force - if true any existing local checkout which is not recognized/valid for newRepository will be forceably terminated if offline with old repository.
      monitor - task monitor
      Throws:
      IOException - thrown if files are still checked out, or if there was a problem accessing the filesystem
      CancelledException - if the user canceled the update
    • close

      void close()
      Initiate disposal of this project data object. Any files already open will delay disposal until they are closed. NOTE: This should only be invoked by the controlling object which created/opened this instance to avoid premature disposal.
    • getMaxNameLength

      int getMaxNameLength()
      Returns:
      the maximum name length permitted for folders or items.
    • testValidName

      void testValidName(String name, boolean isPath) throws InvalidNameException
      Validate a folder/item name or path.
      Parameters:
      name - folder or item name
      isPath - if true name represents full path
      Throws:
      InvalidNameException - if name is invalid
    • getSharedProjectURL

      URL getSharedProjectURL()
      Generate a repository URL which corresponds to this project data if applicable. Local private projects will return null;
      Returns:
      repository URL which corresponds to this project data or null if not applicable.
    • getLocalProjectURL

      URL getLocalProjectURL()
      Generate a local URL which corresponds to this project data if applicable. Remote transient project data will return null;
      Returns:
      local URL which corresponds to this project data or null if not applicable.