java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java
changeset 148 784b3945c440
parent 134 4bd1e353c527
child 195 eb9bdedaedcf
     1.1 --- a/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java	Tue Jun 08 14:42:00 2010 +0200
     1.2 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java	Sun Jun 27 22:00:48 2010 +0200
     1.3 @@ -20,99 +20,99 @@
     1.4   */
     1.5  public class Komentare {
     1.6  
     1.7 -    private static final Logger log = Logger.getLogger(Komentare.class.getSimpleName());
     1.8 +	private static final Logger log = Logger.getLogger(Komentare.class.getSimpleName());
     1.9  
    1.10 -    /**
    1.11 -     * Escapuje XML a doplní XHTML zalomení na konce řádků.
    1.12 -     * @param komentar prostý text zadaný uživatelem
    1.13 -     * @return XHTML komentář bez kořenového elementu
    1.14 -     */
    1.15 -    public static String upravProstyText(String komentar) {
    1.16 -	return zalomRadky(escapujXML(komentar));
    1.17 -    }
    1.18 +	/**
    1.19 +	 * Escapuje XML a doplní XHTML zalomení na konce řádků.
    1.20 +	 * @param komentar prostý text zadaný uživatelem
    1.21 +	 * @return XHTML komentář bez kořenového elementu
    1.22 +	 */
    1.23 +	public static String upravProstyText(String komentar) {
    1.24 +		return zalomRadky(escapujXML(komentar));
    1.25 +	}
    1.26  
    1.27 -    /**
    1.28 -     * Pokud uživatel zapomněl na odstavce,
    1.29 -     * zalomíme řádky a zabalíme celý odstavec do jednoho odstavce
    1.30 -     * @param komentar komentář bez odstavců
    1.31 -     * @return komentář s odstavci
    1.32 -     */
    1.33 -    public static String upravXHTML(String komentar) {
    1.34 -	if (komentar.indexOf("<p>") == -1) {
    1.35 -	    return zalomRadky(komentar);
    1.36 -	} else {
    1.37 -	    return komentar;
    1.38 +	/**
    1.39 +	 * Pokud uživatel zapomněl na odstavce,
    1.40 +	 * zalomíme řádky a zabalíme celý odstavec do jednoho odstavce
    1.41 +	 * @param komentar komentář bez odstavců
    1.42 +	 * @return komentář s odstavci
    1.43 +	 */
    1.44 +	public static String upravXHTML(String komentar) {
    1.45 +		if (komentar.indexOf("<p>") == -1) {
    1.46 +			return zalomRadky(komentar);
    1.47 +		} else {
    1.48 +			return komentar;
    1.49 +		}
    1.50  	}
    1.51 -    }
    1.52  
    1.53 -    /**
    1.54 -     * Převede konce řádků na &lt;br/&gt;
    1.55 -     * a celé zabalí do &lt;p/&gt;
    1.56 -     * @param komentar text se zalomenými řádky
    1.57 -     * @return text s &lt;br/&gt; místo konců řádků
    1.58 -     */
    1.59 -    private static String zalomRadky(String komentar) {
    1.60 -	return "<p>" + komentar.replaceAll("\n", "<br/>") + "</p>";
    1.61 -    }
    1.62 +	/**
    1.63 +	 * Převede konce řádků na &lt;br/&gt;
    1.64 +	 * a celé zabalí do &lt;p/&gt;
    1.65 +	 * @param komentar text se zalomenými řádky
    1.66 +	 * @return text s &lt;br/&gt; místo konců řádků
    1.67 +	 */
    1.68 +	private static String zalomRadky(String komentar) {
    1.69 +		return "<p>" + komentar.replaceAll("\n", "<br/>") + "</p>";
    1.70 +	}
    1.71  
    1.72 -    /**
    1.73 -     *
    1.74 -     * @param komentar vstupní XHTML
    1.75 -     * @return XHTML obalené kořenovým elementem
    1.76 -     */
    1.77 -    public static String obal(String komentar) {
    1.78 -	return "<div>" + komentar + "</div>";
    1.79 -    }
    1.80 +	/**
    1.81 +	 *
    1.82 +	 * @param komentar vstupní XHTML
    1.83 +	 * @return XHTML obalené kořenovým elementem
    1.84 +	 */
    1.85 +	public static String obal(String komentar) {
    1.86 +		return "<div>" + komentar + "</div>";
    1.87 +	}
    1.88  
    1.89 -    /**
    1.90 -     * zkontroluje komentář oproti schématu.
    1.91 -     *
    1.92 -     * TODO: omezit maximální délku?
    1.93 -     * TODO: omezit komentáře?
    1.94 -     *
    1.95 -     * @param komentar
    1.96 -     * @return jestli komentář odpovídá
    1.97 -     */
    1.98 -    public static Document zkontroluj(String komentar) throws KomentarovaVyjimka {
    1.99 -	try {
   1.100 -	    URL soubor = Komentare.class.getClassLoader().getResource("cz/frantovo/nekurak/util/komentář.xsd");
   1.101 -	    SchemaFactory tovarnaSchemat = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
   1.102 -	    Schema schema = tovarnaSchemat.newSchema(soubor);
   1.103 +	/**
   1.104 +	 * zkontroluje komentář oproti schématu.
   1.105 +	 *
   1.106 +	 * TODO: omezit maximální délku?
   1.107 +	 * TODO: omezit komentáře?
   1.108 +	 *
   1.109 +	 * @param komentar
   1.110 +	 * @return jestli komentář odpovídá
   1.111 +	 */
   1.112 +	public static Document zkontroluj(String komentar) throws KomentarovaVyjimka {
   1.113 +		try {
   1.114 +			URL soubor = Komentare.class.getClassLoader().getResource("cz/frantovo/nekurak/util/komentář.xsd");
   1.115 +			SchemaFactory tovarnaSchemat = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
   1.116 +			Schema schema = tovarnaSchemat.newSchema(soubor);
   1.117  
   1.118 -	    DocumentBuilderFactory tovarnaDB = DocumentBuilderFactory.newInstance();
   1.119 -	    tovarnaDB.setSchema(schema);
   1.120 +			DocumentBuilderFactory tovarnaDB = DocumentBuilderFactory.newInstance();
   1.121 +			tovarnaDB.setSchema(schema);
   1.122  
   1.123 -	    DocumentBuilder db = tovarnaDB.newDocumentBuilder();
   1.124 -	    db.setErrorHandler(new ErrorHandler() {
   1.125 +			DocumentBuilder db = tovarnaDB.newDocumentBuilder();
   1.126 +			db.setErrorHandler(new ErrorHandler() {
   1.127  
   1.128 -		public void warning(SAXParseException e) throws SAXException {
   1.129 -		    throw e;
   1.130 +				public void warning(SAXParseException e) throws SAXException {
   1.131 +					throw e;
   1.132 +				}
   1.133 +
   1.134 +				public void error(SAXParseException e) throws SAXException {
   1.135 +					/**
   1.136 +					 * neodpovídá schématu
   1.137 +					 * TODO: poslat hlášku, v čem je chyba
   1.138 +					 */
   1.139 +					throw e;
   1.140 +				}
   1.141 +
   1.142 +				public void fatalError(SAXParseException e) throws SAXException {
   1.143 +					/** invalidní XML – neuzavřené značky atd. */
   1.144 +					throw e;
   1.145 +				}
   1.146 +			});
   1.147 +			Document dokument = db.parse(new ByteArrayInputStream(komentar.getBytes("UTF-8")));
   1.148 +			return dokument;
   1.149 +		} catch (Exception e) {
   1.150 +			throw new KomentarovaVyjimka("Neplatný komentář: " + komentar, e);
   1.151  		}
   1.152  
   1.153 -		public void error(SAXParseException e) throws SAXException {
   1.154 -		    /**
   1.155 -		     * neodpovídá schématu
   1.156 -		     * TODO: poslat hlášku, v čem je chyba
   1.157 -		     */
   1.158 -		    throw e;
   1.159 -		}
   1.160  
   1.161 -		public void fatalError(SAXParseException e) throws SAXException {
   1.162 -		    /** invalidní XML – neuzavřené značky atd. */
   1.163 -		    throw e;
   1.164 -		}
   1.165 -	    });
   1.166 -	    Document dokument = db.parse(new ByteArrayInputStream(komentar.getBytes("UTF-8")));
   1.167 -	    return dokument;
   1.168 -	} catch (Exception e) {
   1.169 -	    throw new KomentarovaVyjimka("Neplatný komentář: " + komentar, e);
   1.170  	}
   1.171  
   1.172 +	private static String escapujXML(String str) {
   1.173 +		return str.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\"", "&quot;").replaceAll("'", "&apos;");
   1.174  
   1.175 -    }
   1.176 -
   1.177 -    private static String escapujXML(String str) {
   1.178 -	return str.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\"", "&quot;").replaceAll("'", "&apos;");
   1.179 -
   1.180 -    }
   1.181 +	}
   1.182  }