package net.objectlab.kit.pf.validator; import java.util.ArrayList; import java.util.List; import net.objectlab.kit.pf.ExistingPortfolio; import net.objectlab.kit.pf.RuleIssue; import net.objectlab.kit.pf.Severity; import net.objectlab.kit.pf.ValidationResults; import net.objectlab.kit.util.StringUtil; import org.apache.commons.lang.StringUtils; public class Results implements ValidationResults { private final List<ValidatedPortfolioLineImpl> lines = new ArrayList<>(); private final List<RuleIssue> issues = new ArrayList<>(); public Results(final ExistingPortfolio p) { p.getLines().forEach(t -> lines.add(new ValidatedPortfolioLineImpl(t, this))); } @Override public boolean isValid() { return issues.isEmpty(); } @Override public List<RuleIssue> getIssues() { return issues; } public void addIssue(final Severity sev, final String ruleName, final String message, ValidatedPortfolioLineImpl line) { issues.add(new RuleIssueImpl(sev, ruleName, message, line)); } @Override public List<ValidatedPortfolioLineImpl> getLines() { return lines; } @Override public String toString() { StringBuilder b = new StringBuilder(); b.append(StringUtils.leftPad(StringUtils.abbreviate("Code", 20), 20)); b.append(StringUtils.leftPad(StringUtils.abbreviate("Asset name", 30), 31)); b.append(StringUtils.leftPad(StringUtils.abbreviate("Quantity", 10), 11)); b.append(StringUtils.leftPad(StringUtils.abbreviate("Value", 10), 11)); b.append(StringUtils.leftPad(StringUtils.abbreviate("Weight", 10), 11)); b.append(StringUtils.leftPad(StringUtils.abbreviate(" Validation Issues", 250), 12)); b.append(StringUtil.NEW_LINE); lines.forEach(t -> b.append(t.toString()).append(StringUtil.NEW_LINE)); return b.toString(); } // @Override // public String toString() { // final StringBuilder b = new StringBuilder(); // boolean first = true; // for (RuleIssue issue : issues) { // if (!first) { // b.append(StringUtil.NEW_LINE).append(StringUtils.repeat(" ", 81)); // } // b.append(issue.toString()); // first = false; // } // return b.toString(); // } }