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ů <br/>
1.36 + * a celé zabalí do <p/>
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);