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 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   * BuildDefinitionSummaryAction:
37   *
38   * @author Jesse McConnell <jmcconnell@apache.org>
39   * @version $Id: BuildDefinitionSummaryAction.java 771523 2009-05-05 02:19:07Z ctan $
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 );
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 }