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 org.apache.maven.continuum.ContinuumException;
23 import org.apache.maven.continuum.model.project.BuildDefinition;
24 import org.apache.maven.continuum.model.project.Project;
25 import org.apache.maven.continuum.model.project.ProjectGroup;
26 import org.apache.maven.continuum.web.action.AbstractBuildDefinitionAction;
27 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
28 import org.apache.maven.continuum.web.model.BuildDefinitionSummary;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 import java.util.ArrayList;
33 import java.util.List;
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, projectGroupId );
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 projectGroupId ) );
112
113 }
114
115 allBuildDefinitionSummaries.addAll( groupBuildDefinitionSummaries );
116 allBuildDefinitionSummaries.addAll( projectBuildDefinitionSummaries );
117 }
118 catch ( ContinuumException e )
119 {
120 logger.info( "unable to build summary" );
121 return ERROR;
122 }
123 catch ( AuthorizationRequiredException authzE )
124 {
125 addActionError( authzE.getMessage() );
126 return REQUIRES_AUTHORIZATION;
127 }
128
129 return SUCCESS;
130 }
131
132 private void fixDefaultBuildDefinitions()
133 {
134 boolean containsDefaultBDForProject = false;
135
136 for ( BuildDefinitionSummary bds : projectBuildDefinitionSummaries )
137 {
138 if ( bds.isIsDefault() )
139 {
140 containsDefaultBDForProject = true;
141 }
142 }
143
144 for ( BuildDefinitionSummary bds : groupBuildDefinitionSummaries )
145 {
146 if ( bds.isIsDefault() )
147 {
148 defaultGroupDefinitionId = bds.getId();
149 }
150
151 if ( containsDefaultBDForProject )
152 {
153 bds.setIsDefault( false );
154 }
155 }
156 }
157
158 private List<BuildDefinitionSummary> gatherProjectBuildDefinitionSummaries( int projectId, int projectGroupId )
159 throws ContinuumException
160 {
161 List<BuildDefinitionSummary> summaryList = new ArrayList<BuildDefinitionSummary>();
162
163 Project project = getContinuum().getProjectWithAllDetails( projectId );
164 for ( BuildDefinition bd : (List<BuildDefinition>) project.getBuildDefinitions() )
165 {
166 BuildDefinitionSummary bds = generateBuildDefinitionSummary( bd );
167 bds.setFrom( "PROJECT" );
168 bds.setProjectId( project.getId() );
169 bds.setProjectName( project.getName() );
170 bds.setProjectGroupId( projectGroupId );
171
172 summaryList.add( bds );
173 }
174
175 return summaryList;
176 }
177
178 private List<BuildDefinitionSummary> gatherGroupBuildDefinitionSummaries( int projectGroupId )
179 throws ContinuumException
180 {
181 List<BuildDefinitionSummary> summaryList = new ArrayList<BuildDefinitionSummary>();
182
183 projectGroup = getContinuum().getProjectGroupWithBuildDetails( projectGroupId );
184
185 for ( BuildDefinition bd : (List<BuildDefinition>) projectGroup.getBuildDefinitions() )
186 {
187 BuildDefinitionSummary bds = generateBuildDefinitionSummary( bd );
188 bds.setFrom( "GROUP" );
189 bds.setProjectGroupId( projectGroup.getId() );
190
191 summaryList.add( bds );
192 }
193
194 return summaryList;
195 }
196
197
198 public int getProjectId()
199 {
200 return projectId;
201 }
202
203 public void setProjectId( int projectId )
204 {
205 this.projectId = projectId;
206 }
207
208 public int getProjectGroupId()
209 {
210 return projectGroupId;
211 }
212
213 public void setProjectGroupId( int projectGroupId )
214 {
215 this.projectGroupId = projectGroupId;
216 }
217
218 public String getProjectGroupName()
219 {
220 return projectGroupName;
221 }
222
223 public void setProjectGroupName( String projectGroupName )
224 {
225 this.projectGroupName = projectGroupName;
226 }
227
228 public List<BuildDefinitionSummary> getProjectBuildDefinitionSummaries()
229 {
230 return projectBuildDefinitionSummaries;
231 }
232
233 public void setProjectBuildDefinitionSummaries( List<BuildDefinitionSummary> projectBuildDefinitionSummaries )
234 {
235 this.projectBuildDefinitionSummaries = projectBuildDefinitionSummaries;
236 }
237
238 public List<BuildDefinitionSummary> getGroupBuildDefinitionSummaries()
239 {
240 return groupBuildDefinitionSummaries;
241 }
242
243 public void setGroupBuildDefinitionSummaries( List<BuildDefinitionSummary> groupBuildDefinitionSummaries )
244 {
245 this.groupBuildDefinitionSummaries = groupBuildDefinitionSummaries;
246 }
247
248 public List<BuildDefinitionSummary> getAllBuildDefinitionSummaries()
249 {
250 return allBuildDefinitionSummaries;
251 }
252
253 public void setAllBuildDefinitionSummaries( List<BuildDefinitionSummary> allBuildDefinitionSummaries )
254 {
255 this.allBuildDefinitionSummaries = allBuildDefinitionSummaries;
256 }
257
258 public ProjectGroup getProjectGroup()
259 {
260 return projectGroup;
261 }
262
263 public void setProjectGroup( ProjectGroup projectGroup )
264 {
265 this.projectGroup = projectGroup;
266 }
267
268 public int getDefaultGroupDefinitionId()
269 {
270 return defaultGroupDefinitionId;
271 }
272 }