]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/FullHtmlTreeReport.java
Basic reporting
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / core / test / tree / FullHtmlTreeReport.java
1 package org.argeo.slc.core.test.tree;
2
3 import java.io.File;
4 import java.io.FileWriter;
5 import java.io.IOException;
6 import java.util.List;
7
8 import org.argeo.slc.core.structure.tree.TreeSPath;
9 import org.argeo.slc.core.test.SimpleResultPart;
10 import org.argeo.slc.core.test.TestReport;
11 import org.argeo.slc.core.test.TestResult;
12 import org.argeo.slc.core.test.TestResultPart;
13 import org.argeo.slc.dao.test.TestResultDao;
14
15 public class FullHtmlTreeReport implements TestReport {
16 private TestResultDao testResultDao;
17 private File reportDir;
18
19 public void generateTestReport(TestResult testResult) {
20 if (testResultDao == null) {
21 TreeTestResult result = (TreeTestResult) testResult;
22 generateResultPage(getResultFile(result), result);
23 } else {
24 if (reportDir.exists()) {
25 // clean
26 for (File file : reportDir.listFiles()) {
27 file.delete();
28 }
29 }
30 reportDir.mkdirs();
31
32 StringBuffer index = new StringBuffer("");
33 index
34 .append("<html><header><title>Results</title></header><body>\n<table border=1>\n");
35
36 List<TestResult> list = testResultDao.listTestResults();
37 for (TestResult testRes : list) {
38 TreeTestResult res = (TreeTestResult) testRes;
39
40 File file = getResultFile(res);
41 index.append("<tr><td><a href=\"").append(file.getName())
42 .append("\">");
43 index.append(res.getTestResultId()).append("</a></td></tr>\n");
44 generateResultPage(file, res);
45 }
46
47 index.append("</table>\n</body></html>");
48
49 try {
50 FileWriter writer = new FileWriter(reportDir.getPath()
51 + File.separator + "index.html");
52 writer.write(index.toString());
53 writer.close();
54 } catch (IOException e) {
55 e.printStackTrace();
56 }
57
58 }
59 }
60
61 protected void generateResultPage(File file, TreeTestResult result) {
62 StringBuffer buf = new StringBuffer("");
63 buf.append("<html>\n");
64 buf.append("<header><title>Result #").append(result.getTestResultId())
65 .append("</title></header>\n");
66
67 buf.append("<body>\n");
68
69 buf.append("<h1>Result #").append(result.getTestResultId()).append(
70 "</h1>\n");
71
72 buf.append("<table border=1>\n");
73 for (TreeSPath path : result.getResultParts().keySet()) {
74 buf.append("<tr><td>").append(path).append("</td>\n");
75 buf.append("<td>");
76 PartSubList subList = (PartSubList) result.getResultParts().get(
77 path);
78 buf.append("<table border=0>\n");
79 for (TestResultPart part : subList.getParts()) {
80 SimpleResultPart sPart = (SimpleResultPart) part;
81 String color = "yellow";
82 if (sPart.getStatus() == SimpleResultPart.PASSED) {
83 color = "green";
84 } else {
85 color = "red";
86 }
87 buf.append("<tr><td style=\"color:").append(color)
88 .append("\">");
89
90 buf.append(sPart.getMessage());
91 buf.append("</td></tr>\n");
92 }
93 buf.append("</table>\n");
94
95 buf.append("</td></tr>\n");
96 }
97 buf.append("</table>\n");
98
99 buf.append("</body>");
100 buf.append("</html>");
101
102 try {
103 FileWriter writer = new FileWriter(file);
104 writer.write(buf.toString());
105 writer.close();
106 } catch (IOException e) {
107 e.printStackTrace();
108 }
109 }
110
111 protected File getResultFile(TreeTestResult result) {
112 return new File(reportDir.getPath() + File.separator
113 + result.getTestResultId() + ".html");
114 }
115
116 public void setTestResultDao(TestResultDao testResultDao) {
117 this.testResultDao = testResultDao;
118 }
119
120 public void setReportDir(File reportDir) {
121 this.reportDir = reportDir;
122 }
123
124 }