# Class Directory

java.lang.Object
net.sf.statcvs.model.Directory

All Implemented Interfaces:
  `Comparable`

public abstract class Directory extends Object implements Comparable
Represents a directory in the `Repository`, a container for `VersionedFile`s and sub`Directory`s. A new root directory is created by `createRoot()`. The `createSubdirectory(String)` method creates new subdirectories. TODO: Rename getCurrentLOC to getCurrentLines or getCurrentLineCount

Version:
  $Id: Directory.java,v 1.11 2008/04/02 11:22:16 benoitx Exp $
Author:
  Richard Cyganiak invalid input: '<'richard@cyganiak.de>

## Constructor Summary

Constructors
Constructor
Description
`Directory()`

## Method Summary

Modifier and Type
Method
Description
`int`
`compareTo(Object o)`
Compares this directory to another one, based on their full names.
`static Directory`
`createRoot()`
Factory method for creating a new root directory.
`Directory`
`createSubdirectory(String name)`
Factory method for creating a new subdirectory.
`int`
`getCurrentFileCount()`
Returns the number of files in this directory.
`int`
`getCurrentLOC()`
Returns the number of lines in this directory.
`abstract int`
`getDepth()`
Returns the level of this directory in the direcotry tree.
`SortedSet`
`getFiles()`
Returns all `VersionedFile` objects in this directory, ordered by filename.
`abstract String`
`getName()`
Returns the directory's name without full path or any slashes, for example "src".
`abstract Directory`
`getParent()`
Returns the directory's parent directory or `null` if it is the root
`abstract String`
`getPath()`
Returns the directory's full path with trailing slash, for example "src/net/sf/statcvs/".
`SortedSet`
`getRevisions()`
Returns all `Revision`s to files in this directory, in order from oldest to most recent.
`SortedSet`
`getSubdirectories()`
Returns a `SortedSet` of all immediate subdirectories, ordered by name.
`SortedSet`
`getSubdirectoriesRecursive()`
Returns a list of all subdirectories, including their subdirectories and this directory itself.
`boolean`
`isEmpty()`
Returns `true` if all files in this directory and its subdirectories are deleted, or if it doesn't have any files and subdirectories at all.
`abstract boolean`
`isRoot()`
Returns `true` if this is the root of the directory tree.

### Methods inherited from class Object

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

## Constructor Details

### Directory

public Directory()

## Method Details

### createRoot

public static Directory createRoot()
Factory method for creating a new root directory.

Returns:
  a new root directory

### createSubdirectory

public Directory createSubdirectory(String name)
Factory method for creating a new subdirectory.

Parameters:
  `name` - the subdirectory's name
Returns:
  the subdirectory instance

### getName

public abstract String getName()
Returns the directory's name without full path or any slashes, for example "src".

Returns:
  the directory's name

### getPath

public abstract String getPath()
Returns the directory's full path with trailing slash, for example "src/net/sf/statcvs/".

Returns:
  the directory's path

### getParent

public abstract Directory getParent()
Returns the directory's parent directory or `null` if it is the root

Returns:
  the directory's parent.

### isRoot

public abstract boolean isRoot()
Returns `true` if this is the root of the directory tree.

Returns:
  `true` if this is the root of the directory tree

### getDepth

public abstract int getDepth()
Returns the level of this directory in the direcotry tree. The root has level 0, its subdirectories have level 1, and so forth.

Returns:
  the level of this directory in the directory tree

### getFiles

public SortedSet getFiles()
Returns all `VersionedFile` objects in this directory, ordered by filename. Files in subdirectories are not included.

Returns:
  the files in this directory

### getRevisions

public SortedSet getRevisions()
Returns all `Revision`s to files in this directory, in order from oldest to most recent.

Returns:
  list of `Revision`s for this directory

### getSubdirectories

public SortedSet getSubdirectories()
Returns a `SortedSet` of all immediate subdirectories, ordered by name.

Returns:
  `SortedSet` of `Directory` objects

### getSubdirectoriesRecursive

public SortedSet getSubdirectoriesRecursive()
Returns a list of all subdirectories, including their subdirectories and this directory itself. The list is preordered, beginning with this directory itself.

Returns:
  `SortedSet` of `Directory` objects

### getCurrentLOC

public int getCurrentLOC()
Returns the number of lines in this directory. The returned number will be for the current revisions of all files.

Returns:
  lines in this directory

### getCurrentFileCount

public int getCurrentFileCount()
Returns the number of files in this directory. Deleted files are not counted.

Returns:
  number of files in this directory

### isEmpty

public boolean isEmpty()
Returns `true` if all files in this directory and its subdirectories are deleted, or if it doesn't have any files and subdirectories at all.

Returns:
  `true` if the directory is currently empty

### compareTo

public int compareTo(Object o)
Compares this directory to another one, based on their full names.

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