1.1 --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Thu Jul 05 19:10:42 2012 +0200
1.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Thu Jul 05 20:25:21 2012 +0200
1.3 @@ -40,6 +40,12 @@
1.4 */
1.5 public class Skriptování {
1.6
1.7 + private enum FORMÁT {
1.8 +
1.9 + xml,
1.10 + xhtml,
1.11 + text
1.12 + }
1.13 /**
1.14 * klíč = jazyk – např. bash
1.15 * hodnota = interpret – např. /bin/bash
1.16 @@ -70,7 +76,7 @@
1.17 */
1.18 public static Source interpretuj(String skriptText, String skriptSoubor, String jazyk, String výstupníFormát, String uriStránky, String nadpisStránky, String perexStránky) throws Exception {
1.19 String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky);
1.20 - return vyrobXml(výstupSkriptu, "xml".equals(výstupníFormát));
1.21 + return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát));
1.22 }
1.23
1.24 private static String získejVýstupSkriptu(String skriptText, String skriptSoubor, String jazyk, String uriStránky, String nadpisStránky, String perexStránky) throws Exception {
1.25 @@ -169,26 +175,29 @@
1.26 return !(s == null || s.trim().isEmpty());
1.27 }
1.28
1.29 + private static FORMÁT zjistiFormát(String výstupníFormát) {
1.30 + try {
1.31 + return FORMÁT.valueOf(výstupníFormát);
1.32 + } catch (NullPointerException e) {
1.33 + return FORMÁT.text;
1.34 + } catch (IllegalArgumentException e) {
1.35 + return FORMÁT.text;
1.36 + }
1.37 + }
1.38 +
1.39 /**
1.40 * @param zadání výstup vygenerovaný skriptem
1.41 * @param xmlFormát formát zadání: true = xml fragment | false = prostý text
1.42 * @return xml fragment nebo prostý text zabalený do html/body
1.43 * @throws Exception
1.44 */
1.45 - private static Source vyrobXml(String zadání, boolean xmlFormát) throws Exception {
1.46 + private static Source vyrobXml(String zadání, FORMÁT formát) throws Exception {
1.47 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
1.48 DocumentBuilder db = dbf.newDocumentBuilder();
1.49 Document d;
1.50
1.51 - if (xmlFormát) {
1.52 - try {
1.53 - zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
1.54 - d = db.parse(new ByteArrayInputStream(zadání.getBytes()));
1.55 - } catch (Exception e) {
1.56 - System.err.println("Chyba: Skript vrátil neplatné XML.");
1.57 - throw e;
1.58 - }
1.59 - } else {
1.60 +
1.61 + if (formát == FORMÁT.text) {
1.62 d = db.newDocument();
1.63 Node html = d.createElementNS(XHTML, "html");
1.64 Node body = d.createElementNS(XHTML, "body");
1.65 @@ -196,6 +205,16 @@
1.66 body.appendChild(text);
1.67 html.appendChild(body);
1.68 d.appendChild(html);
1.69 + } else {
1.70 + if (formát == FORMÁT.xhtml) {
1.71 + zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
1.72 + }
1.73 + try {
1.74 + d = db.parse(new ByteArrayInputStream(zadání.getBytes()));
1.75 + } catch (Exception e) {
1.76 + System.err.println("Chyba: Skript vrátil neplatné XML.");
1.77 + throw e;
1.78 + }
1.79 }
1.80
1.81 return new DOMSource(d);