Conclude reporting improvements
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 18 Nov 2007 13:57:03 +0000 (13:57 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 18 Nov 2007 13:57:03 +0000 (13:57 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@718 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultPersister.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/FullHtmlTreeReport.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultsList.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/index.html
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/htmlreport/style.css

index 68c2ada699ebc1191f0f25aca05691a025dba42f..c16e70a76fb8cce420c38a59695f1dfc3ebf5b70 100644 (file)
@@ -34,7 +34,6 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener
                        StructureRegistry localRegistry = partStruct.result.getRegistry();\r
                        TreeSRegistry registry = getOrCreateTreeSRegistry(path);\r
                        syncPath(registry, localRegistry, path);\r
-                       treeSRegistryDao.update(registry);\r
 \r
                        if (persistedResult == null) {\r
                                persistedResult = new TreeTestResult();\r
@@ -119,6 +118,7 @@ public class TreeTestResultPersister extends AsynchronousTreeTestResultListener
                        } else {\r
                                registry.register(path, new SimpleSElement(path.getName()));\r
                        }\r
+                       treeSRegistryDao.update(registry);\r
                }\r
 \r
                if (path.getParent() != null) {\r
index 076da8f86dea7625243d21accca67731272a086a..eb8a360d75c3174be32395ef2b69ac03b2f9fe37 100644 (file)
@@ -2,15 +2,14 @@ package org.argeo.slc.core.test.tree.htmlreport;
 \r
 import java.io.File;\r
 import java.io.FileOutputStream;\r
+import java.io.IOException;\r
 import java.io.InputStream;\r
 import java.text.SimpleDateFormat;\r
+import java.util.Comparator;\r
 import java.util.List;\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
 \r
-import org.dbunit.dataset.IDataSet;\r
-import org.dbunit.dataset.xml.FlatXmlDataSet;\r
-import org.hsqldb.lib.FileUtil;\r
-\r
-import org.apache.commons.io.FileUtils;\r
 import org.apache.commons.io.IOUtils;\r
 \r
 import org.argeo.slc.core.SlcException;\r
@@ -58,11 +57,24 @@ public class FullHtmlTreeReport implements TestReport, StructureAware {
                        reportDir.mkdirs();\r
 \r
                        resourceToFile("index.html");\r
-                       resourceToFile("style.css");\r
 \r
                        ResultsList index = new ResultsList(this);\r
                        List<TestResult> list = testResultDao.listTestResults();\r
-                       for (TestResult testRes : list) {\r
+                       SortedSet<TestResult> sortedSet = new TreeSet<TestResult>(\r
+                                       new Comparator<TestResult>() {\r
+\r
+                                               public int compare(TestResult o1, TestResult o2) {\r
+                                                       if (o1.getCloseDate() == null\r
+                                                                       || o2.getCloseDate() == null)\r
+                                                               return 0;\r
+                                                       // inverse date order (last first)\r
+                                                       return o2.getCloseDate().compareTo(\r
+                                                                       o1.getCloseDate());\r
+                                               }\r
+\r
+                                       });\r
+                       sortedSet.addAll(list);\r
+                       for (TestResult testRes : sortedSet) {\r
                                TreeTestResult result = (TreeTestResult) testRes;\r
 \r
                                index.addTestResult(result);\r
@@ -120,6 +132,20 @@ public class FullHtmlTreeReport implements TestReport, StructureAware {
                return reportDir;\r
        }\r
 \r
+       void addStyles(StringBuffer buf){\r
+               try {\r
+                       buf.append("<style type=\"text/css\">\n");\r
+                       InputStream in = FullHtmlTreeReport.class\r
+                       .getResourceAsStream("style.css");\r
+                       String styles = IOUtils.toString(in);\r
+                       IOUtils.closeQuietly(in);\r
+                       buf.append(styles);\r
+                       buf.append("\n</style>\n");\r
+               } catch (IOException e) {\r
+                       throw new SlcException("Cannot load styles", e);\r
+               }\r
+       }\r
+       \r
        private void resourceToFile(String resourceName) {\r
                try {\r
                        File file = new File(getReportDir() + File.separator + resourceName);\r
index 06bf7c30d3cffe37dcccb48d7dc7d1b91eba8f30..e4f7f20f65d52ad353037a0dd682118efb4c109d 100644 (file)
@@ -4,8 +4,6 @@ import java.io.IOException;
 import java.util.SortedMap;\r
 import java.util.TreeMap;\r
 \r
-import javax.swing.tree.TreePath;\r
-\r
 import org.apache.commons.io.FileUtils;\r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
@@ -42,15 +40,15 @@ class ResultPage {
                StringBuffer buf = new StringBuffer("");\r
                buf.append("<html>\n");\r
                buf.append("<header>");\r
-               buf.append("<title>Result #").append(result.getTestResultId()).append(\r
-                               "</title>\n");\r
-               buf\r
-                               .append("<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"/>");\r
+               buf.append("<title>Result #").append(result.getTestResultId());\r
+               buf.append("</title>\n");\r
+               report.addStyles(buf);\r
                buf.append("</header>\n");\r
 \r
                buf.append("<body>\n");\r
 \r
                // Header\r
+               buf.append("<a name=\"top\"/>\n");\r
                buf.append("<h1>Result #").append(result.getTestResultId()).append(\r
                                "</h1>\n");\r
                buf.append(report.sdf.format(result.getCloseDate()));\r
@@ -126,19 +124,13 @@ class ResultPage {
                        buf.append("<p>\n");\r
                        buf.append("<a name=\"").append(anchor(path)).append("\"></a>");\r
                        buf.append("<h2>");\r
-                       String description = path.getName();\r
-                       if (registry != null) {\r
-                               StructureElement element = registry.getElement(path);\r
-                               if (element != null) {\r
-                                       description = element.getDescription();\r
-                               }\r
-                       }\r
-                       buf.append(description);\r
+                       describedPath(path, registry, buf);\r
                        buf.append("</h2>");\r
 \r
                        PartSubList subList = (PartSubList) result.getResultParts().get(\r
                                        path);\r
                        buf.append("<table border=0>\n");\r
+                       int displayedIndex = 1;// for display only\r
                        for (TestResultPart part : subList.getParts()) {\r
                                SimpleResultPart sPart = (SimpleResultPart) part;\r
                                String clss = "";\r
@@ -147,12 +139,20 @@ class ResultPage {
                                } else {\r
                                        clss = "failed";\r
                                }\r
-                               buf.append("<tr><td class=\"").append(clss).append("\">");\r
+                               buf.append("<tr>");\r
+                               buf.append("<td><b>").append(displayedIndex)\r
+                                               .append("</b></td>");\r
+                               buf.append("<td class=\"").append(clss).append("\">");\r
 \r
                                buf.append(sPart.getMessage());\r
-                               buf.append("</td></tr>\n");\r
+                               buf.append("</td>");\r
+                               buf.append("</tr>\n");\r
+\r
+                               displayedIndex++;\r
                        }\r
                        buf.append("</table>\n");\r
+                       buf.append("<a class=\"nav\" href=\"#top\">top</a>\n");\r
+                       buf.append("<hr/>\n");\r
                }\r
        }\r
 \r
@@ -175,8 +175,19 @@ class ResultPage {
                return path.getAsUniqueString().replace(path.getSeparator(), '_');\r
        }\r
 \r
-       private String describedPath(TreePath path, StructureRegistry registry) {\r
-               StringBuffer buf = new StringBuffer("");\r
-               return buf.toString();\r
+       private void describedPath(TreeSPath path, StructureRegistry registry,\r
+                       StringBuffer buf) {\r
+               // StringBuffer buf = new StringBuffer("");\r
+               if (path.getParent() != null) {\r
+                       describedPath(path.getParent(), registry, buf);\r
+               }\r
+               String description = path.getName();\r
+               if (registry != null) {\r
+                       StructureElement element = registry.getElement(path);\r
+                       if (element != null) {\r
+                               description = element.getDescription();\r
+                       }\r
+               }\r
+               buf.append('/').append(description);\r
        }\r
 }\r
index f2a75164107368d4f7cdaa84444d73207b44ab4b..84b1f7fe0d688d6fdeb552d0b679c1749737015f 100644 (file)
@@ -18,13 +18,13 @@ class ResultsList {
                buf.append("<html><header><title>Results</title></header><body>");\r
                buf.append("<header>");\r
                buf.append("<title>Results</title>\n");\r
-               buf\r
-                               .append("<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"/>");\r
+               report.addStyles(buf);\r
                buf.append("</header>\n");\r
                buf.append("<body>\n");\r
 \r
                buf.append("<h1>Results</h1>\n");\r
                buf.append("<table border=\"0\" cellspacing=\"1\">\n");\r
+               buf.append("<tr><th>Date</th><th>Result Id</th></tr>\n");\r
        }\r
 \r
        void addTestResult(TreeTestResult result) {\r
index ca5836d19bc9eccbf2400037042de33e5271a587..32beed3b5bb48f68ad417301ea5242afd7dc6809 100644 (file)
@@ -2,9 +2,8 @@
 <head>\r
 <META http-equiv="Content-Type" content="text/html; charset=US-ASCII">\r
 <title>SLC test results</title>\r
-<link href="style.css" rel="stylesheet" type="text/css"/>\r
 </head>\r
-<frameset cols="20%,80%">\r
+<frameset cols="30%,70%">\r
        <frame src="slc-resultsList.html" name="navigation">\r
        <frame src="about:blank" name="main">\r
        <noframes>\r
index 26d5ae2bdbe6f2f01c4cc51ee3e46fa8b27ab283..f2c3a717658674cf8a7b7e940abb14518a337c29 100644 (file)
@@ -1,4 +1,3 @@
-/* Generic Selectors */\r
 body {\r
        font-family: sans-serif;\r
        font-size: 12px;\r
@@ -6,10 +5,6 @@ body {
        background-color: white;\r
 }\r
 \r
-li {\r
-       list-style-type: none;\r
-}\r
-\r
 h1 {\r
        font-family: sans-serif;\r
        font-size: 16px;\r
@@ -33,24 +28,6 @@ table,form {
        margin: 0px;\r
 }\r
 \r
-img {\r
-       border: none;\r
-}\r
-\r
-div {\r
-       font-size: 100%;\r
-}\r
-\r
-tr.list:hover {\r
-       background-color: lightgrey;\r
-}\r
-\r
-td.list {\r
-       border-top: 1px solid lighgrey;\r
-       padding: 2px 20px 2px 2px;\r
-       padding-right: 15px;\r
-}\r
-\r
 th {\r
        font-size: 12px;\r
        padding: 2px 20px 2px 2px;\r
@@ -73,7 +50,6 @@ td {
        color: red;\r
 }\r
 \r
-/**************** Pseudo classes ****************/\r
 a {\r
        text-decoration: none;\r
 }\r