šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java
changeset 108 8d9cab64c335
parent 107 379a2a893fd1
child 113 18bf0044f5ab
     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:13:56 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);