View Javadoc

1   package org.apache.maven.continuum.web.action.component;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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   * BuildDefinitionSummaryAction:
37   *
38   * @author Jesse McConnell <jmcconnell@apache.org>
39   * @version $Id: BuildDefinitionSummaryAction.java 1372260 2012-08-13 04:29:09Z brett $
40   * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="buildDefinitionSummary"
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      // Allow dont remove default group build definition in project list 
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      //profileName
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 }