šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java
changeset 108 8d9cab64c335
parent 107 379a2a893fd1
child 113 18bf0044f5ab
--- 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	Thu Jul 05 20:13:56 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í = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
-				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í = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
+			}
+			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);