šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
changeset 52 a221785fe3ac
parent 43 4a4364826e59
child 61 9503eb8377f1
equal deleted inserted replaced
51:df1f942f7b69 52:a221785fe3ac
     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 			/**