net.sf.statsvn.input
Class CacheBuilder

java.lang.Object
  extended by net.sf.statsvn.input.CacheBuilder

public class CacheBuilder
extends java.lang.Object

CVS log files include lines modified for each commit and binary status of a file while SVN log files do not offer this additional information.

StatSVN must query the Subversion repository for line counts using svn diff. However, this is very costly, performance-wise. Therefore, the decision was taken to persist this information in an XML file. This class receives information from (@link net.sf.statsvn.input.SvnXmlLineCountsFileHandler) to build a DOM-based xml structure. It also forwards line counts to the appropriate (@link net.sf.statsvn.input.FileBuilder).

 

Constructor Summary
CacheBuilder(SvnLogBuilder builder, RepositoryFileManager repositoryFileManager)
          Constructs the LineCountsBuilder by giving it a reference to the builder currently in use.
 
Method Summary
 void buildPath(java.lang.String name, java.lang.String revision, java.lang.String binaryStatus)
          Initializes the builder for subsequent invocations of (@link #buildRevision(String, String, String)).
 void buildRevision(java.lang.String number, java.lang.String added, java.lang.String removed, java.lang.String binaryStatus)
          Given the file specified by the preceeding invocation to (@link #buildPath(String)), set the line counts for the given revision.
 void buildRoot()
          Builds the DOM root.
 org.w3c.dom.Document getDocument()
          Returns the DOM object when building is complete.
 boolean isBinary(java.lang.String fileName, java.lang.String revisionNumber)
          Checks the path's cached binary status.
 void newRevision(java.lang.String name, java.lang.String number, java.lang.String added, java.lang.String removed, boolean binaryStatus)
          Adds a revision to the DOM.
 void updateBinaryStatus(java.util.Collection fileBuilders, java.lang.String revisionNumber)
          Updates all paths in the DOM structure with the latest binary status information from the working folder.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CacheBuilder

public CacheBuilder(SvnLogBuilder builder,
                    RepositoryFileManager repositoryFileManager)
Constructs the LineCountsBuilder by giving it a reference to the builder currently in use.

Parameters:
builder - the SvnLogBuilder which contains all the FileBuilders.
Method Detail

buildPath

public void buildPath(java.lang.String name,
                      java.lang.String revision,
                      java.lang.String binaryStatus)
Initializes the builder for subsequent invocations of (@link #buildRevision(String, String, String)).

Parameters:
name - the filename

buildRevision

public void buildRevision(java.lang.String number,
                          java.lang.String added,
                          java.lang.String removed,
                          java.lang.String binaryStatus)
Given the file specified by the preceeding invocation to (@link #buildPath(String)), set the line counts for the given revision. If the path given in the preceeding invocation to (@link #buildPath(String)) is not used by the (@link SvnLogBuilder), this call does nothing.

Parameters:
number - the revision number
added - the number of lines added
removed - the number of lines removed.

buildRoot

public void buildRoot()
               throws javax.xml.parsers.ParserConfigurationException
Builds the DOM root.

Throws:
javax.xml.parsers.ParserConfigurationException

getDocument

public org.w3c.dom.Document getDocument()
Returns the DOM object when building is complete.

Returns:
the DOM document.

newRevision

public void newRevision(java.lang.String name,
                        java.lang.String number,
                        java.lang.String added,
                        java.lang.String removed,
                        boolean binaryStatus)
Adds a revision to the DOM. Encapsulates calls to (@link #buildRoot()), (@link #buildPath(String)), and (@link #buildRevision(String, String, String)) into one easy to use interface.

Parameters:
name - the filename
number - the revision number
added - the number of lines added
removed - the number of lines removed

updateBinaryStatus

public void updateBinaryStatus(java.util.Collection fileBuilders,
                               java.lang.String revisionNumber)
Updates all paths in the DOM structure with the latest binary status information from the working folder.

Parameters:
name - the filename
number - the revision number
added - the number of lines added
removed - the number of lines removed

isBinary

public boolean isBinary(java.lang.String fileName,
                        java.lang.String revisionNumber)
Checks the path's cached binary status.

Parameters:
fileName - the path to be checked
revisionNumber - the revision of the path to be checked
Returns:
true if the path's BINARY_STATUS is true and the revisionNumber is lower or equal to the path's LATEST_REVISION