[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>&nbsp;</p>");
+    textBody = StringUtils.replaceAll(textBody, "<div />", "<div>&nbsp;</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