[jboss-svn-commits] JBL Code SVN: r32277 - labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 29 10:52:21 EDT 2010


Author: lkrzyzanek
Date: 2010-03-29 10:52:20 -0400 (Mon, 29 Mar 2010)
New Revision: 32277

Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java
Log:
Customized default parser implementation.

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java	2010-03-29 14:44:47 UTC (rev 32276)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java	2010-03-29 14:52:20 UTC (rev 32277)
@@ -27,12 +27,14 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.Properties;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.jboss.labs.sbs.plugin.bm.dao.OldBlogEntryBean;
+import org.w3c.dom.Document;
 
 import com.jivesoftware.base.User;
 import com.jivesoftware.base.UserManager;
@@ -41,6 +43,9 @@
 import com.jivesoftware.community.Blog;
 import com.jivesoftware.community.BlogManager;
 import com.jivesoftware.community.BlogPost;
+import com.jivesoftware.community.renderer.impl.v2.HtmlRenderUtils;
+import com.jivesoftware.community.renderer.impl.v2.JAXPUtils;
+import com.jivesoftware.util.StringUtils;
 
 /**
  * DB Implementation of DbOldBlogsManager
@@ -170,7 +175,7 @@
     }
     BlogPost post = b.createBlogPost(b.getUser());
     post.setSubject(oldBlogEntry.getTitle());
-    post.setBody(WikiContentHelper.unknownContentToJiveDoc(oldBlogEntry.getBody()));
+    post.setBody(parseHtmlBasedWikiContent(oldBlogEntry.getBody()));
     post.setCreationDate(oldBlogEntry.getCreated());
     post.setModificationDate(oldBlogEntry.getCreated());
     post.setPublishDate(oldBlogEntry.getCreated());
@@ -178,6 +183,60 @@
     b.addBlogPost(post);
   }
 
+  /**
+   * 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);
+      // Following lines are commented because messages are not Wiki articles.
+      
+      // 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"));
+      // 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);
+  }
+
   protected String getMetaPathFromEntry(String entryPath) {
     return entryPath.substring(0, entryPath.length() - 4) + ".meta";
   }



More information about the jboss-svn-commits mailing list