# HG changeset patch
# User František Kučera
# Date 1275996553 -7200
# Node ID 2acdbc74bc2472d0aef9d1b4aa498456fecb2355
# Parent 1ca0d7fdbe5184de92b4ec491b6f1bb1d587937e
zalamování řádků
diff -r 1ca0d7fdbe51 -r 2acdbc74bc24 java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java
--- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Jun 08 12:56:46 2010 +0200
+++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java Tue Jun 08 13:29:13 2010 +0200
@@ -31,6 +31,7 @@
private PodnikDAO podnikDAO;
@Resource
private SessionContext ctx;
+ private Komentare komentare = new Komentare();
public Collection getPodniky() {
Collection vysledek = podnikDAO.getPodniky();
@@ -90,17 +91,19 @@
switch (k.getTyp()) {
case PROSTY_TEXT:
k.setKomentar(Komentare.upravProstyText(k.getKomentar()));
- k.setKomentar(Komentare.obal(k.getKomentar()));
break;
case TEXY:
Texy t = new Texy();
k.setKomentar(t.preved(k.getKomentar()));
- k.setKomentar(Komentare.obal(k.getKomentar()));
+ break;
+ case XHTML:
+ k.setKomentar(Komentare.upravXHTML(k.getKomentar()));
break;
}
+ k.setKomentar(Komentare.obal(k.getKomentar()));
/** Zkontrolujeme XML */
- Komentare.zkontroluj(k.getKomentar());
+ komentare.zkontroluj(k.getKomentar());
/** TODO: Uložíme do databáze */
diff -r 1ca0d7fdbe51 -r 2acdbc74bc24 java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java
--- a/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java Tue Jun 08 12:56:46 2010 +0200
+++ b/java/nekurak.net-lib/src/cz/frantovo/nekurak/util/Komentare.java Tue Jun 08 13:29:13 2010 +0200
@@ -3,7 +3,6 @@
import cz.frantovo.nekurak.vyjimky.KomentarovaVyjimka;
import java.io.ByteArrayInputStream;
import java.net.URL;
-import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
@@ -29,8 +28,31 @@
* @return XHTML komentář bez kořenového elementu
*/
public static String upravProstyText(String komentar) {
- komentar = escapujXML(komentar);
- return "" + komentar.replaceAll("\n", "
") + "
";
+ return zalomRadky(escapujXML(komentar));
+ }
+
+ /**
+ * Pokud uživatel zapomněl na odstavce,
+ * zalomíme řádky a zabalíme celý odstavec do jednoho odstavce
+ * @param komentar komentář bez odstavců
+ * @return komentář s odstavci
+ */
+ public static String upravXHTML(String komentar) {
+ if (komentar.indexOf("") == -1) {
+ return zalomRadky(komentar);
+ } else {
+ return komentar;
+ }
+ }
+
+ /**
+ * Přidá na konce řádků <br/>
+ * a celé zabalí do <p/>
+ * @param komentar
+ * @return
+ */
+ private static String zalomRadky(String komentar) {
+ return "
" + komentar.replaceAll("\n", "
\n") + "
";
}
/**
@@ -43,17 +65,17 @@
}
/**
- * zkontroluje komentář oproti schématu
+ * zkontroluje komentář oproti schématu.
+ *
+ * TODO: omezit maximální délku?
+ * TODO: omezit komentáře?
+ *
* @param komentar
* @return jestli komentář odpovídá
*/
- public static Document zkontroluj(String komentar) throws KomentarovaVyjimka {
-
-
-
-
+ public Document zkontroluj(String komentar) throws KomentarovaVyjimka {
try {
- URL soubor = ClassLoader.getSystemResource("cz/frantovo/nekurak/util/komentář.xsd");
+ URL soubor = this.getClass().getClassLoader().getResource("cz/frantovo/nekurak/util/komentář.xsd");
SchemaFactory tovarnaSchemat = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = tovarnaSchemat.newSchema(soubor);
@@ -68,15 +90,19 @@
}
public void error(SAXParseException e) throws SAXException {
+ /**
+ * neodpovídá schématu
+ * TODO: poslat hlášku, v čem je chyba
+ */
throw e;
}
public void fatalError(SAXParseException e) throws SAXException {
+ /** invalidní XML – neuzavřené značky atd. */
throw e;
}
});
Document dokument = db.parse(new ByteArrayInputStream(komentar.getBytes("UTF-8")));
-
return dokument;
} catch (Exception e) {
throw new KomentarovaVyjimka("Neplatný komentář: " + komentar, e);
diff -r 1ca0d7fdbe51 -r 2acdbc74bc24 java/nekurak.net-lib/test/cz/frantovo/nekurak/util/KomentareTest.java
--- a/java/nekurak.net-lib/test/cz/frantovo/nekurak/util/KomentareTest.java Tue Jun 08 12:56:46 2010 +0200
+++ b/java/nekurak.net-lib/test/cz/frantovo/nekurak/util/KomentareTest.java Tue Jun 08 13:29:13 2010 +0200
@@ -6,6 +6,8 @@
public class KomentareTest {
+ Komentare komentare = new Komentare();
+
@Test
public void obal() {
String vystup = Komentare.obal("asdf");
@@ -17,38 +19,47 @@
public void upravProstýTextObal() {
String vystup = Komentare.upravProstyText("as\ndf");
vystup = Komentare.obal(vystup);
- String pozadovanyVystup = "";
+ String pozadovanyVystup = "";
assertEquals(pozadovanyVystup, vystup);
}
@Test
+ public void komentáře() throws KomentarovaVyjimka {
+ /**
+ * Komentáře jsou povolené. TODO: OK?
+ */
+ String výstup = Komentare.upravProstyText("aaabbb");
+ výstup = Komentare.obal(výstup);
+ komentare.zkontroluj(výstup);
+ }
+
+ @Test
public void zvláštníZnaky() {
String vystup = Komentare.upravProstyText("nbusr123 & | and < … > uvo\"zovky'");
String pozadovanyVystup = "nbusr123 & | and < … > uvo"zovky'
";
- System.out.println(vystup);
assertEquals(pozadovanyVystup, vystup);
}
@Test
public void xmlJednoduché() throws Exception {
- Komentare.zkontroluj("");
- Komentare.zkontroluj("");
- Komentare.zkontroluj("");
- Komentare.zkontroluj("");
+ komentare.zkontroluj("");
+ komentare.zkontroluj("");
+ komentare.zkontroluj("");
+ komentare.zkontroluj("");
}
@Test(expected = KomentarovaVyjimka.class)
public void xmlChybaÚplněŠpatnéXML() throws Exception {
- Komentare.zkontroluj("xxx
");
+ komentare.zkontroluj("xxx
");
}
@Test(expected = KomentarovaVyjimka.class)
public void xmlChybaChybíOdstavec() throws Exception {
- Komentare.zkontroluj("xxx
");
+ komentare.zkontroluj("xxx
");
}
@Test(expected = KomentarovaVyjimka.class)
public void xmlChybaPřebýváAtribut() throws Exception {
- Komentare.zkontroluj("");
+ komentare.zkontroluj("");
}
}
diff -r 1ca0d7fdbe51 -r 2acdbc74bc24 java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp
--- a/java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp Tue Jun 08 12:56:46 2010 +0200
+++ b/java/nekurak.net-web/web/WEB-INF/casti/odeslatKomentar.jsp Tue Jun 08 13:29:13 2010 +0200
@@ -29,7 +29,7 @@
-
+