net.sf.statsvn.input

## Class CacheBuilder

- java.lang.Object
- - 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).

  Version:
    $Id: CacheBuilder.java 351 2008-03-28 18:46:26Z benoitx $
  Author:
    Gunter Mussbacher

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CacheBuilder(SvnLogBuilder builder, RepositoryFileManager repositoryFileManager)` Constructs the LineCountsBuilder by giving it a reference to the builder currently in use.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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