diff --git a/src/main/java/net/pingex/dcf/commands/audit/AuditResult.java b/src/main/java/net/pingex/dcf/commands/audit/AuditResult.java index ee54599..c24901f 100644 --- a/src/main/java/net/pingex/dcf/commands/audit/AuditResult.java +++ b/src/main/java/net/pingex/dcf/commands/audit/AuditResult.java @@ -1,5 +1,7 @@ package net.pingex.dcf.commands.audit; +import java.util.AbstractMap; +import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -76,15 +78,10 @@ public class AuditResult } /** - * All the possible result codes for an andit and its component. + * All the possible result codes for an andit. */ - public enum ResultCode + public enum ResultCode implements Comparable { - /** - * The test passed without any issue. - */ - PASS, - /** * The audit failed. */ @@ -95,9 +92,76 @@ public class AuditResult */ WARN, + /** + * The test passed without any issue. + */ + PASS, + /** * Test was ignored. */ NOOP } + + /** + * Helper class to construct a proper AuditResult. + */ + public static class Builder + { + private ResultCode opcode; + private String message; + private List> subAuditsResults = new ArrayList<>(); + + public Builder setOpcode(ResultCode opcode) + { + this.opcode = opcode; + return this; + } + + public Builder setMessage(String message) + { + this.message = message; + return this; + } + + public Builder appendAuditResult(IAuditComponentProvider provider, AuditResult result) + { + appendAuditResult(new AbstractMap.SimpleEntry(provider, result)); + return this; + } + + public Builder appendAuditResult(Entry entry) + { + subAuditsResults.add(entry); + return this; + } + + public List> getSubAuditsResults() + { + return subAuditsResults; + } + + public ResultCode getOpcode() + { + return opcode; + } + + public String getMessage() + { + return message; + } + + public AuditResult build() + { + return new AuditResult(opcode, message, subAuditsResults.isEmpty() ? null : subAuditsResults); + } + } + + /** + * Fork a new builder. + */ + public static Builder builder() + { + return new Builder(); + } }