SourceJammer 1.2.0.1 May 20, 2002
Copyright (c) 2001, 2002 Robert MacGrogan

org.sourcejammer.project.model
Interface NodeLibrary

All Known Implementing Classes:
NodeLibraryFS

public interface NodeLibrary

Interface for a factory class that retrieves or constructs nodes based on unique ID. A Project/File node cache could be added to the classes implementing this interface


Method Summary
 void deleteNode(ControllerNode node)
           
 FileNode getFileNode(long nodeID)
          Retrieve or construct a FileNode based on it's node id.
 FileNode getFileNode(long nodeID, boolean readOnly)
          Retrieve or construct a FileNode based on it's node id.
 FileNode getNewFileNodeFromModel()
          Subclasses should implement this to return a new FileNode object.
 LabelInfo getNewLabelInfoFromModel()
           
 ProjectNode getNewProjectFromModel()
          Subclasses should implement this to return a new ProjectNode object.
 long getNextVersionNodeID()
          Returns next unique ID for a version.
 java.lang.String getProjectChildName(ProjectChild child)
          Low impact way of getting a node's name without adding the node or any of it's children to the cache.
 ProjectNode getProjectNode(long nodeID)
          Retrieve or construct a ProjectNode based on it's node id.
 java.io.File getSourceFilePointer(NodeInfo versionNode)
           
 long lockNode(ControllerNode nd)
          Locks the node and returns the key.
 long lockNode(ControllerNode nd, long lTimeOutValue)
          Locks the node and returns the key used to lock it.
 void releaseNode(ControllerNode nd)
          Releases the node after use.
 void removeVersion(FileNode ndFile, long fileKey, long versionID)
          Remove all files assocaited with version from model.
 Label retrieveLabel(LabelInfo labelInfo)
           
 NodeList retrieveLabelList()
          Loads all the labels for this archive as a NodeList.
 java.lang.String retrieveVersionComment(long versionID)
           
 Delta retrieveVersionDelta(NodeInfo versionNode)
           
 java.io.File retrieveVersionDeltaFile(NodeInfo versionNode)
           
 byte[] retrieveVersionFull(NodeInfo versionNode)
           
 TextLineReader retrieveVersionTextLineReader(NodeInfo versionNode)
          When implemented, this method returns the full source of the specified VersionNode as a TextLineReader.
 void storeLabel(LabelInfo labelInfo, Label label, NodeList allLabels)
          Subclasses should implement to store the labeled version info.
 void storeVersionComment(FileNode ndFile, long fileKey, long versionID, java.lang.String comment)
           
 void storeVersionDelta(FileNode ndFile, long fileKey, long versionID, java.io.File file)
          Subclasses should implement to store file delta in the model implementation.
 void storeVersionFull(FileNode ndFile, long fileKey, long versionID, java.io.File file)
          Subclasses should implement to store version file in the model implementation.
 void storeVersionTextDiff(FileNode ndFile, long fileKey, long versionID, TextDiff file)
           
 

Method Detail

getProjectNode

public ProjectNode getProjectNode(long nodeID)
                           throws FileAccessException,
                                  ProjectDoesNotExistException,
                                  SecurityException
Retrieve or construct a ProjectNode based on it's node id.

getFileNode

public FileNode getFileNode(long nodeID)
                     throws FileAccessException,
                            FileDoesNotExistException,
                            SecurityException
Retrieve or construct a FileNode based on it's node id.

getFileNode

public FileNode getFileNode(long nodeID,
                            boolean readOnly)
                     throws FileAccessException,
                            FileDoesNotExistException,
                            SecurityException
Retrieve or construct a FileNode based on it's node id.
Parameters:
nodeID - -- unique id of the FileNode to retrieve.
readOnly - -- if true, the FileNode will not be lock-able and should probably be a clone of any FileNode stored in the cache.

releaseNode

public void releaseNode(ControllerNode nd)
                 throws FileAccessException
Releases the node after use.

storeLabel

public void storeLabel(LabelInfo labelInfo,
                       Label label,
                       NodeList allLabels)
                throws FileAccessException
Subclasses should implement to store the labeled version info.

storeVersionFull

public void storeVersionFull(FileNode ndFile,
                             long fileKey,
                             long versionID,
                             java.io.File file)
                      throws FileAccessException
Subclasses should implement to store version file in the model implementation. FileNode must be locked and passed key must "fit" the FileNode, or ControllerNodeLockException is thrown.

storeVersionDelta

public void storeVersionDelta(FileNode ndFile,
                              long fileKey,
                              long versionID,
                              java.io.File file)
                       throws FileAccessException
Subclasses should implement to store file delta in the model implementation. FileNode must be locked and passed key must "fit" the FileNode, or ControllerNodeLockException is thrown.

storeVersionTextDiff

public void storeVersionTextDiff(FileNode ndFile,
                                 long fileKey,
                                 long versionID,
                                 TextDiff file)
                          throws FileAccessException

getNewProjectFromModel

public ProjectNode getNewProjectFromModel()
                                   throws FileAccessException
Subclasses should implement this to return a new ProjectNode object. Unique ID for new project will be already be set in returned Node.

getNewFileNodeFromModel

public FileNode getNewFileNodeFromModel()
                                 throws FileAccessException
Subclasses should implement this to return a new FileNode object. Unique Id for file will already be set in returned Node.

getNextVersionNodeID

public long getNextVersionNodeID()
                          throws FileAccessException
Returns next unique ID for a version.

getNewLabelInfoFromModel

public LabelInfo getNewLabelInfoFromModel()
                                   throws FileAccessException

storeVersionComment

public void storeVersionComment(FileNode ndFile,
                                long fileKey,
                                long versionID,
                                java.lang.String comment)
                         throws FileAccessException,
                                SecurityException

retrieveVersionComment

public java.lang.String retrieveVersionComment(long versionID)
                                        throws FileAccessException

retrieveVersionFull

public byte[] retrieveVersionFull(NodeInfo versionNode)
                           throws FileAccessException,
                                  WrongFileTypeException

getSourceFilePointer

public java.io.File getSourceFilePointer(NodeInfo versionNode)

retrieveVersionTextLineReader

public TextLineReader retrieveVersionTextLineReader(NodeInfo versionNode)
                                             throws FileAccessException,
                                                    WrongFileTypeException,
                                                    SourceJammerVersionException
When implemented, this method returns the full source of the specified VersionNode as a TextLineReader. This method should only be called for files stored as Text. Implementing classes should throw WrongFileType if the underlying file is not text.

retrieveVersionDelta

public Delta retrieveVersionDelta(NodeInfo versionNode)
                           throws FileAccessException,
                                  WrongFileTypeException

retrieveLabel

public Label retrieveLabel(LabelInfo labelInfo)
                    throws FileAccessException

retrieveVersionDeltaFile

public java.io.File retrieveVersionDeltaFile(NodeInfo versionNode)
                                      throws FileAccessException,
                                             WrongFileTypeException

lockNode

public long lockNode(ControllerNode nd)
              throws SecurityException
Locks the node and returns the key. Times out after default number of milliseconds.

lockNode

public long lockNode(ControllerNode nd,
                     long lTimeOutValue)
              throws SecurityException
Locks the node and returns the key used to lock it. Calling routines MUST remember to UNLOCK the node when they are done with it. Method waits for node to unlock for lTimeOutValue milliseconds.

retrieveLabelList

public NodeList retrieveLabelList()
                           throws FileAccessException
Loads all the labels for this archive as a NodeList.

deleteNode

public void deleteNode(ControllerNode node)
                throws FileAccessException,
                       NodeDoesNotExistException,
                       SecurityException

getProjectChildName

public java.lang.String getProjectChildName(ProjectChild child)
                                     throws FileAccessException,
                                            NodeDoesNotExistException
Low impact way of getting a node's name without adding the node or any of it's children to the cache.

removeVersion

public void removeVersion(FileNode ndFile,
                          long fileKey,
                          long versionID)
                   throws FileAccessException,
                          NoSuchVersionException
Remove all files assocaited with version from model.

SourceJammer 1.2.0.1 May 20, 2002
Copyright (c) 2001, 2002 Robert MacGrogan