1 package org.apache.maven.continuum.web.action.component;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.maven.continuum.ContinuumException;
26 import org.apache.maven.continuum.model.project.BuildDefinition;
27 import org.apache.maven.continuum.model.project.Project;
28 import org.apache.maven.continuum.model.project.ProjectGroup;
29 import org.apache.maven.continuum.web.action.AbstractBuildDefinitionAction;
30 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
31 import org.apache.maven.continuum.web.model.BuildDefinitionSummary;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35
36
37
38
39
40
41
42 public class BuildDefinitionSummaryAction
43 extends AbstractBuildDefinitionAction
44 {
45 private static final Logger logger = LoggerFactory.getLogger( BuildDefinitionSummaryAction.class );
46
47 private int projectGroupId;
48
49 private String projectGroupName;
50
51 private int projectId;
52
53
54 private int defaultGroupDefinitionId;
55
56 private ProjectGroup projectGroup;
57
58 private List<BuildDefinitionSummary> projectBuildDefinitionSummaries = new ArrayList<BuildDefinitionSummary>();
59
60 private List<BuildDefinitionSummary> groupBuildDefinitionSummaries = new ArrayList<BuildDefinitionSummary>();
61
62 private List<BuildDefinitionSummary> allBuildDefinitionSummaries = new ArrayList<BuildDefinitionSummary>();
63
64
65
66 public String summarizeForProject()
67 {
68 try
69 {
70 projectGroup = getContinuum().getProjectGroupByProjectId( projectId );
71 projectGroupId = projectGroup.getId();
72 projectGroupName = projectGroup.getName();
73
74 checkViewProjectGroupAuthorization( projectGroupName );
75
76 groupBuildDefinitionSummaries = gatherGroupBuildDefinitionSummaries( projectGroupId );
77 projectBuildDefinitionSummaries = gatherProjectBuildDefinitionSummaries( projectId );
78
79 fixDefaultBuildDefinitions();
80
81 allBuildDefinitionSummaries.addAll( groupBuildDefinitionSummaries );
82 allBuildDefinitionSummaries.addAll( projectBuildDefinitionSummaries );
83 }
84 catch ( ContinuumException e )
85 {
86 logger.info( "unable to build summary" );
87 return ERROR;
88 }
89 catch ( AuthorizationRequiredException authzE )
90 {
91 addActionError( authzE.getMessage() );
92 return REQUIRES_AUTHORIZATION;
93 }
94
95 return SUCCESS;
96 }
97
98 public String summarizeForGroup()
99 {
100 try
101 {
102 groupBuildDefinitionSummaries = gatherGroupBuildDefinitionSummaries( projectGroupId );
103
104 projectGroup = getContinuum().getProjectGroupWithProjects( projectGroupId );
105
106 checkViewProjectGroupAuthorization( projectGroup.getName() );
107
108 for ( Project project : (List<Project>) projectGroup.getProjects() )
109 {
110 projectBuildDefinitionSummaries.addAll( gatherProjectBuildDefinitionSummaries( project.getId() ) );
111
112 }
113
114 allBuildDefinitionSummaries.addAll( groupBuildDefinitionSummaries );
115 allBuildDefinitionSummaries.addAll( projectBuildDefinitionSummaries );
116 }
117 catch ( ContinuumException e )
118 {
119 logger.info( "unable to build summary" );
120 return ERROR;
121 }
122 catch ( AuthorizationRequiredException authzE )
123 {
124 addActionError( authzE.getMessage() );
125 return REQUIRES_AUTHORIZATION;
126 }
127
128 return SUCCESS;
129 }
130
131 private void fixDefaultBuildDefinitions()
132 {
133 boolean containsDefaultBDForProject = false;
134
135 for ( BuildDefinitionSummary bds : projectBuildDefinitionSummaries )
136 {
137 if ( bds.isIsDefault() )
138 {
139 containsDefaultBDForProject = true;
140 }
141 }
142
143 for ( BuildDefinitionSummary bds : groupBuildDefinitionSummaries )
144 {
145 if ( bds.isIsDefault() )
146 {
147 defaultGroupDefinitionId = bds.getId();
148 }
149
150 if ( containsDefaultBDForProject )
151 {
152 bds.setIsDefault( false );
153 }
154 }
155 }
156
157 private List<BuildDefinitionSummary> gatherProjectBuildDefinitionSummaries( int projectId )
158 throws ContinuumException
159 {
160 List<BuildDefinitionSummary> summaryList = new ArrayList<BuildDefinitionSummary>();
161
162 Project project = getContinuum().getProjectWithAllDetails( projectId );
163 for ( BuildDefinition bd : (List<BuildDefinition>) project.getBuildDefinitions() )
164 {
165 BuildDefinitionSummary bds = generateBuildDefinitionSummary( bd );
166 bds.setFrom( "PROJECT" );
167 bds.setProjectId( project.getId() );
168 bds.setProjectName( project.getName() );
169
170 summaryList.add( bds );
171 }
172
173 return summaryList;
174 }
175
176 private List<BuildDefinitionSummary> gatherGroupBuildDefinitionSummaries( int projectGroupId )
177 throws ContinuumException
178 {
179 List<BuildDefinitionSummary> summaryList = new ArrayList<BuildDefinitionSummary>();
180
181 projectGroup = getContinuum().getProjectGroupWithBuildDetails( projectGroupId );
182
183 for ( BuildDefinition bd : (List<BuildDefinition>) projectGroup.getBuildDefinitions() )
184 {
185 BuildDefinitionSummary bds = generateBuildDefinitionSummary( bd );
186 bds.setFrom( "GROUP" );
187 bds.setProjectGroupId( projectGroup.getId() );
188
189 summaryList.add( bds );
190 }
191
192 return summaryList;
193 }
194
195
196 public int getProjectId()
197 {
198 return projectId;
199 }
200
201 public void setProjectId( int projectId )
202 {
203 this.projectId = projectId;
204 }
205
206 public int getProjectGroupId()
207 {
208 return projectGroupId;
209 }
210
211 public void setProjectGroupId( int projectGroupId )
212 {
213 this.projectGroupId = projectGroupId;
214 }
215
216 public String getProjectGroupName()
217 {
218 return projectGroupName;
219 }
220
221 public void setProjectGroupName( String projectGroupName )
222 {
223 this.projectGroupName = projectGroupName;
224 }
225
226 public List<BuildDefinitionSummary> getProjectBuildDefinitionSummaries()
227 {
228 return projectBuildDefinitionSummaries;
229 }
230
231 public void setProjectBuildDefinitionSummaries( List<BuildDefinitionSummary> projectBuildDefinitionSummaries )
232 {
233 this.projectBuildDefinitionSummaries = projectBuildDefinitionSummaries;
234 }
235
236 public List<BuildDefinitionSummary> getGroupBuildDefinitionSummaries()
237 {
238 return groupBuildDefinitionSummaries;
239 }
240
241 public void setGroupBuildDefinitionSummaries( List<BuildDefinitionSummary> groupBuildDefinitionSummaries )
242 {
243 this.groupBuildDefinitionSummaries = groupBuildDefinitionSummaries;
244 }
245
246 public List<BuildDefinitionSummary> getAllBuildDefinitionSummaries()
247 {
248 return allBuildDefinitionSummaries;
249 }
250
251 public void setAllBuildDefinitionSummaries( List<BuildDefinitionSummary> allBuildDefinitionSummaries )
252 {
253 this.allBuildDefinitionSummaries = allBuildDefinitionSummaries;
254 }
255
256 public ProjectGroup getProjectGroup()
257 {
258 return projectGroup;
259 }
260
261 public void setProjectGroup( ProjectGroup projectGroup )
262 {
263 this.projectGroup = projectGroup;
264 }
265
266 public int getDefaultGroupDefinitionId()
267 {
268 return defaultGroupDefinitionId;
269 }
270 }