OSDN Git Service

Cleaned up JTidy messages and put them in the logger. I also suppressed stedrr output...
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / evernote / EnmlConverter.java
index 128e7e6..3f0ae8a 100644 (file)
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.List;\r
 \r
 import org.w3c.tidy.Tidy;\r
+import org.w3c.tidy.TidyMessage;\r
 \r
 import cx.fbn.nevernote.Global;\r
 import cx.fbn.nevernote.utilities.ApplicationLogger;\r
@@ -36,6 +37,32 @@ public class EnmlConverter {
        private List<String>                    resources;\r
        public boolean saveInvalidXML;\r
        \r
+       private class TidyListener implements org.w3c.tidy.TidyMessageListener {\r
+               \r
+               ApplicationLogger logger;\r
+               public boolean errorFound; \r
+               \r
+               public TidyListener(ApplicationLogger logger) {\r
+                       this.logger = logger;\r
+                       errorFound = false;\r
+               }\r
+               @Override\r
+               public void messageReceived(TidyMessage msg) {\r
+                       if (msg.getLevel() == TidyMessage.Level.ERROR) {\r
+                               logger.log(logger.LOW, "******* JTIDY ERORR *******");\r
+                               logger.log(logger.LOW, "Error Code: " +msg.getErrorCode());\r
+                               logger.log(logger.LOW, "Column: " +msg.getColumn());\r
+                               logger.log(logger.LOW, "Column: " +msg.getColumn());\r
+                               logger.log(logger.LOW, "Line: " +msg.getLine());\r
+                               logger.log(logger.LOW, "Message: " +msg.getMessage());\r
+                               logger.log(logger.LOW, "***************************");\r
+                               errorFound = true;\r
+                       } else \r
+                               logger.log(logger.EXTREME, "JTidy Results: "+msg.getMessage());\r
+               }\r
+               \r
+       }\r
+       \r
        public EnmlConverter(ApplicationLogger l) {\r
                logger = l;\r
 //             conn = c;\r
@@ -96,6 +123,9 @@ public class EnmlConverter {
 //             logger.log(logger.HIGH, "Check complete");\r
        \r
                Tidy tidy = new Tidy();\r
+               TidyListener tidyListener = new TidyListener(logger);\r
+               tidy.setMessageListener(tidyListener);\r
+               tidy.getStderr().close();  // the listener will capture messages\r
                tidy.setXmlTags(true);\r
                byte html[] = newContent.getBytes();\r
                ByteArrayInputStream is = new ByteArrayInputStream(html);\r
@@ -103,8 +133,15 @@ public class EnmlConverter {
                tidy.parse(is, os);\r
                newContent = os.toString();\r
                \r
-               if (newContent.trim().equals(""))\r
+               if (tidyListener.errorFound) {\r
+                       logger.log(logger.LOW, "Note Contents Begin");\r
+                       logger.log(logger.LOW, content);\r
+                       logger.log(logger.LOW, "Note Contents End");\r
                        newContent = null;\r
+               } else {\r
+                       if (newContent.trim().equals(""))\r
+                               newContent = null;\r
+               }\r
 \r
                // If the repair above returned null, then the XML is foobar.\r
                // We are done here.\r