diff -r 379a2a893fd1 -r 7d4b23ccf144 šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Thu Jul 05 19:10:42 2012 +0200 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Fri Jul 06 13:41:35 2012 +0200 @@ -40,6 +40,12 @@ */ public class Skriptování { + private enum FORMÁT { + + xml, + xhtml, + text + } /** * klíč = jazyk – např. bash * hodnota = interpret – např. /bin/bash @@ -70,7 +76,7 @@ */ 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 { String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); - return vyrobXml(výstupSkriptu, "xml".equals(výstupníFormát)); + return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát)); } private static String získejVýstupSkriptu(String skriptText, String skriptSoubor, String jazyk, String uriStránky, String nadpisStránky, String perexStránky) throws Exception { @@ -169,26 +175,29 @@ return !(s == null || s.trim().isEmpty()); } + private static FORMÁT zjistiFormát(String výstupníFormát) { + try { + return FORMÁT.valueOf(výstupníFormát); + } catch (NullPointerException e) { + return FORMÁT.text; + } catch (IllegalArgumentException e) { + return FORMÁT.text; + } + } + /** * @param zadání výstup vygenerovaný skriptem * @param xmlFormát formát zadání: true = xml fragment | false = prostý text * @return xml fragment nebo prostý text zabalený do html/body * @throws Exception */ - private static Source vyrobXml(String zadání, boolean xmlFormát) throws Exception { + private static Source vyrobXml(String zadání, FORMÁT formát) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document d; - if (xmlFormát) { - try { - zadání = "" + zadání + ""; - d = db.parse(new ByteArrayInputStream(zadání.getBytes())); - } catch (Exception e) { - System.err.println("Chyba: Skript vrátil neplatné XML."); - throw e; - } - } else { + + if (formát == FORMÁT.text) { d = db.newDocument(); Node html = d.createElementNS(XHTML, "html"); Node body = d.createElementNS(XHTML, "body"); @@ -196,6 +205,16 @@ body.appendChild(text); html.appendChild(body); d.appendChild(html); + } else { + if (formát == FORMÁT.xhtml) { + zadání = "" + zadání + ""; + } + try { + d = db.parse(new ByteArrayInputStream(zadání.getBytes())); + } catch (Exception e) { + System.err.println("Chyba: Skript vrátil neplatné XML."); + throw e; + } } return new DOMSource(d);