1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
package autotest.planner.machine;
import autotest.common.Utils;
import autotest.planner.TestPlannerTableDisplay;
import autotest.planner.TestPlannerTableDisplay.RowDisplay;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class MachineViewTable {
public static class Row {
String machine;
String status;
Map<String, StatusSummary> statusSummaries;
List<String> bugIds;
private Row(String machine, String status,
Map<String, StatusSummary> statusSummaries, List<String> bugIds) {
this.machine = machine;
this.status = status;
this.statusSummaries = statusSummaries;
this.bugIds = bugIds;
}
public static Row fromJsonObject(JSONObject rowObject) {
Map<String, StatusSummary> statusSummaries = new HashMap<String, StatusSummary>();
JSONArray testsRun = rowObject.get("tests_run").isArray();
for (int i = 0; i < testsRun.size(); i++) {
JSONObject test = testsRun.get(i).isObject();
String testName = Utils.jsonToString(test.get("test_name"));
StatusSummary statusSummary = statusSummaries.get(testName);
if (statusSummary == null) {
statusSummary = new StatusSummary();
statusSummaries.put(testName, statusSummary);
}
statusSummary.addStatus(Utils.jsonToString(test.get("status")));
}
return new Row(Utils.jsonToString(rowObject.get("machine")),
Utils.jsonToString(rowObject.get("status")),
statusSummaries,
Arrays.asList(Utils.JSONtoStrings(rowObject.get("bug_ids").isArray())));
}
}
private TestPlannerTableDisplay display;
private List<Row> rows = new ArrayList<Row>();
public void bindDisplay(TestPlannerTableDisplay display) {
this.display = display;
}
public void setData(JSONArray data) {
for (int i = 0; i < data.size(); i++) {
rows.add(Row.fromJsonObject(data.get(i).isObject()));
}
display.clearData();
displayData();
}
private void displayData() {
Set<String> allTestNames = new TreeSet<String>();
for (Row row : rows) {
allTestNames.addAll(row.statusSummaries.keySet());
}
List<String> headers = new ArrayList<String>();
headers.add("Machine");
headers.add("Status");
headers.addAll(allTestNames);
headers.add("Bugs Filed");
display.setHeaders(headers);
for (Row row : rows) {
List<RowDisplay> rowData = new ArrayList<RowDisplay>();
rowData.add(new RowDisplay(row.machine));
rowData.add(new RowDisplay(row.status));
for (String testName : allTestNames) {
StatusSummary statusSummary = row.statusSummaries.get(testName);
if (statusSummary != null) {
rowData.add(new RowDisplay(
statusSummary.formatStatusCounts(), statusSummary.getCssClass()));
} else {
rowData.add(new RowDisplay(""));
}
}
rowData.add(new RowDisplay(String.valueOf(row.bugIds.size())));
display.addRow(rowData);
}
display.finalRender();
}
}
|