01: package net.sourceforge.cruisecontrol.dashboard.service;
02:
03: import net.sourceforge.cruisecontrol.dashboard.BuildSummary;
04: import net.sourceforge.cruisecontrol.dashboard.CurrentStatus;
05: import net.sourceforge.cruisecontrol.dashboard.utils.CCDateFormatter;
06: import net.sourceforge.cruisecontrol.BuildLoopInformation;
07:
08: import java.util.ArrayList;
09: import java.util.Collections;
10: import java.util.Iterator;
11: import java.util.List;
12: import java.util.Map;
13:
14: public class LatestBuildSummariesService {
15: private HistoricalBuildSummariesService historicalBuildSummariesService;
16: private BuildLoopQueryService buildLoopQueryService;
17:
18: public LatestBuildSummariesService(
19: HistoricalBuildSummariesService historicalBuildSummariesService,
20: BuildLoopQueryService buildLoopQueryService) {
21: this .historicalBuildSummariesService = historicalBuildSummariesService;
22: this .buildLoopQueryService = buildLoopQueryService;
23: }
24:
25: public BuildSummary getLatestProject(String projectName) {
26: BuildSummary buildSummary = (BuildSummary) this .historicalBuildSummariesService
27: .getLatest(projectName);
28: BuildLoopInformation.ProjectInfo projectInfo = buildLoopQueryService
29: .getProjectInfo(projectName);
30: String status = projectInfo.getStatus();
31: buildSummary.updateStatus(status);
32: if (CurrentStatus.BUILDING.equals(buildSummary
33: .getCurrentStatus())) {
34: buildSummary.updateBuildSince(CCDateFormatter
35: .iso8601(projectInfo.getBuildStartTime()));
36: }
37: buildSummary.setServerName(buildLoopQueryService
38: .getServerName(buildSummary.getProjectName()));
39: return buildSummary;
40: }
41:
42: public List getLatestOfProjects() {
43: List allSummaries = new ArrayList();
44: Map buildLiveStatuses = buildLoopQueryService
45: .getAllProjectsStatus();
46:
47: allSummaries.addAll(historicalBuildSummariesService
48: .createInactiveProjects());
49: allSummaries.addAll(historicalBuildSummariesService
50: .createActiveProjects());
51: allSummaries.addAll(historicalBuildSummariesService
52: .createDiscontinuedProjects());
53: for (Iterator iter = allSummaries.iterator(); iter.hasNext();) {
54: BuildSummary buildSummary = (BuildSummary) iter.next();
55: if (!buildLiveStatuses.containsKey(buildSummary
56: .getProjectName())) {
57: continue;
58: } else {
59: buildSummary.updateStatus((String) buildLiveStatuses
60: .get(buildSummary.getProjectName()));
61: if (CurrentStatus.BUILDING.equals(buildSummary
62: .getCurrentStatus())) {
63: String time = buildLoopQueryService.getProjectInfo(
64: buildSummary.getProjectName())
65: .getBuildStartTime();
66: buildSummary.updateBuildSince(CCDateFormatter
67: .iso8601(time));
68: }
69: buildSummary.setServerName(buildLoopQueryService
70: .getServerName(buildSummary.getProjectName()));
71: }
72: }
73: Collections.sort(allSummaries);
74: return allSummaries;
75: }
76: }
|