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 Jul 10 20:17:56 2011 +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 <br/>
1.55 - * a celé zabalí do <p/>
1.56 - * @param komentar text se zalomenými řádky
1.57 - * @return text s <br/> 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 <br/>
1.64 + * a celé zabalí do <p/>
1.65 + * @param komentar text se zalomenými řádky
1.66 + * @return text s <br/> 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("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'");
1.174
1.175 - }
1.176 -
1.177 - private static String escapujXML(String str) {
1.178 - return str.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'");
1.179 -
1.180 - }
1.181 + }
1.182 }