View Javadoc

1   package org.apache.continuum.web.action;
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.io.File;
23  import java.io.IOException;
24  import java.util.List;
25  
26  import org.apache.commons.lang.StringEscapeUtils;
27  import org.apache.continuum.model.release.ContinuumReleaseResult;
28  import org.apache.maven.continuum.ContinuumException;
29  import org.apache.maven.continuum.configuration.ConfigurationException;
30  import org.apache.maven.continuum.model.project.ProjectGroup;
31  import org.apache.maven.continuum.web.action.ContinuumConfirmAction;
32  import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
33  import org.apache.maven.shared.release.ReleaseResult;
34  import org.codehaus.plexus.util.FileUtils;
35  import org.slf4j.Logger;
36  import org.slf4j.LoggerFactory;
37  
38  /**
39   * @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
40   * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="releaseResult"
41   */
42  public class ReleaseResultAction
43      extends ContinuumConfirmAction
44  {
45      private static final Logger logger = LoggerFactory.getLogger( ReleaseResultAction.class );
46  
47      private int projectGroupId;
48  
49      private int releaseResultId;
50  
51      private List<ContinuumReleaseResult> releaseResults;
52  
53      private List<String> selectedReleaseResults;
54  
55      private ProjectGroup projectGroup;
56  
57      private ReleaseResult result;
58  
59      private boolean confirmed;
60  
61      private String projectName;
62  
63      private String releaseGoal;
64  
65      public String list()
66          throws ContinuumException
67      {
68          try
69          {
70              checkViewProjectGroupAuthorization( getProjectGroupName() );
71          }
72          catch ( AuthorizationRequiredException authzE )
73          {
74              addActionError( authzE.getMessage() );
75              return REQUIRES_AUTHORIZATION;
76          }
77  
78          releaseResults = getContinuum().getContinuumReleaseResultsByProjectGroup( projectGroupId );
79  
80          return SUCCESS;
81  
82      }
83  
84      public String remove()
85          throws ContinuumException
86      {
87          try
88          {
89              checkModifyProjectGroupAuthorization( getProjectGroupName() );
90          }
91          catch ( AuthorizationRequiredException e )
92          {
93              return REQUIRES_AUTHORIZATION;
94          }
95  
96          if ( confirmed )
97          {
98              if ( selectedReleaseResults != null && !selectedReleaseResults.isEmpty() )
99              {
100                 for ( String id : selectedReleaseResults )
101                 {
102                     int resultId = Integer.parseInt( id );
103 
104                     try
105                     {
106                         logger.info( "Removing ContinuumReleaseResult with id=" + resultId );
107 
108                         getContinuum().removeContinuumReleaseResult( resultId );
109                     }
110                     catch ( ContinuumException e )
111                     {
112                         logger.error( "Error removing ContinuumReleaseResult with id=" + resultId );
113                         addActionError( getText( "Unable to remove ContinuumReleaseResult with id=" + resultId ) );
114                     }
115                 }
116             }
117             return SUCCESS;
118         }
119 
120         return CONFIRM;
121     }
122 
123     public String viewResult()
124         throws ContinuumException
125     {
126         try
127         {
128             checkViewProjectGroupAuthorization( getProjectGroupName() );
129         }
130         catch ( AuthorizationRequiredException authzE )
131         {
132             addActionError( authzE.getMessage() );
133             return REQUIRES_AUTHORIZATION;
134         }
135 
136         ContinuumReleaseResult releaseResult = getContinuum().getContinuumReleaseResult( releaseResultId );
137 
138         result = new ReleaseResult();
139         result.setStartTime( releaseResult.getStartTime() );
140         result.setEndTime( releaseResult.getEndTime() );
141         result.setResultCode( releaseResult.getResultCode() );
142 
143         releaseGoal = releaseResult.getReleaseGoal();
144         projectName = releaseResult.getProject().getName();
145 
146         try
147         {
148             File releaseOutputFile = getContinuum().getConfiguration().getReleaseOutputFile( projectGroupId,
149                                                                                              "releases-" +
150                                                                                                  releaseResult.getStartTime() )
151                 ;
152 
153             if ( releaseOutputFile.exists() )
154             {
155                 String str = StringEscapeUtils.escapeHtml( FileUtils.fileRead( releaseOutputFile ) );
156                 result.appendOutput( str );
157             }
158         }
159         catch ( ConfigurationException e )
160         {
161             //getLogger().error( "" );
162         }
163         catch ( IOException e )
164         {
165             //getLogger().error( "" );
166         }
167 
168         return SUCCESS;
169     }
170 
171     public String getProjectGroupName()
172         throws ContinuumException
173     {
174 
175         return getProjectGroup( projectGroupId ).getName();
176     }
177 
178     public ProjectGroup getProjectGroup( int projectGroupId )
179         throws ContinuumException
180     {
181         if ( projectGroup == null )
182         {
183             projectGroup = getContinuum().getProjectGroup( projectGroupId );
184         }
185         else
186         {
187             if ( projectGroup.getId() != projectGroupId )
188             {
189                 projectGroup = getContinuum().getProjectGroup( projectGroupId );
190             }
191         }
192 
193         return projectGroup;
194     }
195 
196     public ProjectGroup getProjectGroup()
197     {
198         return projectGroup;
199     }
200 
201     public void setProjectGroup( ProjectGroup projectGroup )
202     {
203         this.projectGroup = projectGroup;
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 int getReleaseResultId()
217     {
218         return releaseResultId;
219     }
220 
221     public void setReleaseResultId( int releaseResultId )
222     {
223         this.releaseResultId = releaseResultId;
224     }
225 
226     public List<ContinuumReleaseResult> getReleaseResults()
227     {
228         return releaseResults;
229     }
230 
231     public void setReleaseResults( List<ContinuumReleaseResult> releaseResults )
232     {
233         this.releaseResults = releaseResults;
234     }
235 
236     public List<String> getSelectedReleaseResults()
237     {
238         return selectedReleaseResults;
239     }
240 
241     public void setSelectedReleaseResults( List<String> selectedReleaseResults )
242     {
243         this.selectedReleaseResults = selectedReleaseResults;
244     }
245 
246     public ReleaseResult getResult()
247     {
248         return result;
249     }
250 
251     public void setResult( ReleaseResult result )
252     {
253         this.result = result;
254     }
255 
256     public boolean isConfirmed()
257     {
258         return confirmed;
259     }
260 
261     public void setConfirmed( boolean confirmed )
262     {
263         this.confirmed = confirmed;
264     }
265 
266     public String getProjectName()
267     {
268         return projectName;
269     }
270 
271     public void setProjectName( String projectName )
272     {
273         this.projectName = projectName;
274     }
275 
276     public String getReleaseGoal()
277     {
278         return releaseGoal;
279     }
280 
281     public void setReleaseGoal( String releaseGoal )
282     {
283         this.releaseGoal = releaseGoal;
284     }
285 }