net.sf.statsvn.input

## Class RepositoryFileManager

- java.lang.Object
- - net.sf.statsvn.input.RepositoryFileManager

-     public class RepositoryFileManager
      extends java.lang.Object

  Manages a checked-out repository and provides access to line number counts for repository files. New in StatSVN: Also provides a central point of access to abstract out calls to the server. Many of the methods here simply redirect to the static util/SvnXXXUtils classes. Therefore, clients don't have to know where the information is located, they can simply invoke this class.
  Version:
    $Id: RepositoryFileManager.java 394 2009-08-10 20:08:46Z jkealey $
  Author:
    Manuel Schulze, Steffen Pingel, Jason Kealey

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RepositoryFileManager(java.lang.String pathName)` Creates a new instance with root at `pathName`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `absolutePathToUrl(java.lang.String absolute)` Converts an absolute path in the repository to a URL, using the repository URL
    `java.lang.String` | `absoluteToRelativePath(java.lang.String stringData)` Converts an absolute path in the repository to a path relative to the working folder root.
    `void` | `addDirectory(java.lang.String relativePath)` Adds a directory to the list of known directories.
    `boolean` | `existsInWorkingCopy(java.lang.String relativePath)` Returns true if the file exists in the working copy (according to the svn metadata, and not file system checks).
    `protected ISvnDiffProcessor` | `getDiffProcessor()`
    `protected ISvnInfoProcessor` | `getInfoProcessor()`
    `protected int` | `getLineCount(java.io.BufferedReader reader)` Counts lines on a BufferedReader
    `int[]` | `getLineDiff(java.lang.String oldRevNr, java.lang.String newRevNr, java.lang.String filename)` Returns line count differences between two revisions of a file.
    `int` | `getLinesOfCode(java.lang.String filename)` Returns the lines of code for a repository file.
    `java.lang.String` | `getModuleName()` Assumes #loadInfo(String) has been called.
    `ISvnProcessor` | `getProcessor()`
    `protected ISvnPropgetProcessor` | `getPropgetProcessor()`
    `java.lang.String` | `getRepositoryUuid()` Assumes #loadInfo(String) has been called.
    `java.lang.String` | `getRevision(java.lang.String filename)` Returns the revision of filename in the local working directory by reading the svn metadata.
    `java.util.Vector` | `getRevisionDiff(java.lang.String newRevNr)` Returns line count differences for all files in a particular revision.
    `java.lang.String` | `getRootRevisionNumber()` Assumes #loadInfo(String) has been called.
    `protected ISvnVersionProcessor` | `getVersionProcessor()`
    `boolean` | `isBinary(java.lang.String relativePath)` Is the given path a binary file in the working directory?
    `boolean` | `isDirectory(java.lang.String relativePath)` Returns true if the path has been identified as a directory.
    `void` | `loadInfo()` Initializes our representation of the repository.
    `java.lang.String` | `relativePathToUrl(java.lang.String relative)` Converts a relative path in the working folder to a URL, using the working folder's root URL
    `java.lang.String` | `relativeToAbsolutePath(java.lang.String relative)` Converts a relative path in the working folder to an absolute path in the repository.
    `java.lang.String` | `urlToAbsolutePath(java.lang.String url)` Converts a url to an absolute path in the repository.
    `java.lang.String` | `urlToRelativePath(java.lang.String url)` Converts a url to a relative path in the repository.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RepositoryFileManager

          public RepositoryFileManager(java.lang.String pathName)

      Creates a new instance with root at `pathName`.
      Parameters:
        `pathName` - the root of the checked out repository

  - ### Method Detail

    - #### absolutePathToUrl

          public java.lang.String absolutePathToUrl(java.lang.String absolute)

      Converts an absolute path in the repository to a URL, using the repository URL
      Parameters:
        `absolute` - Example: /trunk/statsvn/package.html
      Returns:
        Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html

    - #### absoluteToRelativePath

          public java.lang.String absoluteToRelativePath(java.lang.String stringData)

      Converts an absolute path in the repository to a path relative to the working folder root. Will return null if absolute path does not start with getModuleName();
      Parameters:
        `absolute` - Example (assume getModuleName() returns /trunk/statsvn) /trunk/statsvn/package.html
      Returns:
        Example: package.html

    - #### addDirectory

          public void addDirectory(java.lang.String relativePath)

      Adds a directory to the list of known directories. Used when inferring implicit actions on deleted paths.
      Parameters:
        `relativePath` - the relative path.

    - #### existsInWorkingCopy

          public boolean existsInWorkingCopy(java.lang.String relativePath)

      Returns true if the file exists in the working copy (according to the svn metadata, and not file system checks).
      Parameters:
        `relativePath` - the path
      Returns:
        `true` if it exists

    - #### getLineCount

          protected int getLineCount(java.io.BufferedReader reader)
                              throws java.io.IOException

      Counts lines on a BufferedReader
      Parameters:
        `reader` - the buffered reader
      Returns:
        the number of lines read
      Throws:
        `java.io.IOException` - error reading from reader

    - #### getLineDiff

          public int[] getLineDiff(java.lang.String oldRevNr,
                          java.lang.String newRevNr,
                          java.lang.String filename)
                            throws java.io.IOException,
                                   BinaryDiffException

      Returns line count differences between two revisions of a file.
      Parameters:
        `oldRevNr` - old revision number
        `newRevNr` - new revision number
        `filename` - the filename
      Returns:
        A int[2] array of [lines added, lines removed] is returned.
      Throws:
        `java.io.IOException` - problem parsing the stream
        `BinaryDiffException` - if the error message is due to trying to diff binary files.

    - #### getRevisionDiff

          public java.util.Vector getRevisionDiff(java.lang.String newRevNr)
                                           throws java.io.IOException,
                                                  BinaryDiffException

      Returns line count differences for all files in a particular revision.
      Parameters:
        `newRevNr` - new revision number
      Returns:
        A vector of object[3] array of [filename, int[2](lines added, lines removed), isBinary] is returned.
      Throws:
        `java.io.IOException` - problem parsing the stream
        `BinaryDiffException` - if the error message is due to trying to diff binary files.

    - #### getLinesOfCode

          public int getLinesOfCode(java.lang.String filename)
                             throws net.sf.statcvs.input.NoLineCountException

      Returns the lines of code for a repository file. (Currently checked out version)
      Parameters:
        `filename` - a file in the repository
      Returns:
        the lines of code for a repository file
      Throws:
        `net.sf.statcvs.input.NoLineCountException` - when the line count could not be retrieved, for example when the file was not found.

    - #### getModuleName

          public java.lang.String getModuleName()

      Assumes #loadInfo(String) has been called. Never ends with /, might be empty.
      Returns:
        The absolute path of the root of the working folder in the repository.

    - #### getRepositoryUuid

          public java.lang.String getRepositoryUuid()

      Assumes #loadInfo(String) has been called.
      Returns:
        The uuid of the repository.

    - #### getRevision

          public java.lang.String getRevision(java.lang.String filename)
                                       throws java.io.IOException

      Returns the revision of filename in the local working directory by reading the svn metadata.
      Parameters:
        `filename` - the filename
      Returns:
        the revision of filename
      Throws:
        `java.io.IOException`

    - #### getRootRevisionNumber

          public java.lang.String getRootRevisionNumber()

      Assumes #loadInfo(String) has been called.
      Returns:
        the revision number of the root of the working folder (last checked out revision number)

    - #### isBinary

          public boolean isBinary(java.lang.String relativePath)

      Is the given path a binary file in the working directory?
      Parameters:
        `relativePath` - the directory
      Returns:
        true if it is marked as a binary file

    - #### isDirectory

          public boolean isDirectory(java.lang.String relativePath)

      Returns true if the path has been identified as a directory.
      Parameters:
        `relativePath` - the path
      Returns:
        true if it is a known directory.

    - #### loadInfo

          public void loadInfo()
                        throws net.sf.statcvs.input.LogSyntaxException,
                               java.io.IOException

      Initializes our representation of the repository.
      Throws:
        `net.sf.statcvs.input.LogSyntaxException` - if the svn info --xml is malformed
        `java.io.IOException` - if there is an error reading from the stream

    - #### relativePathToUrl

          public java.lang.String relativePathToUrl(java.lang.String relative)

      Converts a relative path in the working folder to a URL, using the working folder's root URL
      Parameters:
        `relative` - Example: src/Messages.java
      Returns:
        Example: svn://svn.statsvn.org/statsvn/trunk/statsvn/src/Messages.java

    - #### relativeToAbsolutePath

          public java.lang.String relativeToAbsolutePath(java.lang.String relative)

      Converts a relative path in the working folder to an absolute path in the repository.
      Parameters:
        `relative` - Example: src/Messages.java
      Returns:
        Example: /trunk/statsvn/src/Messages.java

    - #### urlToAbsolutePath

          public java.lang.String urlToAbsolutePath(java.lang.String url)

      Converts a url to an absolute path in the repository.
      Parameters:
        `url` - Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn, svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html
      Returns:
        Example: /trunk/statsvn, /trunk/statsvn/package.html

    - #### urlToRelativePath

          public java.lang.String urlToRelativePath(java.lang.String url)

      Converts a url to a relative path in the repository.
      Parameters:
        `url` - Examples: svn://svn.statsvn.org/statsvn/trunk/statsvn, svn://svn.statsvn.org/statsvn/trunk/statsvn/package.html
      Returns:
        Example: ".", package.html

    - #### getProcessor

          public ISvnProcessor getProcessor()

    - #### getDiffProcessor

          protected ISvnDiffProcessor getDiffProcessor()

    - #### getInfoProcessor

          protected ISvnInfoProcessor getInfoProcessor()

    - #### getPropgetProcessor

          protected ISvnPropgetProcessor getPropgetProcessor()

    - #### getVersionProcessor

          protected ISvnVersionProcessor getVersionProcessor()