šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
changeset 38 43505795334d
parent 37 2e4e7891a2f7
child 40 487f13126b62
equal deleted inserted replaced
37:2e4e7891a2f7 38:43505795334d
     1 package cz.frantovo.xmlWebGenerator;
     1 package cz.frantovo.xmlWebGenerator;
     2 
     2 
     3 import java.io.BufferedReader;
       
     4 import java.io.File;
     3 import java.io.File;
     5 import java.io.IOException;
     4 import java.io.IOException;
     6 import java.io.InputStream;
       
     7 import java.io.InputStreamReader;
       
     8 import java.io.PrintStream;
     5 import java.io.PrintStream;
     9 import java.util.Date;
     6 import java.util.Date;
    10 import java.net.URI;
     7 import java.net.URI;
    11 import java.net.URISyntaxException;
     8 import java.net.URISyntaxException;
       
     9 import static cz.frantovo.xmlWebGenerator.NástrojeCLI.*;
    12 
    10 
    13 /**
    11 /**
    14  * Knihovna funkcí volaných z XSLT.
    12  * Knihovna funkcí volaných z XSLT.
    15  *  
    13  *  
    16  * TODO:
    14  * TODO:
    22 public class Funkce {
    20 public class Funkce {
    23 
    21 
    24 	private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
    22 	private static final String PŘÍKAZ_PYGMENTIZE = "pygmentize";
    25 	private static final String PŘÍKAZ_DOT = "dot";
    23 	private static final String PŘÍKAZ_DOT = "dot";
    26 	private static final String PŘÍKAZ_MARKDOWN = "markdown";
    24 	private static final String PŘÍKAZ_MARKDOWN = "markdown";
    27 	private static final String PŘÍKAZ_WHICH = "which";
       
    28 	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
    25 	private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup";
    29 	private static int počítadloDiagramů = 0;
    26 	private static int počítadloDiagramů = 0;
    30 
    27 
    31 	/**
    28 	/**
    32 	 * Zjištuje, kdy byl naposledy daný soubor změněn.
    29 	 * Zjištuje, kdy byl naposledy daný soubor změněn.
   181 			System.err.println("\t$ aptitude install markdown         # (Debian/Ubuntu)");
   178 			System.err.println("\t$ aptitude install markdown         # (Debian/Ubuntu)");
   182 			System.err.println("\t$ yum install perl-Text-Markdown    # (Fedora/RedHat)");
   179 			System.err.println("\t$ yum install perl-Text-Markdown    # (Fedora/RedHat)");
   183 			return null;
   180 			return null;
   184 		}
   181 		}
   185 	}
   182 	}
   186 
       
   187 	/**
       
   188 	 * Čte proud dat dokud to jde a výsledek pak vrátí jako text.
       
   189 	 * @param proud vstupní proud
       
   190 	 * @return obsah proudu jako text
       
   191 	 * @throws IOException 
       
   192 	 */
       
   193 	private static String načtiProud(InputStream proud) throws IOException {
       
   194 		StringBuilder výsledek = new StringBuilder();
       
   195 		BufferedReader buf = new BufferedReader(new InputStreamReader(proud));
       
   196 		while (true) {
       
   197 			String radek = buf.readLine();
       
   198 			if (radek == null) {
       
   199 				break;
       
   200 			} else {
       
   201 				výsledek.append(radek);
       
   202 				výsledek.append("\n");
       
   203 			}
       
   204 		}
       
   205 		return výsledek.toString();
       
   206 	}
       
   207 
       
   208 	/**
       
   209 	 * Pomocí programu which zjistí, jestli je daný příkaz v systému přítomný.
       
   210 	 * @param příkaz jehož přítomnost zjišťujeme
       
   211 	 * @return true pokud příkaz v systému existuje
       
   212 	 */
       
   213 	private static boolean isPříkazDostupný(String příkaz) {
       
   214 		try {
       
   215 			Runtime r = Runtime.getRuntime();
       
   216 			Process p = r.exec(new String[]{PŘÍKAZ_WHICH, příkaz});
       
   217 			p.waitFor();
       
   218 			return p.exitValue() == 0;
       
   219 		} catch (Exception e) {
       
   220 			System.err.printf("Při zjišťování dostupnosti příkazu „%s“ došlo k chybě: %s", příkaz, e.getLocalizedMessage());
       
   221 			return false;
       
   222 		}
       
   223 	}
       
   224 }
   183 }