org.sourcejammer.project.controller
Class ProjectController

java.lang.Object
  |
  +--org.sourcejammer.project.controller.ProjectController
All Implemented Interfaces:
Archive

public class ProjectController
extends java.lang.Object
implements Archive

Title: $FileName: ProjectController.java$

Version:
$VerNum: 49$
Author:
$AuthorName: Rob MacGrogan$

$Description: $
$KeyWordsOff: $

ProjectController is responsible for returning objects from the model implementation, and adding and maintaining objects in the model implementation. This class also maintains a cache of the entire project hierarchy of a particular archive. This object does not handle user-level security except to allow checking out and checking in of files. User names and passwords are verified and controlled by the object that calls this object. A ProjectController is created and (hopefully) cached for a single archive.

Field Summary
private  ServerActionPluginPool actionPlugins
           
private  ArchiveContext context
           
private  FileChangeListenerPool fileListeners
           
private  ArchiveInfoFlex moArchive
           
private  NodeLibrary moLibrary
           
private  ProjectChangeListenerPool projectListeners
           
static long ROOT_PROJECT_ID
           
 
Constructor Summary
ProjectController()
           
 
Method Summary
 long[] addFile(long projectID, java.lang.String name, java.io.File file, org.sourcejammer.project.view.FileProperties props, java.lang.String userName, java.lang.String initialBranchIdentifier)
          Adds a new file to this archive, at the specified location.
 long addNewVersion(long fileID, java.io.File newVersion, java.lang.String comment, java.lang.String userName)
          Adds a new version to an existing file.
 long addProject(long parentID, java.lang.String name, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Adds a new project at the specified location (the NodeName object) to this archive.
 long branchFile(long fileID, long parentProjectID, java.lang.String userName, java.lang.String comment, java.lang.String newBranchIdentifier)
          Creates a new branch of a shared file in parentProject.
 void branchProject(long projectID, java.lang.String userName, java.lang.String comment, java.lang.String newBranchIdentifier, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Creates a new branch of all shared files in project, recursively.
 SharesCheckouts checkDeletedNodeShareStatus(long parentID, int removedIndex)
          Returns true if the deleted item is a file with shares or with more than one parent (removed or ordinary parents combined) or if the deleted item is a project that contains any files that meet this definition.
 void checkInFile(long fileID)
          Set status of specified file to checked in.
 void checkOutFile(long fileID, java.lang.String userName, java.lang.String checkOutLocation)
          Set status of specified file to checked out.
protected  org.sourcejammer.project.view.NodeInfo controllerNodeToNodeInfo(ControllerNode nd)
          Builds new NodeInfo object from ControllerNode.
private  boolean convertTextFileAndManageKeywords(FileNode ndFile, java.lang.String userName, java.io.File file, org.sourcejammer.project.view.NodeInfo ndVer, java.lang.String comment)
          Returns true if keyword expansion will be attempted.
 void copyFile(long fileID, long newParentProjectID, java.lang.String userName, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Copies the specified file from one project to another.
 void copyProject(long projectID, long newParentProjectID, java.lang.String userName, java.lang.String newProjectName, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Copies the specified project and all children from one project to another.
private  void copyProjectsAndFiles(ProjectNode source, ProjectNode target, java.lang.String userName, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Copy all children of source to target, recursively.
 void deleteRemovedNode(long parentID, int index, boolean permanentlyDeleteAllShares, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Delete specified removed node.
 SharesCheckouts doesAnyFileContainMultipleParents(long projectID)
          Like doesProjectContainShares, except it returns true if any file contains more than one removed parent or removed parent.
private  SharesCheckouts doesAnyFileContainMultipleParents(long projectID, SharesCheckouts sc)
           
 boolean doesProjectContainShares(long projectID)
          Returns true if any file in the project tree is shared.
 ServerActionPluginPool getActionPlugins()
           
 ArchiveContext getArchiveContext()
           
 ArchiveInfoFlex getArchiveInfo()
          Gives subclasses access to archive info object.
private  Brancher getBrancher(org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
           
 org.sourcejammer.project.view.Branch getBranches(long fileID)
          Return master file object (as a Branch object) for the specified file id.
 long getChangeList(long labelID, int verNewer, int verOlder, int eolType)
          Generated change list for specified label and saves it as a temp file.
 org.sourcejammer.project.view.File getFile(long fileID)
          Get File object (info about file).
 long getFileLatestVersion(long fileID, int requestedEOL)
          Get latest version of file source to temp dir and return temp file ID.
 TextLineReader getFileLatestVersionTLR(long fileID)
          Get latest version of text file source as TextLineReader.
 FileChangeListenerPool getFileListeners()
           
 FileNode getFileNode(long fileID)
          Allows "master control" to look at file info to verify check out, check in, file type, etc.
 Delta getFileVersionDelta(org.sourcejammer.project.view.NodeInfo ver)
          Get specified delta object for file.
 Delta getFileVersionTextDelta(org.sourcejammer.project.view.NodeInfo ver)
          Get specified delta object for file.
 Label getLabelContentList(long labelID, int versionNumber)
          Returns the Label object (which contains the sourcejammer path and version number for each object in the labeled version) with the specified name.
 java.io.File getLatestVersionSourceFilePointer(long fileID)
          Returns java.io.File object for latest version's source.
 NodeLibrary getNodeLibrary()
           
 java.lang.String getPathToProject(long projectID)
           
 org.sourcejammer.project.view.Project getProject(long projectID)
          Get Project object (info about project).
 ProjectChangeListenerPool getProjectListeners()
           
 ProjectNode getProjectNode(long projectID)
          Be careful with this direct reference to a ProjectNode object in the cache.
 java.util.Vector getRemovedNodes(long projectID)
          Returns a Vector of NodeInfo objects, one for each node that has been removed (but not permanently deleted) from the parent project.
private  RemoverRestorer getRemover(org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
           
 org.sourcejammer.project.view.Project getRootProject()
          Returns the view Project for the root node of the archive for this ProjectController.
 long getUniqueIDFromPath(long parentID, java.lang.String path)
          Returns unique id based on a path.
 java.lang.String getVersionComment(long versionID)
          Get the comment for the specified version.
 java.io.File getVersionCommentFilePointer(long fileID, int versionNumber)
          Returns java.io.File object for requested version's comment file.
 java.io.File getVersionSourceFilePointer(long fileID, int versionNumber)
          Returns java.io.File object for requested version's source.
private  boolean isChildOfProject(long parentProjectID, long childProjectID)
          Returns true if child project is a child of parent project.
private  boolean isProjectRemoved(ProjectNode proj)
           
 void makeLabeledVersion(java.lang.String name, java.lang.String description, long parentProjectID, java.lang.String userName)
          Create and save a new labeled version with the passed-in name and description and containing all of the latest versions that are children of parent.
 void moveFile(long fileID, long parentProjectID, long newParentProjectID, java.lang.String userName)
          Moves the specified file from one project to another.
 void moveProject(long projectID, long newParentProjectID, java.lang.String newProjectName)
          Moves the specified project from one project to another.
protected  org.sourcejammer.project.view.Project projectNodeToProject(ProjectNode ndProject)
           
 void rebuildLabel(long labelID, java.lang.String description, long parentProjectID, java.lang.String userName, boolean buildChangeList)
           
 void releaseFileNode(FileNode nd)
          Release a file node.
 void removeFile(long parentID, long fileID, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Remove specified file from specified project.
 void removeFileFromAllParents(long fileID, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Remove specified file from all parent projects.
 void removeFileShare(long fileID, long parentProjectID)
          Remove a share from a file.
 void removeProject(long parentID, long projectID, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Remove specified project from the project hierarchy.
 void removeProjectAndRemoveFilesFromAllParents(long projectID, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Remove specified project from the project hierarchy.
 void removeProjectShare(long projectID, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Recursively removes shares from all shared files.
private  void removeShareProjectsAndFiles(ProjectNode source, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
           
 java.lang.String renameFile(long parentID, long fileID, java.lang.String newName)
          Returns previous file name.
 java.lang.String renameProject(long parentID, long projectID, java.lang.String newName)
          Returns previous project name.
 void restoreRemovedNode(long parentID, java.lang.String newName, int index, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Restores a project or file node that was previously removed from the archive.
 java.io.File retrieveVersionDeltaFile(org.sourcejammer.project.view.NodeInfo versionNode)
           
 void setArchiveContext(ArchiveContext context)
           
 void setArchiveInfo(ArchiveInfoFlex info)
          Sets the ArchiveInfo object for this ProjectController.
 java.lang.String setFileDescription(long fileID, java.lang.String description)
          Changes description of a file.
 void setNodeLibrary(NodeLibrary lib)
          Set the NodeLibrary object for this archive.
 void setPlugins(java.util.ArrayList plugins)
           
 void setVersionComment(long fileID, int version, java.lang.String comment)
          Set the comment of the specified version.
 void shareFile(long fileID, long newParentProjectID)
          Creates a new share for the specified file in the specified project.
 void shareProject(long projectID, long newParentProjectID, java.lang.String newProjectName, java.lang.String userName, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
          Recurses through the project specified by projectID and creates a new share for each file in newParentProject.
private  void shareProjectsAndFiles(ProjectNode source, ProjectNode target, java.lang.String userName, org.sourcejammer.project.view.SJRequest request, org.sourcejammer.project.view.SJResponse response)
           
private  java.lang.String[] versionListToStringArray(FileNode file)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ROOT_PROJECT_ID

public static final long ROOT_PROJECT_ID
See Also:
Constant Field Values

moArchive

private ArchiveInfoFlex moArchive

context

private ArchiveContext context

moLibrary

private NodeLibrary moLibrary

fileListeners

private FileChangeListenerPool fileListeners

actionPlugins

private ServerActionPluginPool actionPlugins

projectListeners

private ProjectChangeListenerPool projectListeners
Constructor Detail

ProjectController

public ProjectController()
Method Detail

setArchiveContext

public void setArchiveContext(ArchiveContext context)
Specified by:
setArchiveContext in interface Archive

getArchiveContext

public ArchiveContext getArchiveContext()
Specified by:
getArchiveContext in interface Archive

getFileListeners

public FileChangeListenerPool getFileListeners()
Specified by:
getFileListeners in interface Archive

getProjectListeners

public ProjectChangeListenerPool getProjectListeners()
Specified by:
getProjectListeners in interface Archive

getActionPlugins

public ServerActionPluginPool getActionPlugins()
Specified by:
getActionPlugins in interface Archive

getNodeLibrary

public NodeLibrary getNodeLibrary()
Specified by:
getNodeLibrary in interface Archive

setPlugins

public void setPlugins(java.util.ArrayList plugins)

setArchiveInfo

public void setArchiveInfo(ArchiveInfoFlex info)
                    throws FileAccessException
Sets the ArchiveInfo object for this ProjectController.

FileAccessException

setNodeLibrary

public void setNodeLibrary(NodeLibrary lib)
Set the NodeLibrary object for this archive.


getArchiveInfo

public ArchiveInfoFlex getArchiveInfo()
Gives subclasses access to archive info object.

Specified by:
getArchiveInfo in interface Archive

getBrancher

private Brancher getBrancher(org.sourcejammer.project.view.SJRequest request,
                             org.sourcejammer.project.view.SJResponse response)

getRemover

private RemoverRestorer getRemover(org.sourcejammer.project.view.SJRequest request,
                                   org.sourcejammer.project.view.SJResponse response)

getPathToProject

public java.lang.String getPathToProject(long projectID)
                                  throws SecurityException,
                                         ProjectDoesNotExistException,
                                         FileAccessException
Specified by:
getPathToProject in interface Archive
SecurityException
ProjectDoesNotExistException
FileAccessException

checkDeletedNodeShareStatus

public SharesCheckouts checkDeletedNodeShareStatus(long parentID,
                                                   int removedIndex)
                                            throws ProjectDoesNotExistException,
                                                   FileAccessException,
                                                   SecurityException,
                                                   org.sourcejammer.project.NodeDoesNotExistException,
                                                   FileDoesNotExistException
Description copied from interface: Archive
Returns true if the deleted item is a file with shares or with more than one parent (removed or ordinary parents combined) or if the deleted item is a project that contains any files that meet this definition.

Specified by:
checkDeletedNodeShareStatus in interface Archive
ProjectDoesNotExistException
FileAccessException
SecurityException
org.sourcejammer.project.NodeDoesNotExistException
FileDoesNotExistException

doesAnyFileContainMultipleParents

public SharesCheckouts doesAnyFileContainMultipleParents(long projectID)
                                                  throws FileAccessException,
                                                         SecurityException,
                                                         ProjectDoesNotExistException,
                                                         FileDoesNotExistException
Like doesProjectContainShares, except it returns true if any file contains more than one removed parent or removed parent.

FileAccessException
SecurityException
ProjectDoesNotExistException
FileDoesNotExistException

doesAnyFileContainMultipleParents

private SharesCheckouts doesAnyFileContainMultipleParents(long projectID,
                                                          SharesCheckouts sc)
                                                   throws FileAccessException,
                                                          SecurityException,
                                                          ProjectDoesNotExistException,
                                                          FileDoesNotExistException
FileAccessException
SecurityException
ProjectDoesNotExistException
FileDoesNotExistException

doesProjectContainShares

public boolean doesProjectContainShares(long projectID)
                                 throws FileAccessException,
                                        SecurityException,
                                        ProjectDoesNotExistException,
                                        FileDoesNotExistException
Description copied from interface: Archive
Returns true if any file in the project tree is shared.

Specified by:
doesProjectContainShares in interface Archive
FileAccessException
SecurityException
ProjectDoesNotExistException
FileDoesNotExistException

isProjectRemoved

private boolean isProjectRemoved(ProjectNode proj)
                          throws FileAccessException,
                                 SecurityException,
                                 ProjectDoesNotExistException
FileAccessException
SecurityException
ProjectDoesNotExistException

getBranches

public org.sourcejammer.project.view.Branch getBranches(long fileID)
                                                 throws SecurityException,
                                                        FileDoesNotExistException,
                                                        FileAccessException
Description copied from interface: Archive
Return master file object (as a Branch object) for the specified file id.

Specified by:
getBranches in interface Archive
SecurityException
FileDoesNotExistException
FileAccessException

branchFile

public long branchFile(long fileID,
                       long parentProjectID,
                       java.lang.String userName,
                       java.lang.String comment,
                       java.lang.String newBranchIdentifier)
                throws SecurityException,
                       FileDoesNotExistException,
                       FileAccessException,
                       NoSuchVersionException,
                       ProjectDoesNotExistException,
                       org.sourcejammer.project.NodeDoesNotExistException,
                       org.sourcejammer.project.NodeExistsException
Creates a new branch of a shared file in parentProject.

Specified by:
branchFile in interface Archive
SecurityException
FileDoesNotExistException
FileAccessException
NoSuchVersionException
ProjectDoesNotExistException
org.sourcejammer.project.NodeDoesNotExistException
org.sourcejammer.project.NodeExistsException

branchProject

public void branchProject(long projectID,
                          java.lang.String userName,
                          java.lang.String comment,
                          java.lang.String newBranchIdentifier,
                          org.sourcejammer.project.view.SJRequest request,
                          org.sourcejammer.project.view.SJResponse response)
                   throws FileAccessException,
                          SecurityException,
                          ProjectDoesNotExistException,
                          org.sourcejammer.project.NodeExistsException,
                          NoSuchVersionException,
                          FileDoesNotExistException,
                          org.sourcejammer.project.NodeDoesNotExistException
Description copied from interface: Archive
Creates a new branch of all shared files in project, recursively.

Specified by:
branchProject in interface Archive
FileAccessException
SecurityException
ProjectDoesNotExistException
org.sourcejammer.project.NodeExistsException
NoSuchVersionException
FileDoesNotExistException
org.sourcejammer.project.NodeDoesNotExistException

removeFileShare

public void removeFileShare(long fileID,
                            long parentProjectID)
                     throws SecurityException,
                            FileDoesNotExistException,
                            FileAccessException,
                            ProjectDoesNotExistException,
                            NoSuchVersionException,
                            org.sourcejammer.project.NodeDoesNotExistException
Remove a share from a file. This is NOT the same as a branch.

Specified by:
removeFileShare in interface Archive
SecurityException
FileDoesNotExistException
FileAccessException
ProjectDoesNotExistException
NoSuchVersionException
org.sourcejammer.project.NodeDoesNotExistException

removeProjectShare

public void removeProjectShare(long projectID,
                               org.sourcejammer.project.view.SJRequest request,
                               org.sourcejammer.project.view.SJResponse response)
                        throws FileAccessException,
                               FileDoesNotExistException,
                               SecurityException,
                               ProjectDoesNotExistException,
                               NoSuchVersionException,
                               org.sourcejammer.project.NodeDoesNotExistException
Recursively removes shares from all shared files.

Specified by:
removeProjectShare in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException
ProjectDoesNotExistException
NoSuchVersionException
org.sourcejammer.project.NodeDoesNotExistException

removeShareProjectsAndFiles

private void removeShareProjectsAndFiles(ProjectNode source,
                                         org.sourcejammer.project.view.SJRequest request,
                                         org.sourcejammer.project.view.SJResponse response)
                                  throws FileAccessException,
                                         FileDoesNotExistException,
                                         SecurityException,
                                         ProjectDoesNotExistException,
                                         NoSuchVersionException,
                                         org.sourcejammer.project.NodeDoesNotExistException
FileAccessException
FileDoesNotExistException
SecurityException
ProjectDoesNotExistException
NoSuchVersionException
org.sourcejammer.project.NodeDoesNotExistException

shareFile

public void shareFile(long fileID,
                      long newParentProjectID)
               throws SecurityException,
                      FileDoesNotExistException,
                      FileAccessException,
                      ProjectDoesNotExistException,
                      NoSuchVersionException,
                      org.sourcejammer.project.NodeExistsException
Creates a new share for the specified file in the specified project.

Specified by:
shareFile in interface Archive
SecurityException
FileDoesNotExistException
FileAccessException
ProjectDoesNotExistException
NoSuchVersionException
org.sourcejammer.project.NodeExistsException

shareProject

public void shareProject(long projectID,
                         long newParentProjectID,
                         java.lang.String newProjectName,
                         java.lang.String userName,
                         org.sourcejammer.project.view.SJRequest request,
                         org.sourcejammer.project.view.SJResponse response)
                  throws FileAccessException,
                         SecurityException,
                         ProjectDoesNotExistException,
                         org.sourcejammer.project.NodeExistsException,
                         NoSuchVersionException,
                         FileDoesNotExistException
Description copied from interface: Archive
Recurses through the project specified by projectID and creates a new share for each file in newParentProject. New projects are created for all subprojects of project.

Specified by:
shareProject in interface Archive
FileAccessException
SecurityException
ProjectDoesNotExistException
org.sourcejammer.project.NodeExistsException
NoSuchVersionException
FileDoesNotExistException

shareProjectsAndFiles

private void shareProjectsAndFiles(ProjectNode source,
                                   ProjectNode target,
                                   java.lang.String userName,
                                   org.sourcejammer.project.view.SJRequest request,
                                   org.sourcejammer.project.view.SJResponse response)
                            throws FileAccessException,
                                   FileDoesNotExistException,
                                   ProjectDoesNotExistException,
                                   SecurityException,
                                   NoSuchVersionException,
                                   org.sourcejammer.project.NodeExistsException
FileAccessException
FileDoesNotExistException
ProjectDoesNotExistException
SecurityException
NoSuchVersionException
org.sourcejammer.project.NodeExistsException

copyFile

public void copyFile(long fileID,
                     long newParentProjectID,
                     java.lang.String userName,
                     org.sourcejammer.project.view.SJRequest request,
                     org.sourcejammer.project.view.SJResponse response)
              throws org.sourcejammer.project.NodeExistsException,
                     org.sourcejammer.project.NodeDoesNotExistException,
                     SecurityException,
                     FileAccessException,
                     FileDoesNotExistException,
                     NoSuchVersionException
Copies the specified file from one project to another. No file history is copied. A new source file is created.

Specified by:
copyFile in interface Archive
org.sourcejammer.project.NodeExistsException
org.sourcejammer.project.NodeDoesNotExistException
SecurityException
FileAccessException
FileDoesNotExistException
NoSuchVersionException

moveFile

public void moveFile(long fileID,
                     long parentProjectID,
                     long newParentProjectID,
                     java.lang.String userName)
              throws org.sourcejammer.project.NodeExistsException,
                     FileAccessException,
                     SecurityException,
                     NoSuchVersionException,
                     org.sourcejammer.project.NodeDoesNotExistException,
                     FileDoesNotExistException
Moves the specified file from one project to another.

Specified by:
moveFile in interface Archive
org.sourcejammer.project.NodeExistsException
FileAccessException
SecurityException
NoSuchVersionException
org.sourcejammer.project.NodeDoesNotExistException
FileDoesNotExistException

moveProject

public void moveProject(long projectID,
                        long newParentProjectID,
                        java.lang.String newProjectName)
                 throws org.sourcejammer.project.NodeExistsException,
                        FileAccessException,
                        SecurityException,
                        NoSuchVersionException,
                        org.sourcejammer.project.NodeDoesNotExistException,
                        ProjectDoesNotExistException
Moves the specified project from one project to another.

Specified by:
moveProject in interface Archive
org.sourcejammer.project.NodeExistsException
FileAccessException
SecurityException
NoSuchVersionException
org.sourcejammer.project.NodeDoesNotExistException
ProjectDoesNotExistException

copyProject

public void copyProject(long projectID,
                        long newParentProjectID,
                        java.lang.String userName,
                        java.lang.String newProjectName,
                        org.sourcejammer.project.view.SJRequest request,
                        org.sourcejammer.project.view.SJResponse response)
                 throws org.sourcejammer.project.NodeExistsException,
                        org.sourcejammer.project.NodeDoesNotExistException,
                        SecurityException,
                        FileAccessException,
                        FileDoesNotExistException,
                        NoSuchVersionException,
                        ProjectDoesNotExistException
Description copied from interface: Archive
Copies the specified project and all children from one project to another. No file history is copied. A new source for each file is created.

Specified by:
copyProject in interface Archive
org.sourcejammer.project.NodeExistsException
org.sourcejammer.project.NodeDoesNotExistException
SecurityException
FileAccessException
FileDoesNotExistException
NoSuchVersionException
ProjectDoesNotExistException

copyProjectsAndFiles

private void copyProjectsAndFiles(ProjectNode source,
                                  ProjectNode target,
                                  java.lang.String userName,
                                  org.sourcejammer.project.view.SJRequest request,
                                  org.sourcejammer.project.view.SJResponse response)
                           throws NoSuchVersionException,
                                  FileDoesNotExistException,
                                  FileAccessException,
                                  SecurityException,
                                  org.sourcejammer.project.NodeDoesNotExistException,
                                  org.sourcejammer.project.NodeExistsException,
                                  ProjectDoesNotExistException
Copy all children of source to target, recursively.

NoSuchVersionException
FileDoesNotExistException
FileAccessException
SecurityException
org.sourcejammer.project.NodeDoesNotExistException
org.sourcejammer.project.NodeExistsException
ProjectDoesNotExistException

getRootProject

public org.sourcejammer.project.view.Project getRootProject()
                                                     throws FileAccessException,
                                                            SecurityException
Returns the view Project for the root node of the archive for this ProjectController.

Specified by:
getRootProject in interface Archive
FileAccessException
SecurityException

addProject

public long addProject(long parentID,
                       java.lang.String name,
                       org.sourcejammer.project.view.SJRequest request,
                       org.sourcejammer.project.view.SJResponse response)
                throws FileAccessException,
                       ProjectDoesNotExistException,
                       org.sourcejammer.project.NodeExistsException,
                       SecurityException
Adds a new project at the specified location (the NodeName object) to this archive.

Specified by:
addProject in interface Archive
Returns:
unique ID of new project.
FileAccessException
ProjectDoesNotExistException
org.sourcejammer.project.NodeExistsException
SecurityException

addFile

public long[] addFile(long projectID,
                      java.lang.String name,
                      java.io.File file,
                      org.sourcejammer.project.view.FileProperties props,
                      java.lang.String userName,
                      java.lang.String initialBranchIdentifier)
               throws FileAccessException,
                      ProjectDoesNotExistException,
                      FileAlreadyExistsException,
                      SecurityException,
                      TextFileException
Adds a new file to this archive, at the specified location. Returns 0=file id, 1 = verison id. Note: fileType means binary or text.

Specified by:
addFile in interface Archive
FileAccessException
ProjectDoesNotExistException
FileAlreadyExistsException
SecurityException
TextFileException

setFileDescription

public java.lang.String setFileDescription(long fileID,
                                           java.lang.String description)
                                    throws FileAccessException,
                                           FileDoesNotExistException,
                                           SecurityException
Changes description of a file.

Specified by:
setFileDescription in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException

addNewVersion

public long addNewVersion(long fileID,
                          java.io.File newVersion,
                          java.lang.String comment,
                          java.lang.String userName)
                   throws FileAccessException,
                          FileDoesNotExistException,
                          TextFileException,
                          SecurityException,
                          EndOfSourceException,
                          InvalidSourceException,
                          WrongFileTypeException
Adds a new version to an existing file. Returns newest version id.

Specified by:
addNewVersion in interface Archive
FileAccessException
FileDoesNotExistException
TextFileException
SecurityException
EndOfSourceException
InvalidSourceException
WrongFileTypeException

getProjectNode

public ProjectNode getProjectNode(long projectID)
                           throws SecurityException,
                                  FileAccessException,
                                  ProjectDoesNotExistException
Be careful with this direct reference to a ProjectNode object in the cache.

Specified by:
getProjectNode in interface Archive
SecurityException
FileAccessException
ProjectDoesNotExistException

getProject

public org.sourcejammer.project.view.Project getProject(long projectID)
                                                 throws FileAccessException,
                                                        ProjectDoesNotExistException,
                                                        SecurityException
Get Project object (info about project).

Specified by:
getProject in interface Archive
FileAccessException
ProjectDoesNotExistException
SecurityException

convertTextFileAndManageKeywords

private boolean convertTextFileAndManageKeywords(FileNode ndFile,
                                                 java.lang.String userName,
                                                 java.io.File file,
                                                 org.sourcejammer.project.view.NodeInfo ndVer,
                                                 java.lang.String comment)
                                          throws UserDoesNotExistException,
                                                 TextFileException,
                                                 FileAccessException
Returns true if keyword expansion will be attempted.

UserDoesNotExistException
TextFileException
FileAccessException

getFile

public org.sourcejammer.project.view.File getFile(long fileID)
                                           throws FileAccessException,
                                                  FileDoesNotExistException,
                                                  SecurityException
Get File object (info about file).

Specified by:
getFile in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException

versionListToStringArray

private java.lang.String[] versionListToStringArray(FileNode file)

getLatestVersionSourceFilePointer

public java.io.File getLatestVersionSourceFilePointer(long fileID)
                                               throws FileAccessException,
                                                      FileDoesNotExistException,
                                                      SecurityException
Returns java.io.File object for latest version's source.

Specified by:
getLatestVersionSourceFilePointer in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException

getVersionSourceFilePointer

public java.io.File getVersionSourceFilePointer(long fileID,
                                                int versionNumber)
                                         throws FileAccessException,
                                                FileDoesNotExistException,
                                                SecurityException
Returns java.io.File object for requested version's source.

Specified by:
getVersionSourceFilePointer in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException

getVersionCommentFilePointer

public java.io.File getVersionCommentFilePointer(long fileID,
                                                 int versionNumber)
                                          throws FileAccessException,
                                                 FileDoesNotExistException,
                                                 SecurityException
Returns java.io.File object for requested version's comment file.

Specified by:
getVersionCommentFilePointer in interface Archive
FileAccessException
FileDoesNotExistException
SecurityException

getFileLatestVersion

public long getFileLatestVersion(long fileID,
                                 int requestedEOL)
                          throws FileAccessException,
                                 FileDoesNotExistException,
                                 TextFileException,
                                 SecurityException
Get latest version of file source to temp dir and return temp file ID.

Specified by:
getFileLatestVersion in interface Archive
FileAccessException
FileDoesNotExistException
TextFileException
SecurityException

getFileLatestVersionTLR

public TextLineReader getFileLatestVersionTLR(long fileID)
                                       throws FileAccessException,
                                              FileDoesNotExistException,
                                              TextFileException,
                                              SecurityException
Get latest version of text file source as TextLineReader.

Specified by:
getFileLatestVersionTLR in interface Archive
FileAccessException
FileDoesNotExistException
TextFileException
SecurityException

getFileVersionDelta

public Delta getFileVersionDelta(org.sourcejammer.project.view.NodeInfo ver)
                          throws FileAccessException,
                                 NoSuchVersionException,
                                 WrongFileTypeException
Get specified delta object for file.

Specified by:
getFileVersionDelta in interface Archive
FileAccessException
NoSuchVersionException
WrongFileTypeException

getFileVersionTextDelta

public Delta getFileVersionTextDelta(org.sourcejammer.project.view.NodeInfo ver)
                              throws FileAccessException,
                                     NoSuchVersionException,
                                     WrongFileTypeException
Get specified delta object for file.

Specified by:
getFileVersionTextDelta in interface Archive
FileAccessException
NoSuchVersionException
WrongFileTypeException

removeProject

public void removeProject(long parentID,
                          long projectID,
                          org.sourcejammer.project.view.SJRequest request,
                          org.sourcejammer.project.view.SJResponse response)
                   throws FileAccessException,
                          ProjectDoesNotExistException,
                          SecurityException
Remove specified project from the project hierarchy. We need request and response here so we can call listeners for every file removed.

Specified by:
removeProject in interface Archive
FileAccessException
ProjectDoesNotExistException
SecurityException

removeProjectAndRemoveFilesFromAllParents

public void removeProjectAndRemoveFilesFromAllParents(long projectID,
                                                      org.sourcejammer.project.view.SJRequest request,
                                                      org.sourcejammer.project.view.SJResponse response)
                                               throws FileAccessException,
                                                      ProjectDoesNotExistException,
                                                      SecurityException
Remove specified project from the project hierarchy. And removes shared subfiles from all parents. We need request and response here so we can call listeners for every file removed.

Specified by:
removeProjectAndRemoveFilesFromAllParents in interface Archive
FileAccessException
ProjectDoesNotExistException
SecurityException

removeFile

public void removeFile(long parentID,
                       long fileID,
                       org.sourcejammer.project.view.SJRequest request,
                       org.sourcejammer.project.view.SJResponse response)
                throws FileAccessException,
                       ProjectDoesNotExistException,
                       FileDoesNotExistException,
                       SecurityException
Remove specified file from specified project.

Specified by:
removeFile in interface Archive
FileAccessException
ProjectDoesNotExistException
FileDoesNotExistException
SecurityException

removeFileFromAllParents

public void removeFileFromAllParents(long fileID,
                                     org.sourcejammer.project.view.SJRequest request,
                                     org.sourcejammer.project.view.SJResponse response)
                              throws FileAccessException,
                                     ProjectDoesNotExistException,
                                     FileDoesNotExistException,
                                     SecurityException
Remove specified file from all parent projects.

Specified by:
removeFileFromAllParents in interface Archive
FileAccessException
ProjectDoesNotExistException
FileDoesNotExistException
SecurityException

retrieveVersionDeltaFile

public java.io.File retrieveVersionDeltaFile(org.sourcejammer.project.view.NodeInfo versionNode)
                                      throws FileAccessException,
                                             WrongFileTypeException
Specified by:
retrieveVersionDeltaFile in interface Archive
FileAccessException
WrongFileTypeException

setVersionComment

public void setVersionComment(long fileID,
                              int version,
                              java.lang.String comment)
                       throws FileAccessException,
                              FileDoesNotExistException,
                              NoSuchVersionException,
                              SecurityException
Set the comment of the specified version.

Specified by:
setVersionComment in interface Archive
FileAccessException
FileDoesNotExistException
NoSuchVersionException
SecurityException

getVersionComment

public java.lang.String getVersionComment(long versionID)
                                   throws FileAccessException,
                                          ProjectDoesNotExistException,
                                          FileDoesNotExistException,
                                          NoSuchVersionException
Get the comment for the specified version.

Specified by:
getVersionComment in interface Archive
FileAccessException
ProjectDoesNotExistException
FileDoesNotExistException
NoSuchVersionException

checkOutFile

public void checkOutFile(long fileID,
                         java.lang.String userName,
                         java.lang.String checkOutLocation)
                  throws FileAccessException,
                         FileDoesNotExistException,
                         CheckOutException,
                         SecurityException
Set status of specified file to checked out. Does not return the file. Does guarantee that no other method will check out the file until it is checked in.

Specified by:
checkOutFile in interface Archive
FileAccessException
FileDoesNotExistException
CheckOutException
SecurityException

checkInFile

public void checkInFile(long fileID)
                 throws FileAccessException,
                        FileDoesNotExistException,
                        CheckInException,
                        SecurityException
Set status of specified file to checked in. Does not add the new file version to model implementation. Does not guarantee that user checking in file is the same user who checked it out. Does guaranted that file will not be checked in if it has already been checked it.

Specified by:
checkInFile in interface Archive
FileAccessException
FileDoesNotExistException
CheckInException
SecurityException

getUniqueIDFromPath

public long getUniqueIDFromPath(long parentID,
                                java.lang.String path)
                         throws FileAccessException,
                                ProjectDoesNotExistException,
                                org.sourcejammer.project.NodeDoesNotExistException,
                                SecurityException
Description copied from interface: Archive
Returns unique id based on a path.

Specified by:
getUniqueIDFromPath in interface Archive
FileAccessException
ProjectDoesNotExistException
org.sourcejammer.project.NodeDoesNotExistException
SecurityException

getFileNode

public FileNode getFileNode(long fileID)
                     throws FileDoesNotExistException,
                            FileAccessException,
                            SecurityException
Allows "master control" to look at file info to verify check out, check in, file type, etc. MCP MUST release the file when done with it.

Specified by:
getFileNode in interface Archive
FileDoesNotExistException
FileAccessException
SecurityException

releaseFileNode

public void releaseFileNode(FileNode nd)
                     throws FileAccessException
Release a file node.

Specified by:
releaseFileNode in interface Archive
FileAccessException

isChildOfProject

private boolean isChildOfProject(long parentProjectID,
                                 long childProjectID)
                          throws FileAccessException,
                                 ProjectDoesNotExistException,
                                 SecurityException
Returns true if child project is a child of parent project.

FileAccessException
ProjectDoesNotExistException
SecurityException

restoreRemovedNode

public void restoreRemovedNode(long parentID,
                               java.lang.String newName,
                               int index,
                               org.sourcejammer.project.view.SJRequest request,
                               org.sourcejammer.project.view.SJResponse response)
                        throws FileAccessException,
                               ProjectDoesNotExistException,
                               FileDoesNotExistException,
                               org.sourcejammer.project.NodeDoesNotExistException,
                               org.sourcejammer.project.NodeExistsException,
                               SecurityException
Restores a project or file node that was previously removed from the archive.

Specified by:
restoreRemovedNode in interface Archive
Parameters:
parentID - -- ID of the project from which the node was removed.
newName - -- a new name for the removed node.
index - -- Index value of the removed node in the removed nodes list (see getRemovedNodes()).
FileAccessException
ProjectDoesNotExistException
FileDoesNotExistException
org.sourcejammer.project.NodeDoesNotExistException
org.sourcejammer.project.NodeExistsException
SecurityException

renameFile

public java.lang.String renameFile(long parentID,
                                   long fileID,
                                   java.lang.String newName)
                            throws FileAccessException,
                                   ProjectDoesNotExistException,
                                   FileDoesNotExistException,
                                   org.sourcejammer.project.NodeExistsException,
                                   SecurityException
Returns previous file name. Don't really need parent id anymore, but oh well . . .

Specified by:
renameFile in interface Archive
FileAccessException
ProjectDoesNotExistException
FileDoesNotExistException
org.sourcejammer.project.NodeExistsException
SecurityException

renameProject

public java.lang.String renameProject(long parentID,
                                      long projectID,
                                      java.lang.String newName)
                               throws FileAccessException,
                                      ProjectDoesNotExistException,
                                      org.sourcejammer.project.NodeExistsException,
                                      SecurityException
Description copied from interface: Archive
Returns previous project name.

Specified by:
renameProject in interface Archive
FileAccessException
ProjectDoesNotExistException
org.sourcejammer.project.NodeExistsException
SecurityException

deleteRemovedNode

public void deleteRemovedNode(long parentID,
                              int index,
                              boolean permanentlyDeleteAllShares,
                              org.sourcejammer.project.view.SJRequest request,
                              org.sourcejammer.project.view.SJResponse response)
                       throws FileAccessException,
                              FileDoesNotExistException,
                              ProjectDoesNotExistException,
                              SecurityException,
                              org.sourcejammer.project.NodeDoesNotExistException
Delete specified removed node.

Specified by:
deleteRemovedNode in interface Archive
FileAccessException
FileDoesNotExistException
ProjectDoesNotExistException
SecurityException
org.sourcejammer.project.NodeDoesNotExistException

getRemovedNodes

public java.util.Vector getRemovedNodes(long projectID)
                                 throws FileAccessException,
                                        ProjectDoesNotExistException,
                                        SecurityException
Returns a Vector of NodeInfo objects, one for each node that has been removed (but not permanently deleted) from the parent project.

Specified by:
getRemovedNodes in interface Archive
Parameters:
projectID - -- project id to return a list of removed nodes for.
FileAccessException
ProjectDoesNotExistException
SecurityException

makeLabeledVersion

public void makeLabeledVersion(java.lang.String name,
                               java.lang.String description,
                               long parentProjectID,
                               java.lang.String userName)
                        throws LabelBuildException,
                               FileAccessException,
                               SecurityException
Create and save a new labeled version with the passed-in name and description and containing all of the latest versions that are children of parent.

Specified by:
makeLabeledVersion in interface Archive
LabelBuildException
FileAccessException
SecurityException

rebuildLabel

public void rebuildLabel(long labelID,
                         java.lang.String description,
                         long parentProjectID,
                         java.lang.String userName,
                         boolean buildChangeList)
                  throws LabelBuildException,
                         FileAccessException,
                         SecurityException
Specified by:
rebuildLabel in interface Archive
LabelBuildException
FileAccessException
SecurityException

getChangeList

public long getChangeList(long labelID,
                          int verNewer,
                          int verOlder,
                          int eolType)
                   throws org.sourcejammer.project.NodeDoesNotExistException,
                          FileAccessException,
                          FileDoesNotExistException,
                          SecurityException,
                          EndOfSourceException,
                          InvalidSourceException,
                          WrongFileTypeException,
                          NoSuchVersionException,
                          TextFileException,
                          ProjectDoesNotExistException
Generated change list for specified label and saves it as a temp file. Returns id of temp file.

Specified by:
getChangeList in interface Archive
org.sourcejammer.project.NodeDoesNotExistException
FileAccessException
FileDoesNotExistException
SecurityException
EndOfSourceException
InvalidSourceException
WrongFileTypeException
NoSuchVersionException
TextFileException
ProjectDoesNotExistException

getLabelContentList

public Label getLabelContentList(long labelID,
                                 int versionNumber)
                          throws org.sourcejammer.project.NodeDoesNotExistException,
                                 FileAccessException,
                                 FileDoesNotExistException,
                                 SecurityException,
                                 EndOfSourceException,
                                 InvalidSourceException,
                                 WrongFileTypeException,
                                 NoSuchVersionException,
                                 TextFileException,
                                 ProjectDoesNotExistException
Returns the Label object (which contains the sourcejammer path and version number for each object in the labeled version) with the specified name.

Specified by:
getLabelContentList in interface Archive
org.sourcejammer.project.NodeDoesNotExistException
FileAccessException
FileDoesNotExistException
SecurityException
EndOfSourceException
InvalidSourceException
WrongFileTypeException
NoSuchVersionException
TextFileException
ProjectDoesNotExistException

projectNodeToProject

protected org.sourcejammer.project.view.Project projectNodeToProject(ProjectNode ndProject)
                                                              throws SecurityException,
                                                                     ProjectDoesNotExistException,
                                                                     FileAccessException,
                                                                     FileDoesNotExistException,
                                                                     org.sourcejammer.project.NodeExistsException
SecurityException
ProjectDoesNotExistException
FileAccessException
FileDoesNotExistException
org.sourcejammer.project.NodeExistsException

controllerNodeToNodeInfo

protected org.sourcejammer.project.view.NodeInfo controllerNodeToNodeInfo(ControllerNode nd)
                                                                   throws NoSuchVersionException
Builds new NodeInfo object from ControllerNode.

NoSuchVersionException


Copyright 2003 Soucejammer project.