+package org.argeo.slc.core.test.tree;\r
+\r
+import java.io.File;\r
+import java.io.FileWriter;\r
+import java.io.IOException;\r
+import java.util.List;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestReport;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.dao.test.TestResultDao;\r
+\r
+public class FullHtmlTreeReport implements TestReport {\r
+ private TestResultDao testResultDao;\r
+ private File reportDir;\r
+\r
+ public void generateTestReport(TestResult testResult) {\r
+ if (testResultDao == null) {\r
+ TreeTestResult result = (TreeTestResult) testResult;\r
+ generateResultPage(getResultFile(result), result);\r
+ } else {\r
+ if (reportDir.exists()) {\r
+ // clean\r
+ for (File file : reportDir.listFiles()) {\r
+ file.delete();\r
+ }\r
+ }\r
+ reportDir.mkdirs();\r
+\r
+ StringBuffer index = new StringBuffer("");\r
+ index\r
+ .append("<html><header><title>Results</title></header><body>\n<table border=1>\n");\r
+\r
+ List<TestResult> list = testResultDao.listTestResults();\r
+ for (TestResult testRes : list) {\r
+ TreeTestResult res = (TreeTestResult) testRes;\r
+\r
+ File file = getResultFile(res);\r
+ index.append("<tr><td><a href=\"").append(file.getName())\r
+ .append("\">");\r
+ index.append(res.getTestResultId()).append("</a></td></tr>\n");\r
+ generateResultPage(file, res);\r
+ }\r
+\r
+ index.append("</table>\n</body></html>");\r
+\r
+ try {\r
+ FileWriter writer = new FileWriter(reportDir.getPath()\r
+ + File.separator + "index.html");\r
+ writer.write(index.toString());\r
+ writer.close();\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ }\r
+ }\r
+\r
+ protected void generateResultPage(File file, TreeTestResult result) {\r
+ StringBuffer buf = new StringBuffer("");\r
+ buf.append("<html>\n");\r
+ buf.append("<header><title>Result #").append(result.getTestResultId())\r
+ .append("</title></header>\n");\r
+\r
+ buf.append("<body>\n");\r
+\r
+ buf.append("<h1>Result #").append(result.getTestResultId()).append(\r
+ "</h1>\n");\r
+\r
+ buf.append("<table border=1>\n");\r
+ for (TreeSPath path : result.getResultParts().keySet()) {\r
+ buf.append("<tr><td>").append(path).append("</td>\n");\r
+ buf.append("<td>");\r
+ PartSubList subList = (PartSubList) result.getResultParts().get(\r
+ path);\r
+ buf.append("<table border=0>\n");\r
+ for (TestResultPart part : subList.getParts()) {\r
+ SimpleResultPart sPart = (SimpleResultPart) part;\r
+ String color = "yellow";\r
+ if (sPart.getStatus() == SimpleResultPart.PASSED) {\r
+ color = "green";\r
+ } else {\r
+ color = "red";\r
+ }\r
+ buf.append("<tr><td style=\"color:").append(color)\r
+ .append("\">");\r
+\r
+ buf.append(sPart.getMessage());\r
+ buf.append("</td></tr>\n");\r
+ }\r
+ buf.append("</table>\n");\r
+\r
+ buf.append("</td></tr>\n");\r
+ }\r
+ buf.append("</table>\n");\r
+\r
+ buf.append("</body>");\r
+ buf.append("</html>");\r
+\r
+ try {\r
+ FileWriter writer = new FileWriter(file);\r
+ writer.write(buf.toString());\r
+ writer.close();\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ protected File getResultFile(TreeTestResult result) {\r
+ return new File(reportDir.getPath() + File.separator\r
+ + result.getTestResultId() + ".html");\r
+ }\r
+\r
+ public void setTestResultDao(TestResultDao testResultDao) {\r
+ this.testResultDao = testResultDao;\r
+ }\r
+\r
+ public void setReportDir(File reportDir) {\r
+ this.reportDir = reportDir;\r
+ }\r
+\r
+}\r