From 22fdcbfcdabbbd405b93ff6050ef2e38cc942542 Mon Sep 17 00:00:00 2001 From: svenfeld Date: Sun, 4 Sep 2022 18:44:13 +0200 Subject: [PATCH 1/2] Path handling --- .../docgen/graphviz/StateMachineToGraphviz.java | 16 ++++++++++++---- src/main/java/de/upb/docgen/utils/Utils.java | 8 ++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/upb/docgen/graphviz/StateMachineToGraphviz.java b/src/main/java/de/upb/docgen/graphviz/StateMachineToGraphviz.java index d5932fc..6f757a8 100644 --- a/src/main/java/de/upb/docgen/graphviz/StateMachineToGraphviz.java +++ b/src/main/java/de/upb/docgen/graphviz/StateMachineToGraphviz.java @@ -13,6 +13,8 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -131,8 +133,11 @@ private static String getShortName(CrySLMethod label) { } public static void toPNG(String name) { - try { MutableGraph g = new Parser().read(new File("dotFSMs\\" + name +".dot")); - Graphviz.fromGraph(g).render(Format.SVG).toFile(new File("dotFSMs/" +name +".svg")); + try { + Path dot = Paths.get("dotFSMs", name + ".dot"); + MutableGraph g = new Parser().read(dot.toFile()); + Path svg = Paths.get("dotFSMs", name + ".svg"); + Graphviz.fromGraph(g).render(Format.SVG).toFile(svg.toFile()); } catch (IOException e) { e.printStackTrace(); @@ -140,8 +145,11 @@ public static void toPNG(String name) { } //reads the dot translation and creates a png file that is later used by the FTL template public static void toPNG(String name, String pathToRootpage) { - try { MutableGraph g = new Parser().read(new File(pathToRootpage+"\\"+"dotFSMs\\" + name +".dot")); - Graphviz.fromGraph(g).render(Format.SVG).toFile(new File(pathToRootpage+"/"+"dotFSMs/" +name +".svg")); + try { + Path dotPath = Paths.get(pathToRootpage, "dotFSMs", name + ".dot"); + MutableGraph g = new Parser().read(dotPath.toFile()); + Path svgPath = Paths.get(pathToRootpage, "dotFSMs", name + ".svg"); + Graphviz.fromGraph(g).render(Format.SVG).toFile(svgPath.toFile()); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/de/upb/docgen/utils/Utils.java b/src/main/java/de/upb/docgen/utils/Utils.java index 336d20b..aa8ee70 100644 --- a/src/main/java/de/upb/docgen/utils/Utils.java +++ b/src/main/java/de/upb/docgen/utils/Utils.java @@ -11,6 +11,8 @@ import java.io.*; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; /** @@ -143,7 +145,8 @@ public static Map>>> mapPredicates(Map Date: Sun, 4 Sep 2022 18:56:24 +0200 Subject: [PATCH 2/2] Fix template loader for unix systems --- .../upb/docgen/writer/FreeMarkerWriter.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/upb/docgen/writer/FreeMarkerWriter.java b/src/main/java/de/upb/docgen/writer/FreeMarkerWriter.java index 8ce4165..9906ead 100644 --- a/src/main/java/de/upb/docgen/writer/FreeMarkerWriter.java +++ b/src/main/java/de/upb/docgen/writer/FreeMarkerWriter.java @@ -9,6 +9,8 @@ import java.awt.*; import java.io.*; import java.net.URI; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.*; import java.util.List; @@ -30,7 +32,8 @@ public static void createSidebar(List composedRuleList, Configurat Map input = new HashMap(); input.put("title", "Sidebar"); input.put("rules", composedRuleList); - Template template = cfg.getTemplate(Utils.pathForTemplates(DocSettings.getInstance().getFtlTemplatesPath() + "/"+ "sidebar.ftl")); + Path sidebarFilePath = Paths.get(DocSettings.getInstance().getFtlTemplatesPath(),"sidebar.ftl"); + Template template = cfg.getTemplate(sidebarFilePath.toFile().getName()); // 2.3. Generate the output try (Writer fileWriter = new FileWriter(new File(DocSettings.getInstance().getReportDirectory() + File.separator+"navbar.html"))) { template.process(input, fileWriter); @@ -71,7 +74,8 @@ public static void createSinglePage(List composedRuleList, Configu input.put("booleanF", f); // 2.2. Get the template - Template template = cfg.getTemplate(Utils.pathForTemplates(DocSettings.getInstance().getFtlTemplatesPath() + "/"+"singleclass.ftl")); + File templateFile = new File(DocSettings.getInstance().getFtlTemplatesPath() + "/"+ "singleclass.ftl"); + Template template = cfg.getTemplate(templateFile.getName()); //create composedRules directory where single pages are stored new File(DocSettings.getInstance().getReportDirectory()+"/"+"composedRules/").mkdir(); @@ -88,7 +92,7 @@ public static void createSinglePage(List composedRuleList, Configu */ public static void setupFreeMarker(Configuration cfg) { // setup freemarker to load absolute paths - cfg.setTemplateLoader(new TemplateAbsolutePathLoader()); + //cfg.setTemplateLoader(new TemplateAbsolutePathLoader()); // Some other recommended settings: cfg.setDefaultEncoding("UTF-8"); cfg.setLocale(Locale.ENGLISH); @@ -103,18 +107,21 @@ public static void setupFreeMarker(Configuration cfg) { */ public static void createCogniCryptLayout(Configuration cfg) throws IOException, TemplateException { Map input = new HashMap(); - /* Not used anymore - Template headerTemplate = cfg.getTemplate(Utils.pathForTemplates(DocSettings.getInstance().getFtlTemplatesPath() + "/"+ "header.ftl")); - try (Writer fileWriter = new FileWriter(new File(DocSettings.getInstance().getReportDirectory() + File.separator+"header.html"))) { - headerTemplate.process(input, fileWriter); - } - */ - Template frontpageTemplate = cfg.getTemplate(Utils.pathForTemplates(DocSettings.getInstance().getFtlTemplatesPath() + "/"+ "frontpage.ftl")); + Path frontpageFilePath = Paths.get(DocSettings.getInstance().getFtlTemplatesPath(),"frontpage.ftl"); + File frontpageFile = frontpageFilePath.toFile(); + File templateDir = frontpageFile.getParentFile(); + if ( null == templateDir ){ + templateDir = new File("./"); + } + cfg.setDirectoryForTemplateLoading(templateDir); + Template frontpageTemplate = cfg.getTemplate(frontpageFile.getName()); try (Writer fileWriter = new FileWriter(new File(DocSettings.getInstance().getReportDirectory() + File.separator+"frontpage.html"))) { frontpageTemplate.process(input, fileWriter); } - Template rootpageTemplate = cfg.getTemplate(Utils.pathForTemplates(DocSettings.getInstance().getFtlTemplatesPath() + "/"+ "rootpage.ftl")); + + Path rootpageFilePath = Paths.get(DocSettings.getInstance().getFtlTemplatesPath(),"rootpage.ftl"); + Template rootpageTemplate = cfg.getTemplate(rootpageFilePath.toFile().getName()); try (Writer fileWriter = new FileWriter(new File(DocSettings.getInstance().getReportDirectory() + File.separator+"rootpage.html"))) { rootpageTemplate.process(input, fileWriter); }