1 package cz.frantovo.xmlWebGenerator; |
1 package cz.frantovo.xmlWebGenerator; |
2 |
2 |
3 import java.io.File; |
3 import java.io.File; |
4 import java.io.FileInputStream; |
|
5 import java.io.IOException; |
4 import java.io.IOException; |
6 import java.io.PrintStream; |
5 import java.io.PrintStream; |
7 import java.util.Date; |
6 import java.util.Date; |
8 import java.net.URI; |
7 import java.net.URI; |
9 import java.net.URISyntaxException; |
8 import java.net.URISyntaxException; |
21 public class Funkce { |
20 public class Funkce { |
22 |
21 |
23 private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize"; |
22 private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize"; |
24 private static final String PŘÍKAZ_DOT = "dot"; |
23 private static final String PŘÍKAZ_DOT = "dot"; |
25 private static final String PŘÍKAZ_MARKDOWN = "markdown"; |
24 private static final String PŘÍKAZ_MARKDOWN = "markdown"; |
26 private static final String ADRESÁŘ_VSTUPNÍ = "vstup"; |
|
27 private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup"; |
25 private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup"; |
28 private static int počítadloDiagramů = 0; |
26 private static int počítadloDiagramů = 0; |
29 |
27 |
30 /** |
28 /** |
31 * Zjištuje, kdy byl naposledy daný soubor změněn. |
29 * Zjištuje, kdy byl naposledy daný soubor změněn. |
96 } |
94 } |
97 |
95 |
98 /** |
96 /** |
99 * Vytvoří obrázek s diagramem. |
97 * Vytvoří obrázek s diagramem. |
100 * @param zadání definice diagramu ve formátu dot |
98 * @param zadání definice diagramu ve formátu dot |
101 * @param vodorovně zda má být graf orientovaný vodorovně |
99 * @param vodorovně zda má být graf orientovaný vodorovně (funguje jen při <code>kompletní = false</code>) |
|
100 * @param kompletní false, pokud k zadání chceme doplnit <code>digraph d {…}</code> |
102 * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě. |
101 * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě. |
103 */ |
102 */ |
104 public static String vytvořDiagram(String zadání, boolean vodorovně) throws IOException, InterruptedException { |
103 public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní) throws IOException, InterruptedException { |
105 if (isPříkazDostupný(PŘÍKAZ_DOT)) { |
104 if (isPříkazDostupný(PŘÍKAZ_DOT)) { |
106 počítadloDiagramů++; |
105 počítadloDiagramů++; |
107 String soubor = "diagram-" + počítadloDiagramů; |
106 String soubor = "diagram-" + počítadloDiagramů; |
108 String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor; |
107 String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor; |
109 |
108 |
110 StringBuilder zdroják = new StringBuilder(zadání.length() + 200); |
109 String zdroják; |
111 |
110 if (kompletní) { |
112 zdroják.append("digraph d {\n"); |
111 zdroják = zadání; |
113 zdroják.append("\tbgcolor=\"transparent\";\n"); |
112 } else { |
114 if (vodorovně) { |
113 StringBuilder b = new StringBuilder(zadání.length() + 200); |
115 zdroják.append("\trankdir=LR;"); |
114 b.append("digraph d {\n"); |
|
115 b.append("\tbgcolor=\"transparent\";\n"); |
|
116 if (vodorovně) { |
|
117 b.append("\trankdir=LR;"); |
|
118 } |
|
119 b.append(zadání); |
|
120 b.append("}\n"); |
|
121 zdroják = b.toString(); |
116 } |
122 } |
117 zdroják.append(zadání); |
|
118 zdroják.append("}\n"); |
|
119 |
123 |
120 Runtime r = Runtime.getRuntime(); |
124 Runtime r = Runtime.getRuntime(); |
121 Process p = r.exec(new String[]{PŘÍKAZ_DOT, "-T", "svg", "-o", souborSložka + ".svg"}); |
125 Process p = r.exec(new String[]{PŘÍKAZ_DOT, "-T", "svg", "-o", souborSložka + ".svg"}); |
122 |
126 |
123 /** |
127 /** |