package jetbrains.buildServer.tools.errors;
import jetbrains.buildServer.tools.LazyMap;
import jetbrains.buildServer.tools.ScanFile;
import org.jetbrains.annotations.NotNull;
/**
* Created 03.07.13 20:59
*
* @author Eugene Petrenko (eugene.petrenko@jetbrains.com)
*/
public class ReportShortFileError {
private final PathsCalculator myPaths;
private final String myShortFile;
private final LazyMap<String, ReportLongFileError> myLongErrors = new LazyMap<String, ReportLongFileError>() {
@NotNull
@Override
protected ReportLongFileError computeValue(@NotNull String s) {
return new ReportLongFileError(s);
}
};
public ReportShortFileError(@NotNull final PathsCalculator paths, @NotNull final String shortFile) {
myPaths = paths;
myShortFile = shortFile;
}
public void addCheckError(@NotNull final ScanFile file, @NotNull final String message) {
myLongErrors.get(myPaths.path(file)).addCheckError(message);
}
public void render(@NotNull RenderMode mode, @NotNull final LogWriter writer) {
if (myLongErrors.isEmpty()) return;
writer.println(myShortFile);
if (mode != RenderMode.FULL) return;
for (ReportLongFileError error : myLongErrors.values()) {
error.render(mode, writer.offset());
}
}
public int getNumberOfErrors() {
int sz = 0;
for (ReportLongFileError error : myLongErrors.values()) {
sz += error.getNumberOfErrors();
}
return sz;
}
}