java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java
changeset 133 2acdbc74bc24
parent 132 1ca0d7fdbe51
child 134 4bd1e353c527
     1.1 --- a/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java	Tue Jun 08 12:56:46 2010 +0200
     1.2 +++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java	Tue Jun 08 13:29:13 2010 +0200
     1.3 @@ -3,7 +3,6 @@
     1.4  import cz.frantovo.nekurak.vyjimky.KomentarovaVyjimka;
     1.5  import java.io.ByteArrayInputStream;
     1.6  import java.net.URL;
     1.7 -import java.util.logging.Level;
     1.8  import java.util.logging.Logger;
     1.9  import javax.xml.XMLConstants;
    1.10  import javax.xml.parsers.DocumentBuilder;
    1.11 @@ -29,8 +28,31 @@
    1.12       * @return XHTML komentář bez kořenového elementu
    1.13       */
    1.14      public static String upravProstyText(String komentar) {
    1.15 -	komentar = escapujXML(komentar);
    1.16 -	return "<p>" + komentar.replaceAll("\n", "<br/>") + "</p>";
    1.17 +	return zalomRadky(escapujXML(komentar));
    1.18 +    }
    1.19 +
    1.20 +    /**
    1.21 +     * Pokud uživatel zapomněl na odstavce,
    1.22 +     * zalomíme řádky a zabalíme celý odstavec do jednoho odstavce
    1.23 +     * @param komentar komentář bez odstavců
    1.24 +     * @return komentář s odstavci
    1.25 +     */
    1.26 +    public static String upravXHTML(String komentar) {
    1.27 +	if (komentar.indexOf("<p>") == -1) {
    1.28 +	    return zalomRadky(komentar);
    1.29 +	} else {
    1.30 +	    return komentar;
    1.31 +	}
    1.32 +    }
    1.33 +
    1.34 +    /**
    1.35 +     * Přidá na konce řádků &lt;br/&gt;
    1.36 +     * a celé zabalí do &lt;p/&gt;
    1.37 +     * @param komentar
    1.38 +     * @return
    1.39 +     */
    1.40 +    private static String zalomRadky(String komentar) {
    1.41 +	return "<p>" + komentar.replaceAll("\n", "<br/>\n") + "</p>";
    1.42      }
    1.43  
    1.44      /**
    1.45 @@ -43,17 +65,17 @@
    1.46      }
    1.47  
    1.48      /**
    1.49 -     * zkontroluje komentář oproti schématu
    1.50 +     * zkontroluje komentář oproti schématu.
    1.51 +     *
    1.52 +     * TODO: omezit maximální délku?
    1.53 +     * TODO: omezit komentáře?
    1.54 +     *
    1.55       * @param komentar
    1.56       * @return jestli komentář odpovídá
    1.57       */
    1.58 -    public static Document zkontroluj(String komentar) throws KomentarovaVyjimka {
    1.59 -
    1.60 -
    1.61 -
    1.62 -
    1.63 +    public Document zkontroluj(String komentar) throws KomentarovaVyjimka {
    1.64  	try {
    1.65 -	    URL soubor = ClassLoader.getSystemResource("cz/frantovo/nekurak/util/komentář.xsd");
    1.66 +	    URL soubor = this.getClass().getClassLoader().getResource("cz/frantovo/nekurak/util/komentář.xsd");
    1.67  	    SchemaFactory tovarnaSchemat = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    1.68  	    Schema schema = tovarnaSchemat.newSchema(soubor);
    1.69  
    1.70 @@ -68,15 +90,19 @@
    1.71  		}
    1.72  
    1.73  		public void error(SAXParseException e) throws SAXException {
    1.74 +		    /**
    1.75 +		     * neodpovídá schématu
    1.76 +		     * TODO: poslat hlášku, v čem je chyba
    1.77 +		     */
    1.78  		    throw e;
    1.79  		}
    1.80  
    1.81  		public void fatalError(SAXParseException e) throws SAXException {
    1.82 +		    /** invalidní XML – neuzavřené značky atd. */
    1.83  		    throw e;
    1.84  		}
    1.85  	    });
    1.86  	    Document dokument = db.parse(new ByteArrayInputStream(komentar.getBytes("UTF-8")));
    1.87 -
    1.88  	    return dokument;
    1.89  	} catch (Exception e) {
    1.90  	    throw new KomentarovaVyjimka("Neplatný komentář: " + komentar, e);