diff --git a/src/main/java/Graphviz.java b/src/main/java/Graphviz.java index 00efbabcd5..12ccf4e0e5 100644 --- a/src/main/java/Graphviz.java +++ b/src/main/java/Graphviz.java @@ -1,5 +1,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; +import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.stream.JsonReader; @@ -8,6 +9,7 @@ import guru.nidi.graphviz.attribute.Label; import guru.nidi.graphviz.attribute.Records; import guru.nidi.graphviz.attribute.Style; +import guru.nidi.graphviz.engine.Engine; import guru.nidi.graphviz.engine.Format; import guru.nidi.graphviz.engine.GraphvizException; import guru.nidi.graphviz.model.Factory; @@ -24,12 +26,10 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Calendar; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.TimeZone; import org.mitre.synthea.engine.Module; import org.mitre.synthea.export.Exporter; @@ -278,8 +278,16 @@ private static void generateJsonModuleGraph(JsonObject module, File outputFolder File outputFile = outputFolder.toPath().resolve(relativePath + ".png").toFile(); outputFile.mkdirs(); - guru.nidi.graphviz.engine.Graphviz.fromGraph(g) + + try { + guru.nidi.graphviz.engine.Graphviz.fromGraph(g).engine(Engine.DOT) + .render(Format.PNG).toFile(outputFile); + } catch (guru.nidi.graphviz.engine.GraphvizException gve) { + if (gve.getMessage().contains("Command took too long to execute")) { + guru.nidi.graphviz.engine.Graphviz.fromGraph(g).engine(Engine.FDP) .render(Format.PNG).toFile(outputFile); + } + } } private static String getStateDescription(JsonObject state) { @@ -321,7 +329,13 @@ private static String getStateDescription(JsonObject state) { } break; case "SetAttribute": - String v = state.has("value") ? state.get("value").getAsString() : null; + String v = "null"; + if (state.has("value")) { + JsonElement e = state.get("value"); + if (e != null && e != JsonNull.INSTANCE) { + v = e.getAsString(); + } + } details.append("Set ").append(state.get("attribute").getAsString()).append(" = ").append(v); break; case "Symptom": diff --git a/src/main/java/org/mitre/synthea/helpers/ModuleOverrides.java b/src/main/java/org/mitre/synthea/helpers/ModuleOverrides.java index 26f3b66918..70371e9fc9 100644 --- a/src/main/java/org/mitre/synthea/helpers/ModuleOverrides.java +++ b/src/main/java/org/mitre/synthea/helpers/ModuleOverrides.java @@ -148,6 +148,8 @@ private void processModule(Path modulesPath, Path modulePath, List lines } try { + moduleFilename = moduleFilename.replace(" ", "\\ ").replace(":", "\\:"); + String moduleRelativePath = modulesPath.getParent().relativize(modulePath).toString(); JsonReader reader = new JsonReader(new StringReader( Utilities.readResource(moduleRelativePath)));