net.sf.statcvs.input
Class Builder

java.lang.Object
  extended bynet.sf.statcvs.input.Builder
All Implemented Interfaces:
CvsLogBuilder

public class Builder
extends Object
implements CvsLogBuilder

Helps building the CvsContent from a CVS log. The Builder is fed by some CVS history data source, for example a CVS log parser. The CvsContent can be retrieved using the createCvsContent() method.

The class also takes care of the creation of Author and Directory objects and makes sure that there's only one of these for each author name and path. It also provides LOC count services.

Version:
$Id: Builder.java,v 1.27 2004/02/19 23:15:44 cyganiak Exp $
Author:
Richard Cyganiak

Constructor Summary
Builder(RepositoryFileManager repositoryFileManager, FilePatternMatcher includePattern, FilePatternMatcher excludePattern)
          Creates a new Builder
 
Method Summary
 void buildFile(String filename, boolean isBinary, boolean isInAttic)
          Starts building a new file.
 void buildModule(String moduleName)
          Starts building the module.
 void buildRevision(RevisionData data)
          Adds a revision to the current file.
 CvsContent createCvsContent()
          Returns a CvsContent object of all files.
 Set getAtticFileNames()
          Returns the Set of filenames that are "in the attic".
 Author getAuthor(String name)
          returns the Author of the given name or creates it if it does not yet exist.
 Directory getDirectory(String filename)
          Returns the Directory of the given filename or creates it if it does not yet exist.
 int getLOC(String filename)
           
 String getProjectName()
           
 boolean matchesPatterns(String filename)
          Matches a filename against the include and exclude patterns.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Builder

public Builder(RepositoryFileManager repositoryFileManager,
               FilePatternMatcher includePattern,
               FilePatternMatcher excludePattern)
Creates a new Builder

Parameters:
repositoryFileManager - the RepositoryFileManager that can be used to retrieve LOC counts for the files that this builder will create
includePattern - a list of Ant-style wildcard patterns, seperated by : or ;
excludePattern - a list of Ant-style wildcard patterns, seperated by : or ;
Method Detail

buildModule

public void buildModule(String moduleName)
Starts building the module.

Specified by:
buildModule in interface CvsLogBuilder
Parameters:
moduleName - name of the module

buildFile

public void buildFile(String filename,
                      boolean isBinary,
                      boolean isInAttic)
Starts building a new file. The files are not expected to be created in any particular order.

Specified by:
buildFile in interface CvsLogBuilder
Parameters:
filename - the file's name with path, for example "path/file.txt"
isBinary - true if it's a binary file
isInAttic - true if the file is dead on the main branch

buildRevision

public void buildRevision(RevisionData data)
Adds a revision to the current file. The revisions must be added in CVS logfile order, that is starting with the most recent one.

Specified by:
buildRevision in interface CvsLogBuilder
Parameters:
data - the revision

createCvsContent

public CvsContent createCvsContent()
                            throws EmptyRepositoryException
Returns a CvsContent object of all files.

Returns:
CvsContent a CvsContent object
Throws:
EmptyRepositoryException - if no adequate files were found in the log.

getProjectName

public String getProjectName()

getAtticFileNames

public Set getAtticFileNames()
Returns the Set of filenames that are "in the attic".

Returns:
a Set of Strings

getAuthor

public Author getAuthor(String name)
returns the Author of the given name or creates it if it does not yet exist.

Parameters:
name - the author's name
Returns:
a corresponding Author object

getDirectory

public Directory getDirectory(String filename)
Returns the Directory of the given filename or creates it if it does not yet exist.

Parameters:
filename - the name and path of a file, for example "src/Main.java"
Returns:
a corresponding Directory object

getLOC

public int getLOC(String filename)
           throws NoLineCountException
Throws:
NoLineCountException

matchesPatterns

public boolean matchesPatterns(String filename)
Matches a filename against the include and exclude patterns. If no include pattern was specified, all files will be included. If no exclude pattern was specified, no files will be excluded.

Parameters:
filename - a filename
Returns:
true if the filename matches one of the include patterns and does not match any of the exclude patterns. If it matches an include and an exclude pattern, false will be returned.