package jetbrains.buildServer.tools.errors; import jetbrains.buildServer.tools.ErrorKind; 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 ReportKindError { private final PathsCalculator myPaths; private final ErrorKind myKind; private final LazyMap<String, ReportShortFileError> myShortErrors = new LazyMap<String, ReportShortFileError>() { @NotNull @Override protected ReportShortFileError computeValue(@NotNull String shortFile) { return new ReportShortFileError(myPaths, shortFile); } }; public ReportKindError(@NotNull final PathsCalculator paths, @NotNull final ErrorKind kind) { myPaths = paths; myKind = kind; } public void addCheckError(@NotNull ScanFile file, @NotNull String message) { myShortErrors.get(myPaths.shortPath(file)).addCheckError(file, message); } public void render(@NotNull RenderMode mode, @NotNull LogWriter writer) { if (myShortErrors.isEmpty()) return; writer.println(myKind + " (" + getNumberOfErrors() + ")"); final LogWriter offset = writer.offset(); for (ReportShortFileError error : myShortErrors.values()) { error.render(mode, offset); } writer.println(); } public int getNumberOfErrors() { int sz = 0; for (ReportShortFileError error : myShortErrors.values()) { sz += error.getNumberOfErrors(); } return sz; } }