diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/CanonicalResourceComparer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/CanonicalResourceComparer.java index a27616c2f..e615be219 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/CanonicalResourceComparer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/CanonicalResourceComparer.java @@ -94,15 +94,9 @@ public abstract class CanonicalResourceComparer extends ResourceComparer { } s = s + "Comparison"; s = s + ""+outcomeSummary()+""; - return ""+s+"\r\n"; + return ""+s+"\r\n"; } - protected boolean hasErrors() { - MessageCounts cnts = new MessageCounts(); - countMessages(cnts); - return cnts.getErrors() > 0; - } - @Override protected void countMessages(MessageCounts cnts) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/ResourceComparer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/ResourceComparer.java index 28a84e423..7577e0f9c 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/ResourceComparer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/comparison/ResourceComparer.java @@ -51,6 +51,7 @@ public class ResourceComparer { private String id; private String leftId; private String rightId; + private MessageCounts cnts; public ResourceComparison(String leftId, String rightId) { super(); @@ -85,15 +86,42 @@ public class ResourceComparer { protected abstract String toTable(); + protected String color() { + if (hasErrors()) { + return COLOR_DIFFERENT; + } else if (noChange()) { + return COLOR_NO_CHANGE; + } else { + return COLOR_DIFFERENT_LESS; + } + } + + protected boolean hasErrors() { + MessageCounts cnts = getCounts(); + return cnts.getErrors() > 0; + } + + protected boolean noChange() { + MessageCounts cnts = getCounts(); + return cnts.getErrors() + cnts.getWarnings() + cnts.getHints() == 0; + } + protected String outcomeSummary() { - MessageCounts cnts = new MessageCounts(); - countMessages(cnts); + MessageCounts cnts = getCounts(); return Integer.toString(cnts.getErrors())+" "+Utilities.pluralize("Breaking Change", cnts.getErrors())+", "+ Integer.toString(cnts.getWarnings())+" "+Utilities.pluralize("Change", cnts.getWarnings())+", "+ Integer.toString(cnts.getHints())+" "+Utilities.pluralize("Note", cnts.getHints()); } + public MessageCounts getCounts() { + if (cnts == null) { + cnts = new MessageCounts(); + countMessages(cnts); + } + return cnts; + } + protected abstract void countMessages(MessageCounts cnts); } @@ -190,6 +218,7 @@ public class ResourceComparer { public final static String COLOR_DIFFERENT = "#f0b3ff"; public final static String COLOR_DIFFERENT_LESS = "#f8e6ff"; public final static String COLOR_ISSUE = "#ffad99"; + public final static String COLOR_NO_CHANGE = "#ffffff"; protected ComparisonSession session;