net.sourceforge.cobertura.util

Class FileFinder

public class FileFinder extends Object

Maps source file names to existing files. After adding description of places files can be found in, it can be used to localize the files.

FileFinder supports two types of source files locations:

The difference between these two is that in case of the first you add all source files under the specified root directory, and in the second you add exactly one file. In both cases file to be found has to be located under subdirectory that maps to package definition provided with the source file name.

Author: Jeremy Thomerson

Field Summary
static LoggerLOGGER
SetsourceDirectories
MapsourceFilesMap
Method Summary
voidaddSourceDirectory(String directory)
Adds directory that is a root of sources.
voidaddSourceFile(String baseDir, String file)
Adds file by specifying root directory and relative path to the file in it.
StringgetCorrectedPath(String path)
FilegetFileForSource(String fileName)
Maps source file name to existing file.
ListgetSourceDirectoryList()
Returns a list with string for all source directories.
StringtoString()
Returns string representation of FileFinder.

Field Detail

LOGGER

private static Logger LOGGER

sourceDirectories

private Set sourceDirectories

sourceFilesMap

private Map sourceFilesMap

Method Detail

addSourceDirectory

public void addSourceDirectory(String directory)
Adds directory that is a root of sources. A source file that is under this directory will be found if relative path to the file from root matches package name.

Example:

 fileFinder.addSourceDirectory( "C:/MyProject/src/main");
 fileFinder.addSourceDirectory( "C:/MyProject/src/test");
 
In path both / and \ can be used.

Parameters: directory The root of source files

Throws: NullPointerException if directory is null

addSourceFile

public void addSourceFile(String baseDir, String file)
Adds file by specifying root directory and relative path to the file in it. Adds exactly one file, relative path should match package that the source file is in, otherwise it will be not found later.

Example:

 fileFinder.addSourceFile( "C:/MyProject/src/main", "com/app/MyClass.java");
 fileFinder.addSourceFile( "C:/MyProject/src/test", "com/app/MyClassTest.java");
 
In paths both / and \ can be used.

Parameters: baseDir sources root directory file path to source file relative to baseDir

Throws: NullPointerException if either baseDir or file is null

getCorrectedPath

private String getCorrectedPath(String path)

getFileForSource

public File getFileForSource(String fileName)
Maps source file name to existing file. When mapping file name first values that were added with FileFinder and later added with FileFinder are checked.

Parameters: fileName source file to be mapped

Returns: existing file that maps to passed sourceFile

Throws: IOException if cannot map source file to existing file NullPointerException if fileName is null

getSourceDirectoryList

public List getSourceDirectoryList()
Returns a list with string for all source directories. Example: [C:/MyProject/src/main,C:/MyProject/src/test]

Returns: list with Strings for all source roots, or empty list if no source roots were specified

toString

public String toString()
Returns string representation of FileFinder.