1 /***
2 * XMLSummary
3 *
4 * This is a summary coverage report
5 * in XML.
6 *
7 * Report looks like:
8 * <PRE>
9 * <?xml version="1.0"?>
10 *
11 * <CoverageReport date="2001/12/29 10:30AM">
12 * <Class name="...">
13 * <Method name="doSomething()V">
14 * <Coverage metric="stmt" percent="43.8" />
15 * </Method>
16 * ...
17 * </Class>
18 * ...
19 * </CoverageReport>
20 *</pre>
21 */
22
23 package junit.quilt.reports;
24
25 import java.io.OutputStream;
26 import java.io.OutputStreamWriter;
27 import java.io.PrintWriter;
28 import java.io.IOException;
29
30 import java.text.DateFormat;
31 import java.text.SimpleDateFormat;
32 import java.util.Date;
33 import java.util.Enumeration;
34
35 import java.util.Iterator;
36 import java.util.Set;
37 import java.util.Map;
38
39 import javax.swing.tree.*;
40
41 import junit.quilt.framework.*;
42
43 public class XMLSummary
44 extends Object
45 implements Report
46 {
47 public void writeNode( PrintWriter out,
48 QuiltRegistry registry,
49 int level,
50 String levels[],
51 TreeNode nodes[]) {
52
53 TreeNode node = nodes[level];
54
55 indentTo(out, level);
56 out.println("<" + levels[level] +
57 " name=\"" + nodes[level].toString() + "\">");
58
59 if (level == levels.length - 1) { // Base Case
60 TreePath tp = new TreePath( nodes );
61 QuiltCollector collect = registry.getCollector( tp );
62 if (collect != null) {
63 Set capabilities = collect.getCapabilities();
64 Iterator caps = capabilities.iterator();
65
66 while (caps.hasNext()) {
67 String cap = (String) caps.next();
68
69 Set all = collect.getAll(cap);
70 Set covered = collect.getCovered(cap);
71
72 indentTo(out, level + 1);
73 double perc = 100.0 * ((double) covered.size() /
74 (double) all.size());
75 out.println("<Coverage " +
76 "metric=\"" + cap + "\" " +
77 "total=\"" + all.size() + "\" " +
78 "covered=\"" + covered.size() + "\" " +
79 "percent=\"" + perc + "\" />");
80 }
81 }
82 } else {
83 Enumeration children = node.children();
84 while (children.hasMoreElements()) {
85 TreeNode next = (TreeNode) children.nextElement();
86 nodes[level + 1] = next;
87 writeNode(out, registry, level + 1, levels, nodes);
88 }
89 }
90
91 indentTo(out, level);
92 out.println("</" + levels[level] + ">");
93 }
94
95
96 public void writeReport( OutputStream out,
97 QuiltRegistry registry )
98 throws IOException
99 {
100 String levels[] = registry.getLevels();
101
102 PrintWriter pw = new PrintWriter( new OutputStreamWriter( out ) );
103 pw.println("<?xml version=\"1.0\"?>");
104 pw.println("<CoverageReport>");
105
106 TreeNode nodes[] = new TreeNode[levels.length];
107 nodes[0] = registry.getContents();
108
109 writeNode( pw, registry, 0, levels, nodes );
110 pw.println("</CoverageReport>");
111 pw.flush();
112 }
113
114 private void indentTo(PrintWriter out, int size) {
115 for (int j = 0; j < size + 1; j++) {
116 out.print(" ");
117 }
118 }
119 }
120
This page was automatically generated by Maven