[246375] Refactoring model.dom.html component
diff --git a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
index 87ea9a5..816310f 100644
--- a/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
+++ b/plugins/org.eclipse.actf.visualization.blind.html/src/org/eclipse/actf/visualization/blind/html/BlindVisualizerHtml.java
@@ -12,15 +12,12 @@
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Vector;
 
-import org.eclipse.actf.model.dom.html.impl.SHDocument;
-import org.eclipse.actf.model.dom.html.util.HtmlParserUtil;
+import org.eclipse.actf.model.dom.html.HTMLParserFactory;
+import org.eclipse.actf.model.dom.html.IHTMLParser;
 import org.eclipse.actf.model.ui.IModelService;
 import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
 import org.eclipse.actf.util.dom.DomPrintUtil;
@@ -93,9 +90,9 @@
 			Html2ViewMapMaker h2vmm = new Html2ViewMapMaker();
 
 			Vector<Html2ViewMapData> html2ViewMapV = new Vector<Html2ViewMapData>();
-			HtmlParserUtil hpu = new HtmlParserUtil();
+			IHTMLParser htmlParser = HTMLParserFactory.createHTMLParser();
 			HtmlErrorLogListener errorLogListener = new HtmlErrorLogListener();
-			hpu.addErrorLogListener(errorLogListener);
+			htmlParser.addErrorLogListener(errorLogListener);
 			String targetFile = tmpDirS + MAPPED_HTML_FILE_PRE + frameId
 					+ ".html";
 
@@ -121,16 +118,19 @@
 				ieDom = webBrowser.getLiveDocument();
 
 				// TODO replace with DomByCom (need clone/write support)
-				HtmlParserUtil tmpHPU = new HtmlParserUtil();
-				tmpHPU.parse(new FileInputStream(tmpDirS + IE_HTML_FILE));
-				document = tmpHPU.getSHDocument();
+				IHTMLParser tmpHtmlParser = HTMLParserFactory
+						.createHTMLParser();
+				tmpHtmlParser
+						.parse(new FileInputStream(tmpDirS + IE_HTML_FILE));
+				document = tmpHtmlParser.getDocument();
 
-				tmpHPU.parse(new FileInputStream(tmpDirS + ORIG_HTML_FILE));
-				originalDocument = tmpHPU.getSHDocument();
+				tmpHtmlParser.parse(new FileInputStream(tmpDirS
+						+ ORIG_HTML_FILE));
+				originalDocument = tmpHtmlParser.getDocument();
 
 			} else {
-				hpu.parse(new FileInputStream(targetFile));
-				document = hpu.getSHDocument();
+				htmlParser.parse(new FileInputStream(targetFile));
+				document = htmlParser.getDocument();
 				originalDocument = document;
 				ieDom = webBrowser.getLiveDocument();
 			}
@@ -240,30 +240,18 @@
 			resultFile = BlindVizEnginePlugin.createTempFile(
 					IVisualizationConst.PREFIX_RESULT,
 					IVisualizationConst.SUFFIX_HTML);
-//			File tmpFile = BlindVizEnginePlugin.createTempFile("tmp",
-//					IVisualizationConst.SUFFIX_HTML);
+			// File tmpFile = BlindVizEnginePlugin.createTempFile("tmp",
+			// IVisualizationConst.SUFFIX_HTML);
 
 			try {
-//				HtmlParserUtil.saveHtmlDocumentAsUTF8(
-//						(SHDocument) resultDocument, tmpFile, resultFile);
-				PrintWriter tmpPW = new PrintWriter(new OutputStreamWriter(new FileOutputStream(resultFile),"UTF8"));				
+				// HtmlParserUtil.saveHtmlDocumentAsUTF8(
+				// (SHDocument) resultDocument, tmpFile, resultFile);
 				DomPrintUtil dpu = new DomPrintUtil(resultDocument);
-				tmpPW.println(dpu.toXMLString());
-				tmpPW.flush();
-				tmpPW.close();
-				
+				dpu.writeToFile(resultFile);
+
 			} catch (Exception e3) {
 				DebugPrintUtil
 						.devOrDebugPrintln("error: saveHtmlDocumentAsUTF8");
-				try {
-					PrintWriter pw = new PrintWriter(new OutputStreamWriter(
-							new FileOutputStream(resultFile), "UTF-8"));
-					((SHDocument) resultDocument).printAsSGML(pw, true);
-					pw.flush();
-					pw.close();
-				} catch (Exception e4) {
-
-				}
 			}
 
 			if (hasFrame) {
diff --git a/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java b/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
index e5491fe..bf8bdf2 100644
--- a/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
+++ b/plugins/org.eclipse.actf.visualization.blind.odfbyhtml/src/org/eclipse/actf/visualization/blind/odfbyhtml/BlindVisualizerOdfByHtml.java
@@ -12,17 +12,15 @@
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Vector;
 
-import org.eclipse.actf.model.dom.html.impl.SHDocument;
-import org.eclipse.actf.model.dom.html.util.HtmlParserUtil;
+import org.eclipse.actf.model.dom.html.HTMLParserFactory;
+import org.eclipse.actf.model.dom.html.IHTMLParser;
 import org.eclipse.actf.model.ui.IModelService;
 import org.eclipse.actf.util.FileUtils;
+import org.eclipse.actf.util.dom.DomPrintUtil;
 import org.eclipse.actf.util.html2view.Html2ViewMapData;
 import org.eclipse.actf.util.html2view.Html2ViewMapMaker;
 import org.eclipse.actf.util.logging.DebugPrintUtil;
@@ -84,9 +82,9 @@
 			Html2ViewMapMaker h2vmm = new Html2ViewMapMaker();
 			Vector<Html2ViewMapData> html2ViewMapV = new Vector<Html2ViewMapData>();
 
-			HtmlParserUtil hpu = new HtmlParserUtil();
+			IHTMLParser htmlParser = HTMLParserFactory.createHTMLParser();
 			HtmlErrorLogListener errorLogListener = new HtmlErrorLogListener();
-			hpu.addErrorLogListener(errorLogListener);
+			htmlParser.addErrorLogListener(errorLogListener);
 			String targetFile = tmpDirS + MAPPED_HTML_FILE_PRE + ".html";
 
 			html2ViewMapV = h2vmm.makeMap(ODF_HTML_FILE_NAME,
@@ -95,9 +93,9 @@
 				targetFile = odf_html_fileS;
 			}
 
-			HtmlParserUtil tmpHPU = new HtmlParserUtil();
-			tmpHPU.parse(new FileInputStream(targetFile));
-			Document document = tmpHPU.getSHDocument();
+			IHTMLParser tmpHtmlParser = HTMLParserFactory.createHTMLParser();
+			tmpHtmlParser.parse(new FileInputStream(targetFile));
+			Document document = tmpHtmlParser.getDocument();
 
 			if (document == null) {
 				return ERROR;
@@ -173,11 +171,13 @@
 					IVisualizationConst.SUFFIX_HTML);
 
 			try {
-				PrintWriter pw = new PrintWriter(new OutputStreamWriter(
-						new FileOutputStream(resultFile), "UTF-8"));
-				((SHDocument) resultDocument).printAsSGML(pw, true);
-				pw.flush();
-				pw.close();
+				// PrintWriter pw = new PrintWriter(new OutputStreamWriter(
+				// new FileOutputStream(resultFile), "UTF-8"));
+				// ((IHTMLDocumentACTF) resultDocument).printAsSGML(pw, true);
+				// pw.flush();
+				// pw.close();
+				DomPrintUtil dpu = new DomPrintUtil(resultDocument);
+				dpu.writeToFile(resultFile);
 			} catch (Exception e3) {
 				e3.printStackTrace();
 			}
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
index 9ae944f..9c9952a 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/eval/HtmlErrorLogListener.java
@@ -13,8 +13,8 @@
 
 import java.util.Vector;
 
-import org.eclipse.actf.model.dom.sgml.IErrorLogListener;
-import org.eclipse.actf.model.dom.sgml.ISGMLConstants;
+import org.eclipse.actf.model.dom.html.IErrorLogListener;
+import org.eclipse.actf.model.dom.html.IParserError;
 import org.eclipse.actf.util.html2view.Html2ViewMapData;
 import org.eclipse.actf.visualization.eval.EvaluationPreferencesUtil;
 import org.eclipse.actf.visualization.eval.problem.IProblemItem;
@@ -40,13 +40,13 @@
 	private boolean flag = true;
 
 	public void errorLog(int arg0, String arg1) {
-		if (arg0 != ISGMLConstants.ILLEGAL_ATTRIBUTE || arg1.indexOf(Html2ViewMapData.ACTF_ID) < 0) {
+		if (arg0 != IParserError.ILLEGAL_ATTRIBUTE || arg1.indexOf(Html2ViewMapData.ACTF_ID) < 0) {
 			// TODO create HTML problems
 			switch (arg0) {
-			case ISGMLConstants.DOCTYPE_MISSED:
+			case IParserError.DOCTYPE_MISSED:
 				isNoDoctype = true;
 				break;
-			case ISGMLConstants.ILLEGAL_DOCTYPE:
+			case IParserError.ILLEGAL_DOCTYPE:
 				if (arg1.indexOf("Invalid DOCTYPE declaration.") > -1) {
 					isNonPublic = true;
 				} else if (arg1.matches(".*Instead of \".*\" use \".*\" as a DTD.")) {
@@ -59,7 +59,7 @@
 					}
 				}
 				break;
-			case ISGMLConstants.ILLEGAL_CHILD:
+			case IParserError.ILLEGAL_CHILD:
                 //TBD "li" case (C_1000.7)
                 //System.out.println(arg0+" : "+arg1);
 				if (arg1.matches(".*<head.*> must be before <body.*")) {
diff --git a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java
index 00dec5c..29287a6 100644
--- a/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java
+++ b/plugins/org.eclipse.actf.visualization.engines.blind.html/src/org/eclipse/actf/visualization/engines/blind/html/util/SaveReportBlind.java
@@ -19,9 +19,8 @@
 import java.util.List;
 
 import org.eclipse.actf.mediator.IACTFReport;
-import org.eclipse.actf.model.dom.html.impl.SHDocument;
-import org.eclipse.actf.model.dom.html.util.HtmlParserUtil;
 import org.eclipse.actf.util.FileUtils;
+import org.eclipse.actf.util.dom.DomPrintUtil;
 import org.eclipse.actf.visualization.engines.blind.BlindVizEnginePlugin;
 import org.eclipse.actf.visualization.engines.blind.eval.PageEvaluation;
 import org.eclipse.actf.visualization.engines.blind.util.BlindVizResourceUtil;
@@ -54,8 +53,8 @@
 			boolean bAccessory) {
 		if (null != checkResult && checkResult instanceof IEvaluationResult) {
 
-			IEvaluationResult evalResult = (IEvaluationResult)checkResult;
-			
+			IEvaluationResult evalResult = (IEvaluationResult) checkResult;
+
 			String saveDir = sFileName.substring(0, sFileName
 					.lastIndexOf(File.separator) + 1);
 			String imageDir = saveDir + imageBriefDir;
@@ -396,9 +395,17 @@
 				trElement.appendChild(tdElement);
 			}
 
-			HtmlParserUtil.saveHtmlDocumentAsUTF8((SHDocument) result,
-					BlindVizEnginePlugin.getTempDirectoryString()
-							+ "saveResultTmp.html", sFileName);
+			// HtmlParserUtil.saveSGMLDocumentAsUTF8((IHTMLDocumentACTF) result,
+			// BlindVizEnginePlugin.getTempDirectoryString()
+			// + "saveResultTmp.html", sFileName);
+
+			DomPrintUtil dpu = new DomPrintUtil(result);
+			try {
+				dpu.writeToFile(sFileName);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+
 		}
 
 	}
diff --git a/plugins/org.eclipse.actf.visualization.lowvision/src/org/eclipse/actf/visualization/lowvision/util/LowVisionUtil.java b/plugins/org.eclipse.actf.visualization.lowvision/src/org/eclipse/actf/visualization/lowvision/util/LowVisionUtil.java
index 573294a..4256393 100644
--- a/plugins/org.eclipse.actf.visualization.lowvision/src/org/eclipse/actf/visualization/lowvision/util/LowVisionUtil.java
+++ b/plugins/org.eclipse.actf.visualization.lowvision/src/org/eclipse/actf/visualization/lowvision/util/LowVisionUtil.java
@@ -19,13 +19,14 @@
 import java.util.Map;
 import java.util.Vector;
 
-import org.eclipse.actf.model.dom.html.impl.SHDocument;
-import org.eclipse.actf.model.dom.html.util.HtmlParserUtil;
+import org.eclipse.actf.model.dom.html.HTMLParserFactory;
+import org.eclipse.actf.model.dom.html.IHTMLParser;
 import org.eclipse.actf.model.ui.ImagePositionInfo;
 import org.eclipse.actf.model.ui.editor.browser.ICurrentStyles;
 import org.eclipse.actf.model.ui.editor.browser.IWebBrowserACTF;
 import org.eclipse.actf.visualization.IVisualizationConst;
 import org.eclipse.actf.visualization.lowvision.LowVisionVizPlugin;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
@@ -45,15 +46,16 @@
 
             webBrowser.saveDocumentAsHTMLFile(runtimeHtmlFile.getAbsolutePath());
 
-            HtmlParserUtil hpu = new HtmlParserUtil();
-            hpu.parse(new FileInputStream(runtimeHtmlFile));
+            IHTMLParser htmlParser = HTMLParserFactory.createHTMLParser();
+            htmlParser.parse(new FileInputStream(runtimeHtmlFile));
 
             //TODO from Mediator
-            SHDocument document = hpu.getSHDocument();
+            Document document = htmlParser.getDocument();
+            Element documentElement = document.getDocumentElement();
 
-            NodeList frameList = document.getElementsByName("frame"); //$NON-NLS-1$
+            NodeList frameList = documentElement.getElementsByTagName("frame"); //$NON-NLS-1$
             try {
-                NodeList baseNL = document.getElementsByName("base");
+                NodeList baseNL = documentElement.getElementsByTagName("base");
                 if (baseNL.getLength() > 0) {
                     Element baseE = (Element) baseNL.item(baseNL.getLength() - 1);
                     String baseUrlS = baseE.getAttribute("href");
@@ -79,7 +81,7 @@
                     e2.printStackTrace();
                 }
             }
-            hpu = null;
+            htmlParser = null;
             return (result);
         } catch (Exception e1) {
             e1.printStackTrace();