package net.unit8.waitt.feature.jacoco;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.List;
import org.jacoco.report.ISourceFileLocator;
/**
*
* @author kawasima
*/
public class SourceFileCollection implements ISourceFileLocator {
private final List<File> sourceRoots;
private final String encoding;
public SourceFileCollection(final List<File> sourceRoots, final String encoding) {
this.sourceRoots = sourceRoots;
this.encoding = encoding;
}
@Override
public Reader getSourceFile(final String packageName, final String fileName) throws IOException {
final String r;
if (packageName.length() > 0) {
r = packageName + '/' + fileName;
} else {
r = fileName;
}
for (final File sourceRoot : sourceRoots) {
final File file = new File(sourceRoot, r);
if (file.exists() && file.isFile()) {
return new InputStreamReader(new FileInputStream(file), encoding);
}
}
return null;
}
@Override
public int getTabWidth() {
return 4;
}
}