--- 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);