01: /********************************************************************************
02: * CruiseControl, a Continuous Integration Toolkit
03: * Copyright (c) 2007, ThoughtWorks, Inc.
04: * 200 E. Randolph, 25th Floor
05: * Chicago, IL 60601 USA
06: * All rights reserved.
07: *
08: * Redistribution and use in source and binary forms, with or without
09: * modification, are permitted provided that the following conditions
10: * are met:
11: *
12: * + Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: *
15: * + Redistributions in binary form must reproduce the above
16: * copyright notice, this list of conditions and the following
17: * disclaimer in the documentation and/or other materials provided
18: * with the distribution.
19: *
20: * + Neither the name of ThoughtWorks, Inc., CruiseControl, nor the
21: * names of its contributors may be used to endorse or promote
22: * products derived from this software without specific prior
23: * written permission.
24: *
25: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
29: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36: ********************************************************************************/package net.sourceforge.cruisecontrol.dashboard.web;
37:
38: import java.util.HashMap;
39: import java.util.List;
40: import java.util.Map;
41:
42: import javax.servlet.http.HttpServletRequest;
43: import javax.servlet.http.HttpServletResponse;
44:
45: import net.sourceforge.cruisecontrol.dashboard.service.HistoricalBuildSummariesService;
46: import net.sourceforge.cruisecontrol.dashboard.service.BuildSummaryUIService;
47: import net.sourceforge.cruisecontrol.dashboard.utils.DashboardUtils;
48:
49: import org.springframework.web.servlet.ModelAndView;
50:
51: public class BuildListingController extends BaseMultiActionController {
52: private final HistoricalBuildSummariesService buildSummariesService;
53:
54: private final BuildSummaryUIService buildSummaryUIService;
55:
56: public BuildListingController(
57: HistoricalBuildSummariesService buildSummariesService,
58: BuildSummaryUIService buildSummaryUIService) {
59: this .buildSummariesService = buildSummariesService;
60: this .buildSummaryUIService = buildSummaryUIService;
61: this .setSupportedMethods(new String[] { "GET" });
62: }
63:
64: public ModelAndView all(HttpServletRequest request,
65: HttpServletResponse response) throws Exception {
66: List all = buildSummariesService
67: .getAll(getProjectName(request));
68: return process(getProjectName(request), "page_all_builds",
69: buildSummaryUIService.transform(all));
70: }
71:
72: public ModelAndView passed(HttpServletRequest request,
73: HttpServletResponse response) throws Exception {
74: List allSucceed = buildSummariesService
75: .getAllSucceed(getProjectName(request));
76: return process(getProjectName(request),
77: "page_all_successful_builds", buildSummaryUIService
78: .transform(allSucceed));
79: }
80:
81: private ModelAndView process(String projectName, String viewname,
82: List list) {
83: Map model = new HashMap();
84: model.put("buildCmds", list);
85: model.put("projectName", projectName);
86: return new ModelAndView(viewname, model);
87: }
88:
89: private String getProjectName(HttpServletRequest request) {
90: String[] url = DashboardUtils.urlToParams(request
91: .getRequestURI());
92: String projectName = DashboardUtils.decode(url[url.length - 1]);
93: return projectName;
94: }
95: }
|