net.sourceforge.cobertura.util

Class FileFinder


public class FileFinder
extends java.lang.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

private static Logger
LOGGER
private Set
sourceDirectories
private Map
sourceFilesMap

Method Summary

void
addSourceDirectory(String directory)
Adds directory that is a root of sources.
void
addSourceFile(String baseDir, String file)
Adds file by specifying root directory and relative path to the file in it.
private String
getCorrectedPath(String path)
File
getFileForSource(String fileName)
Maps source file name to existing file.
List
getSourceDirectoryList()
Returns a list with string for all source directories.
String
toString()
Returns string representation of FileFinder.

Field Details

LOGGER

private static Logger LOGGER

sourceDirectories

private Set sourceDirectories

sourceFilesMap

private Map sourceFilesMap

Method Details

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

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

getCorrectedPath

private String getCorrectedPath(String path)

getFileForSource

public File getFileForSource(String fileName)
            throws IOException
Maps source file name to existing file. When mapping file name first values that were added with addSourceDirectory(String) and later added with addSourceFile(String,String) are checked.
Parameters:
fileName - source file to be mapped
Returns:
existing file that maps to passed sourceFile

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.