1 package org.apache.continuum.web.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
40
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
162 }
163 catch ( IOException e )
164 {
165
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 }