# Class FileBuilder

java.lang.Object
net.sf.statcvs.input.FileBuilder

public class FileBuilder extends Object

Builds a `VersionedFile` with `Revision`s from logging data. This class is responsible for deciding if a file or revisions will be included in the report, for translating from CVS logfile data structures to the data structures in the `net.sf.statcvs.model` package, and for calculating the LOC history for the file.

A main goal of this class is to delay the creation of the `VersionedFile` object until all revisions of the file have been collected from the log. We could simply create `VersionedFile` and `Revision`s on the fly as we parse through the log, but this creates a problem if we decide not to include the file after reading several revisions. The creation of a `VersionedFile` or `Revision` can cause many more objects to be created (`Author`, `Directory`, `Commit`), and it would be very hard to get rid of them if we don't want the file. This problem is solved by first collecting all information about one file in this class, and then, with all information present, deciding if we want to create the model instances or not.

Version:
  $Id: FileBuilder.java,v 1.18 2008/04/02 11:22:14 benoitx Exp $
Author:
  Richard Cyganiak invalid input: '<'richard@cyganiak.de>, Tammo van Lessen

## Constructor Summary

Constructors
Constructor
Description
`FileBuilder(Builder builder, String name, boolean isBinary, Map revBySymnames)`
Creates a new `FileBuilder`.

## Method Summary

Modifier and Type
Method
Description
`void`
`addRevisionData(RevisionData data)`
Adds a revision to the file.
`VersionedFile`
`createFile(Date beginOfLogDate)`
Creates and returns a `VersionedFile` representation of the file.
`boolean`
`hasLocalCVSMetadata()`
`boolean`
`hasLocalFileNotFound()`
`boolean`
`hasUnexpectedLocalRevision()`

### Methods inherited from class Object

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

## Constructor Details

### FileBuilder

public FileBuilder(Builder builder, String name, boolean isBinary, Map revBySymnames)
Creates a new `FileBuilder`.

Parameters:
  `builder` - a `Builder` that provides factory services for author and directory instances and line counts.
  `name` - the filename
  `isBinary` - Is this a binary file or not?

## Method Details

### addRevisionData

public void addRevisionData(RevisionData data)
Adds a revision to the file. The revisions must be added in the same order as they appear in the CVS logfile, that is, most recent first.

Parameters:
  `data` - the revision

### createFile

public VersionedFile createFile(Date beginOfLogDate)
Creates and returns a `VersionedFile` representation of the file. `null` is returned if the file does not meet certain criteria, for example if its filename meets an exclude filter or if it was dead during the entire logging timespan.

Parameters:
  `beginOfLogDate` - the date of the begin of the log
Returns:
  a `VersionedFile` representation of the file.

### hasUnexpectedLocalRevision

public boolean hasUnexpectedLocalRevision()

### hasLocalFileNotFound

public boolean hasLocalFileNotFound()

### hasLocalCVSMetadata

public boolean hasLocalCVSMetadata()