[jboss-svn-commits] JBL Code SVN: r29617 - labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 15 05:18:45 EDT 2009
Author: lkrzyzanek
Date: 2009-10-15 05:18:45 -0400 (Thu, 15 Oct 2009)
New Revision: 29617
Modified:
labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java
Log:
Changed method with conversion from TXT to Document.
Used customzied parseHtmlBasedWikiContent method form Clearspace.
Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java 2009-10-15 09:18:06 UTC (rev 29616)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java 2009-10-15 09:18:45 UTC (rev 29617)
@@ -22,6 +22,7 @@
package org.jboss.labs.clearspace.plugin.nfm;
import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -50,6 +51,7 @@
import org.jboss.labs.clearspace.plugin.nfm.dao.ViewCountDAO;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.EmptyResultDataAccessException;
+import org.w3c.dom.Document;
import com.jivesoftware.base.UnauthorizedException;
import com.jivesoftware.base.User;
@@ -89,9 +91,12 @@
import com.jivesoftware.community.event.ThreadEventDispatcher;
import com.jivesoftware.community.impl.ActivityListener;
import com.jivesoftware.community.impl.dao.ActivityDAO;
+import com.jivesoftware.community.renderer.impl.v2.HtmlRenderUtils;
+import com.jivesoftware.community.renderer.impl.v2.JAXPUtils;
import com.jivesoftware.community.stats.ViewCountManager;
import com.jivesoftware.community.web.JiveResourceResolver;
import com.jivesoftware.util.DateUtils;
+import com.jivesoftware.util.StringUtils;
/**
* Db implementation
@@ -719,6 +724,61 @@
for (TextConverter converter : converters) {
textBody = converter.convert(textBody);
}
+ return parseHtmlBasedWikiContent(textBody);
+ }
+
+ /**
+ * Taken from WikiContentHelper#parseHtmlBasedWikiContent
+ *
+ * @param textBody
+ * @return
+ * @see WikiContentHelper#parseHtmlBasedWikiContent
+ */
+ private static Document parseHtmlBasedWikiContent(String textBody) {
+ textBody = StringUtils.replaceAll(textBody, "<p />", "<p> </p>");
+ textBody = StringUtils.replaceAll(textBody, "<div />", "<div> </div>");
+ try {
+ String html = HtmlRenderUtils.tidy(textBody, true, true);
+ html = StringUtils.replaceHtmlEntitiesWithValueOpt(html);
+ if (html == null || html.length() == 0) {
+ throw new UnsupportedEncodingException("unable to tidy document");
+ }
+ Document document = JAXPUtils.toBodyXml(html);
+ List<org.w3c.dom.Element> elementList = JAXPUtils.selectAllNodes(
+ document, "div");
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "span"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "p"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "li"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "td"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "th"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "a"));
+ elementList.addAll(JAXPUtils.selectAllNodes(document, "body"));
+ // Following lines are commented because messages are not Wiki articles.
+// for (org.w3c.dom.Element element : elementList) {
+// NodeList childNodes = element.getChildNodes();
+// for (int i = 0; i < childNodes.getLength(); i++) {
+// Node node = childNodes.item(i);
+// if (node.getNodeType() == Node.TEXT_NODE) {
+// String content = node.getTextContent();
+// if (content != null) {
+// if (StringUtils.containsAnyOf(content, "!", "[", "*", "~", "+")) {
+// WikiLexer lexer = new WikiLexer(content);
+// Element body = lexer.parse();
+// String bodyText = HtmlRenderUtils.toString(body);
+// Document bodyDoc = JAXPUtils.toXmlDocument(bodyText);
+// JAXPUtils.replace(node, bodyDoc.getDocumentElement()
+// .getChildNodes());
+// }
+// }
+// }
+// }
+// }
+ return document;
+ } catch (Exception e) {
+ log.error("Cannot parse text body. "
+ + "Trying to parse as wiki document. Error message: "
+ + e.getMessage());
+ }
return WikiContentHelper.wikiToJiveDocument(textBody);
}
More information about the jboss-svn-commits
mailing list