net.sf.statcvs.model
Class CvsFile

java.lang.Object
  extended bynet.sf.statcvs.model.CvsFile
All Implemented Interfaces:
Comparable

public class CvsFile
extends Object
implements Comparable

Represents one versioned file in the Repository, including its name, Directory and CvsRevision list. Revisions can be created using the addXXXRevision factory methods. Revisions can be created in any order. TODO: Rename class to something like VersionedFile, getCurrentLinesOfCode() to getCurrentLines(), maybe getFilenameXXX, isDead() to isDeleted()

Version:
$Id: CvsFile.java,v 1.47 2004/02/20 19:32:13 cyganiak Exp $
Author:
Manuel Schulze, Richard Cyganiak

Constructor Summary
CvsFile(String name, Directory directory)
          Creates a CvsFile object.
 
Method Summary
 CvsRevision addBeginOfLogRevision(Date date, int lines)
          Adds a "begin of log" revision to the file.
 CvsRevision addChangeRevision(String revisionNumber, Author author, Date date, String comment, int lines, int linesDelta, int replacedLines)
          Adds a change revision to the file.
 CvsRevision addDeletionRevision(String revisionNumber, Author author, Date date, String comment, int lines)
          Adds a deletion revision to the file.
 CvsRevision addInitialRevision(String revisionNumber, Author author, Date date, String comment, int lines)
          Adds an initial revision to the file.
 int compareTo(Object other)
          Compares this file to another one, based on filename.
 int getCurrentLinesOfCode()
          Returns the current number of lines for this file.
 Directory getDirectory()
          Returns the file's Directory.
 String getFilename()
          Returns the filename without path.
 String getFilenameWithPath()
          Returns the full filename.
 CvsRevision getInitialRevision()
          Gets the earliest revision of this file.
 CvsRevision getLatestRevision()
          Gets the latest revision of this file.
 CvsRevision getPreviousRevision(CvsRevision revision)
          Returns the revision which was replaced by the revision given as argument.
 SortedSet getRevisions()
          Returns the list of CvsRevisions of this file, sorted from earliest to most recent.
 boolean hasAuthor(Author author)
          Returns true, if author worked on this file.
 boolean isDead()
          Returns true if the latest revision of this file was a deletion.
 String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CvsFile

public CvsFile(String name,
               Directory directory)
Creates a CvsFile object.

Parameters:
name - The full name of the file
directory - the directory where the file resides
Method Detail

getFilenameWithPath

public String getFilenameWithPath()
Returns the full filename.

Returns:
the full filename

getFilename

public String getFilename()
Returns the filename without path.

Returns:
the filename without path

getDirectory

public Directory getDirectory()
Returns the file's Directory.

Returns:
the file's Directory

getLatestRevision

public CvsRevision getLatestRevision()
Gets the latest revision of this file.

Returns:
the latest revision of this file

getInitialRevision

public CvsRevision getInitialRevision()
Gets the earliest revision of this file.

Returns:
the earliest revision of this file

getRevisions

public SortedSet getRevisions()
Returns the list of CvsRevisions of this file, sorted from earliest to most recent.

Returns:
a SortedSet of CvsRevisions

getCurrentLinesOfCode

public int getCurrentLinesOfCode()
Returns the current number of lines for this file. Binary files and deleted files are assumed to have 0 lines.

Returns:
the current number of lines for this file

isDead

public boolean isDead()
Returns true if the latest revision of this file was a deletion.

Returns:
true if this file is deleted

hasAuthor

public boolean hasAuthor(Author author)
Returns true, if author worked on this file.

Parameters:
author - The Author to search for
Returns:
true, if the author is listed in one of this file's revisions

getPreviousRevision

public CvsRevision getPreviousRevision(CvsRevision revision)
Returns the revision which was replaced by the revision given as argument. Returns null if the given revision is the initial revision of this file.

Parameters:
revision - a revision of this file
Returns:
this revision's predecessor

toString

public String toString()


compareTo

public int compareTo(Object other)
Compares this file to another one, based on filename.

Specified by:
compareTo in interface Comparable
See Also:
Comparable.compareTo(java.lang.Object)

addInitialRevision

public CvsRevision addInitialRevision(String revisionNumber,
                                      Author author,
                                      Date date,
                                      String comment,
                                      int lines)
Adds an initial revision to the file. An initial revision is either the first revision of the file, or a re-add after the file was deleted.

Parameters:
revisionNumber - the revision number, for example "1.1"
author - the login from which the change was committed
date - the time when the change was committed
comment - the commit message
lines - the number of lines of the new file

addChangeRevision

public CvsRevision addChangeRevision(String revisionNumber,
                                     Author author,
                                     Date date,
                                     String comment,
                                     int lines,
                                     int linesDelta,
                                     int replacedLines)
Adds a change revision to the file.

Parameters:
revisionNumber - the revision number, for example "1.1"
author - the login from which the change was committed
date - the time when the change was committed
comment - the commit message
lines - the number of lines in the file after the change
linesDelta - the change in the number of lines
replacedLines - number of lines that were removed and replaced by others

addDeletionRevision

public CvsRevision addDeletionRevision(String revisionNumber,
                                       Author author,
                                       Date date,
                                       String comment,
                                       int lines)
Adds a deletion revision to the file.

Parameters:
revisionNumber - the revision number, for example "1.1"
author - the login from which the change was committed
date - the time when the change was committed
comment - the commit message
lines - the number of lines in the file before it was deleted

addBeginOfLogRevision

public CvsRevision addBeginOfLogRevision(Date date,
                                         int lines)
Adds a "begin of log" revision to the file. This kind of revision only marks the beginning of the log timespan if the file was already present in the repository at this time. It is not an actual revision committed by an author.

Parameters:
date - the begin of the log
lines - the number of lines in the file at that time