diff --git a/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java b/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java index b5d2988..8b56f46 100644 --- a/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java +++ b/src/main/java/com/bartek/esa/formatter/formatter/ColorFormatter.java @@ -1,6 +1,7 @@ package com.bartek.esa.formatter.formatter; import com.bartek.esa.core.desc.provider.DescriptionProvider; +import com.bartek.esa.core.model.enumeration.Severity; import com.bartek.esa.core.model.object.Issue; import com.bartek.esa.formatter.archetype.Formatter; import org.fusesource.jansi.Ansi; @@ -16,6 +17,10 @@ import static org.fusesource.jansi.Ansi.Color.*; import static org.fusesource.jansi.Ansi.ansi; public class ColorFormatter implements Formatter { + private static final Ansi.Color INFO_COLOR = GREEN; + private static final Ansi.Color WARNING_COLOR = YELLOW; + private static final Ansi.Color ERROR_COLOR = MAGENTA; + private static final Ansi.Color VULNERABILITY_COLOR = RED; private final DescriptionProvider descriptionProvider; @@ -39,6 +44,7 @@ public class ColorFormatter implements Formatter { .collect(Collectors.joining()); System.out.println(format.substring(0, format.length() - 2)); + System.out.println(printSummary(issues)); AnsiConsole.systemUninstall(); } @@ -95,8 +101,32 @@ public class ColorFormatter implements Formatter { return ansi; } + private String printSummary(Set issues) { + Ansi ansi = ansi(); + ansi.a("\n--- Total:\n"); + Arrays.stream(Severity.values()) + .forEach(severity -> ansi.fg(getColorForSeverity(severity)) + .a(severity.name()) + .a(": ") + .reset() + .a(countIssuesBySeverity(issues, severity)) + .a("\n")); + return ansi.toString(); + } + + private long countIssuesBySeverity(Set issues, Severity severity) { + return issues.stream() + .map(Issue::getSeverity) + .filter(severity::equals) + .count(); + } + private Ansi.Color getColorForSeverity(Issue issue) { - switch (issue.getSeverity()) { + return getColorForSeverity(issue.getSeverity()); + } + + private Ansi.Color getColorForSeverity(Severity severity) { + switch (severity) { case INFO: return GREEN; case WARNING: diff --git a/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java b/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java index 8294849..7644ce0 100644 --- a/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java +++ b/src/main/java/com/bartek/esa/formatter/formatter/SimpleFormatter.java @@ -1,10 +1,12 @@ package com.bartek.esa.formatter.formatter; import com.bartek.esa.core.desc.provider.DescriptionProvider; +import com.bartek.esa.core.model.enumeration.Severity; import com.bartek.esa.core.model.object.Issue; import com.bartek.esa.formatter.archetype.Formatter; import javax.inject.Inject; +import java.util.Arrays; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -30,6 +32,7 @@ public class SimpleFormatter implements Formatter { .collect(Collectors.joining()); System.out.println(format.substring(0, format.length() - 2)); + System.out.println(printSummary(issues)); } private String format(Issue issue) { @@ -71,4 +74,23 @@ public class SimpleFormatter implements Formatter { format.append(line).append("\n"); }); } + + private String printSummary(Set issues) { + StringBuilder format = new StringBuilder(); + format.append("\n--- Total:\n"); + Arrays.stream(Severity.values()) + .forEach(severity -> format + .append(severity.name()) + .append(": ") + .append(countIssuesBySeverity(issues, severity)) + .append("\n")); + return format.toString(); + } + + private long countIssuesBySeverity(Set issues, Severity severity) { + return issues.stream() + .map(Issue::getSeverity) + .filter(severity::equals) + .count(); + } }