summaryrefslogtreecommitdiff
path: root/qadevOOo/runner/convwatch/HTMLOutputter.java
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/runner/convwatch/HTMLOutputter.java')
-rw-r--r--qadevOOo/runner/convwatch/HTMLOutputter.java418
1 files changed, 418 insertions, 0 deletions
diff --git a/qadevOOo/runner/convwatch/HTMLOutputter.java b/qadevOOo/runner/convwatch/HTMLOutputter.java
new file mode 100644
index 000000000000..49edb2c25ac0
--- /dev/null
+++ b/qadevOOo/runner/convwatch/HTMLOutputter.java
@@ -0,0 +1,418 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package convwatch;
+
+import java.io.File;
+import java.io.FileWriter;
+import helper.OSHelper;
+
+public class HTMLOutputter
+{
+ FileWriter m_aOut;
+ String m_sFilename;
+ String m_sNamePrefix; // the HTML files used a suffix to build it's right name
+
+ /**
+ * ls is the current line separator (carridge return)
+ */
+ String ls;
+
+ HTMLOutputter() {}
+ public static HTMLOutputter create( String _sOutputPath, String _sHTMLFilename, String _sNamePrefix, String _sTitle )
+ {
+ FileHelper.makeDirectories("", _sOutputPath);
+ HTMLOutputter a = new HTMLOutputter();
+ String fs = System.getProperty("file.separator");
+ String sFilename = _sOutputPath + fs + _sHTMLFilename;
+
+ try
+ {
+ File outputFile = new File(sFilename);
+ a.m_aOut = new FileWriter(outputFile.toString());
+ a.ls = System.getProperty("line.separator");
+ }
+ catch (java.io.IOException e)
+ {
+ e.printStackTrace();
+ GlobalLogWriter.get().println("ERROR: Can't create HTML Outputter");
+ return null;
+ }
+ a.m_sFilename = sFilename;
+ a.m_sNamePrefix = _sNamePrefix;
+ return a;
+ }
+ public String getFilename() {return m_sFilename;}
+
+ public void header(String _sTitle)
+ {
+ try
+ {
+ m_aOut.write( "<html>" + ls);
+ m_aOut.write( "<head>" + ls);
+ m_aOut.write( "<title>" + _sTitle + "</title>" + ls);
+ m_aOut.write( "<link rel=\"stylesheet\" type=\"text/css\" href=\"/gfxcmp_ui/xmloff.css\" media=\"screen\" />" + ls);
+ m_aOut.write( "<link rel=\"stylesheet\" type=\"text/css\" href=\"/gfxcmp_ui/style.css\" media=\"screen\" />" + ls);
+ m_aOut.write( "</head>" + ls);
+ m_aOut.write( "<body bgcolor=white>" + ls);
+ m_aOut.flush();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ final static String TEST_TABLETITLE = "Test";
+ final static String VISUAL_STATUS_TABLETITLE = "Visual status";
+ final static String VISUAL_STATUS_MESSAGE_TABLETITLE = "Message";
+
+ public void indexSection(String _sOfficeInfo)
+ {
+ try
+ {
+ m_aOut.write( "<h2>Results for " + _sOfficeInfo + "</h2>" + ls);
+ m_aOut.write( "<p>Legend:<br>");
+ m_aOut.write( stronghtml(FIRSTGFX_TABLETITLE) + " contains the output printed via 'ghostscript' as a jpeg picture.<br>");
+
+ m_aOut.write( "<table class=\"infotable\">" + ls);
+ m_aOut.write( "<TR>");
+ m_aOut.write( tableHeaderCell(TEST_TABLETITLE));
+ m_aOut.write( tableHeaderCell(TEST_TABLETITLE));
+ m_aOut.write( tableHeaderCell(VISUAL_STATUS_TABLETITLE));
+ m_aOut.write( tableHeaderCell(VISUAL_STATUS_MESSAGE_TABLETITLE));
+ m_aOut.write( "</TR>" + ls);
+ m_aOut.flush();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ String getHREF(String _sHREF, String _sPathInfo)
+ {
+ StringBuffer a = new StringBuffer();
+ if (! OSHelper.isWindows())
+ {
+ // System.out.println("Tu'nix system.");
+ a.append("<A HREF=\"");
+ a.append(_sHREF);
+ a.append("\">");
+ a.append(_sPathInfo);
+ a.append("</A>");
+ }
+ else
+ {
+ // System.out.println("Windows system.");
+ //! this should be replaced by a better method
+ //! name(WIN|UNIX)
+ a.append("<A HREF=\"");
+ a.append(_sHREF);
+ a.append("\">");
+ a.append(_sPathInfo);
+ // a.append("(first)");
+ a.append("</A>");
+ // if (_sHREF.charAt(1) == ':' && (_sHREF.charAt(0) == 'x' || _sHREF.charAt(0) == 'X'))
+ // int index = 0;
+ // index = _sHREF.indexOf("X:");
+ // if (index == -1)
+ // {
+ // index = _sHREF.indexOf("x:");
+ // }
+ // if (index >= 0)
+ // {
+ // // int index = 0;
+ // // remove "X:" and insert "/tausch"
+ // StringBuffer sbUNIXPath = new StringBuffer( _sHREF.substring(0, index) );
+ // sbUNIXPath.append("/tausch");
+ // sbUNIXPath.append(_sHREF.substring(index + 2));
+ // String sUNIXPath = sbUNIXPath.toString();
+ // sUNIXPath = utils.replaceAll13(sUNIXPath, "\\", "/");
+ //
+ // a.append("<A HREF=\"");
+ // a.append(sUNIXPath);
+ // a.append("\">");
+ // a.append("(second)");
+ // a.append("</A>");
+ // }
+ // else
+ // {
+ // System.out.println("Path is '" + _sHREF + "'");
+ // }
+
+ }
+ return a.toString();
+ }
+
+ String tableDataCell(String _sValue)
+ {
+ StringBuffer a = new StringBuffer();
+ a.append("<TD>");
+ a.append(_sValue);
+ a.append("</TD>");
+ return a.toString();
+ }
+
+ String tableHeaderCell(String _sValue)
+ {
+ StringBuffer a = new StringBuffer();
+ a.append("<TH>");
+ a.append(_sValue);
+ a.append("</TH>");
+ return a.toString();
+ }
+
+ public void indexLine(String _sHTMLFile, String _sHTMLName, String _sHTMLFile2, String _sHTMLName2, String _sStatusRunThrough, String _sStatusMessage)
+ {
+ try
+ {
+ m_aOut.write( "<TR>");
+ m_aOut.write(tableDataCell( getHREF(_sHTMLFile, _sHTMLName) ) );
+ if (_sHTMLFile2.length() > 0)
+ {
+ m_aOut.write(tableDataCell( getHREF(_sHTMLFile2, _sHTMLName2) ) );
+ }
+ else
+ {
+ m_aOut.write(tableDataCell( "" ) );
+ }
+
+ m_aOut.write( tableDataCell(_sStatusRunThrough) );
+ m_aOut.write( tableDataCell(_sStatusMessage) );
+ m_aOut.write( "</TR>" + ls);
+
+ m_aOut.flush();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ public void close()
+ {
+ try
+ {
+ m_aOut.write( "</TABLE>" + ls);
+ m_aOut.write( "</BODY></HTML>" + ls);
+ m_aOut.flush();
+ m_aOut.close();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+// -----------------------------------------------------------------------------
+ String stronghtml(String _sValue)
+ {
+ StringBuffer a = new StringBuffer();
+ a.append("<STRONG>");
+ a.append(_sValue);
+ a.append("</STRONG>");
+ return a.toString();
+ }
+
+ final static String FIRSTGFX_TABLETITLE = "Original print file as jpeg";
+ final static String SECONDGFX_TABLETITLE = "New print file as jpeg";
+ final static String DIFFER_TABLETITLE = "Difference file";
+ final static String STATUS_TABLETITLE = "Status";
+ final static String PIXELDIFF_TABLETITLE = "Pixel difference in %";
+
+ final static String PIXELDIFF_BM_TABLETITLE = "P.diff. in % after remove border";
+ final static String DIFFER_BM_TABLETITLE = "Diff file (RB)";
+
+ final static String OK_TABLETITLE = "OK?";
+ public void checkSection(String _sDocumentName)
+ {
+ try
+ {
+ m_aOut.write( "<H2>Results for the document " + _sDocumentName + "</H2>" + ls);
+
+ m_aOut.write( "<p>Legend:<br>");
+ m_aOut.write( stronghtml(FIRSTGFX_TABLETITLE) + " contains the output printed via 'ghostscript' as a jpeg picture.<br>");
+ m_aOut.write( stronghtml(SECONDGFX_TABLETITLE) + " contains the same document opened within OpenOffice.org also printed via ghostscript as jpeg.<br>");
+ m_aOut.write( stronghtml(DIFFER_TABLETITLE)+" is build via composite from original and new picture. The result should be a whole black picture, if there are no differences.<br>At the moment "+stronghtml(STATUS_TABLETITLE)+" is only ok, if the difference file contains only one color (black).</p>" );
+ m_aOut.write( stronghtml(DIFFER_BM_TABLETITLE) + " is build via composite from original and new picture after the border of both pictures are removed, so differences based on center problems may solved here");
+ m_aOut.write( "</p>");
+ m_aOut.write( "<p>Some words about the percentage value<br>");
+ m_aOut.write( "If a character is on the original page (a) and on the new page this character is moved to an other position only (b) , this means the difference is 100%.<br>");
+ m_aOut.write( "If character (b) is also bigger than character (a) the percentage is grow over the 100% mark.<br>");
+ m_aOut.write( "This tool count only the pixels which are differ to it's background color. It makes no sense to count all pixels, or the difference percentage will most the time in a very low percentage range.");
+ m_aOut.write( "</p>");
+
+ m_aOut.write( "<table class=\"infotable\">" + ls);
+
+ m_aOut.write( "<TR>" + ls);
+ m_aOut.write( tableHeaderCell( FIRSTGFX_TABLETITLE) );
+ m_aOut.write( tableHeaderCell( SECONDGFX_TABLETITLE ) );
+ m_aOut.write( tableHeaderCell(DIFFER_TABLETITLE ) );
+ m_aOut.write( tableHeaderCell(PIXELDIFF_TABLETITLE ) );
+
+ m_aOut.write( tableHeaderCell(DIFFER_BM_TABLETITLE) );
+ m_aOut.write( tableHeaderCell(PIXELDIFF_BM_TABLETITLE ) );
+
+ m_aOut.write( tableHeaderCell( OK_TABLETITLE) );
+
+ m_aOut.write( "</TR>" + ls);
+ m_aOut.flush();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ public void checkLine(StatusHelper _aStatus, boolean _bCurrentResult)
+ {
+ try
+ {
+ m_aOut.write( "<TR>" + ls);
+ String sLink = getHREF(FileHelper.getBasename(_aStatus.m_sOldGfx), FileHelper.getBasename(_aStatus.m_sOldGfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ sLink = getHREF(FileHelper.getBasename(_aStatus.m_sNewGfx), FileHelper.getBasename(_aStatus.m_sNewGfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ sLink = getHREF(FileHelper.getBasename(_aStatus.m_sDiffGfx), FileHelper.getBasename(_aStatus.m_sDiffGfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ String sPercent = String.valueOf(_aStatus.nPercent) + "%";
+ if (_aStatus.nPercent > 0 && _aStatus.nPercent < 5)
+ {
+ sPercent += " (less 5% is ok)";
+ }
+ m_aOut.write(tableDataCell( sPercent ) );
+
+ if (_aStatus.m_sDiff_BM_Gfx == null)
+ {
+ sLink = "No diffs, therefore no moves";
+ m_aOut.write( tableDataCell(sLink) );
+ m_aOut.write(tableDataCell( "" ) );
+ }
+ else
+ {
+ sLink = getHREF(FileHelper.getBasename(_aStatus.m_sDiff_BM_Gfx), FileHelper.getBasename(_aStatus.m_sDiff_BM_Gfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ String sPercent2 = String.valueOf(_aStatus.nPercent2) + "%";
+ if (_aStatus.nPercent2 > 0 && _aStatus.nPercent2 < 5)
+ {
+ sPercent2 += " (less 5% is ok)";
+ }
+ m_aOut.write(tableDataCell( sPercent2 ) );
+ }
+
+ // is the check positiv, in a defined range
+ if (_bCurrentResult)
+ {
+ m_aOut.write(tableDataCell( "YES" ) );
+ }
+ else
+ {
+ m_aOut.write(tableDataCell( "NO" ) );
+ }
+
+ m_aOut.write( "</TR>" + ls);
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+// -----------------------------------------------------------------------------
+ public void checkDiffDiffSection(String _sDocumentName)
+ {
+ try
+ {
+ m_aOut.write( "<H2>Results for the document " + _sDocumentName + "</H2>" + ls);
+
+ m_aOut.write( "<p>Legend:<br>");
+ m_aOut.write( "</p>");
+
+ m_aOut.write( "<table class=\"infotable\">" + ls);
+
+ m_aOut.write( "<TR>" + ls);
+ m_aOut.write( tableHeaderCell( "Source to actual difference" ) );
+ m_aOut.write( tableHeaderCell( "Actual difference" ) );
+ m_aOut.write( tableHeaderCell(DIFFER_TABLETITLE ) );
+ m_aOut.write( tableHeaderCell(PIXELDIFF_TABLETITLE ) );
+
+ m_aOut.write( tableHeaderCell( OK_TABLETITLE) );
+
+ m_aOut.write( "</TR>" + ls);
+ m_aOut.flush();
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+ public void checkDiffDiffLine(StatusHelper _aStatus, boolean _bCurrentResult)
+ {
+ try
+ {
+ m_aOut.write( "<TR>" + ls);
+ // the link to the old difference can't offer here
+ // String sLink = getHREF(FileHelper.getBasename(_aStatus.m_sOldGfx), FileHelper.getBasename(_aStatus.m_sOldGfx));
+ // m_aOut.write( tableDataCell(sLink) );
+
+ String sBasename = FileHelper.getBasename(m_sFilename);
+ String sNew = sBasename.substring(m_sNamePrefix.length());
+
+ String sLink;
+ sLink = getHREF(sNew, sNew);
+ m_aOut.write( tableDataCell(sLink) );
+
+ sLink = getHREF(FileHelper.getBasename(_aStatus.m_sNewGfx), FileHelper.getBasename(_aStatus.m_sNewGfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ sLink = getHREF(FileHelper.getBasename(_aStatus.m_sDiffGfx), FileHelper.getBasename(_aStatus.m_sDiffGfx));
+ m_aOut.write( tableDataCell(sLink) );
+
+ String sPercent = String.valueOf(_aStatus.nPercent) + "%";
+ // if (_aStatus.nPercent > 0 && _aStatus.nPercent < 5)
+ // {
+ // sPercent += " (less 5% is ok)";
+ // }
+ m_aOut.write(tableDataCell( sPercent ) );
+
+ // is the check positiv, in a defined range
+ if (_bCurrentResult)
+ {
+ m_aOut.write(tableDataCell( "YES" ) );
+ }
+ else
+ {
+ m_aOut.write(tableDataCell( "NO" ) );
+ }
+
+ m_aOut.write( "</TR>" + ls);
+ }
+ catch (java.io.IOException e)
+ {
+ }
+ }
+
+}