1 package org.apache.continuum.taskqueue;
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.continuum.utils.build.BuildTrigger;
23 import org.codehaus.plexus.taskqueue.TaskQueue;
24 import org.codehaus.plexus.taskqueue.TaskQueueException;
25 import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
26
27 import java.util.List;
28
29 /**
30 * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
31 */
32 public interface OverallBuildQueue
33 {
34 /**
35 * Returns the id of the "overall" build queue
36 *
37 * @return
38 */
39 int getId();
40
41 void setId( int id );
42
43 /**
44 * Returns the name of the "overall" build queue
45 *
46 * @return
47 */
48 String getName();
49
50 void setName( String name );
51
52 /* Checkout Queue */
53
54 /**
55 * Returns the checkout queue.
56 *
57 * @return
58 */
59 TaskQueue getCheckoutQueue();
60
61 /**
62 * Add checkout task to checkout queue.
63 *
64 * @param checkoutTask
65 * @throws TaskQueueException TODO
66 */
67 void addToCheckoutQueue( CheckOutTask checkoutTask )
68 throws TaskQueueException;
69
70 /**
71 * Add checkout tasks to checkout queue.
72 *
73 * @param checkoutTasks
74 * @throws TaskQueueException TODO
75 */
76 void addToCheckoutQueue( List<CheckOutTask> checkoutTasks )
77 throws TaskQueueException;
78
79 /**
80 * Get all checkout tasks in checkout queue.
81 *
82 * @return
83 * @throws TaskQueueException TODO
84 */
85 List<CheckOutTask> getProjectsInCheckoutQueue()
86 throws TaskQueueException;
87
88 /**
89 * Check if the project is in the checkout queue.
90 *
91 * @param projectId
92 * @return
93 * @throws TaskQueueException TODO
94 */
95 boolean isInCheckoutQueue( int projectId )
96 throws TaskQueueException;
97
98 /**
99 * Cancel checkout of project.
100 *
101 * @param projectId
102 * @throws TaskQueueException
103 */
104 void cancelCheckoutTask( int projectId )
105 throws TaskQueueException;
106
107 /**
108 * Cancel current checkout.
109 *
110 * @return TODO
111 */
112 boolean cancelCurrentCheckout();
113
114 /**
115 * Remove project from checkout queue.
116 *
117 * @param projectId
118 * @return
119 * @throws TaskQueueException TODO
120 */
121 boolean removeProjectFromCheckoutQueue( int projectId )
122 throws TaskQueueException;
123
124 /**
125 * Remove the specified projects in the checkout queue.
126 *
127 * @param projectId
128 * @return
129 * @throws TaskQueueException TODO
130 */
131 boolean removeProjectsFromCheckoutQueue( int[] projectId )
132 throws TaskQueueException;
133
134 /**
135 * @param hashCodes
136 * @throws TaskQueueException TODO
137 */
138 void removeTasksFromCheckoutQueueWithHashCodes( int[] hashCodes )
139 throws TaskQueueException;
140
141 /* Prepare Build Queue */
142
143 /**
144 * Returns the prepare build queue.
145 *
146 * @return
147 */
148 TaskQueue getPrepareBuildQueue();
149
150 /**
151 * Add the prepare build task to the prepare build queue.
152 *
153 * @param prepareBuildTask
154 * @throws Exception
155 */
156 void addToPrepareBuildQueue( PrepareBuildProjectsTask prepareBuildTask )
157 throws TaskQueueException;
158
159 /**
160 * Add the prepare build tasks to the prepare build queue.
161 *
162 * @param prepareBuildTasks
163 * @throws TaskQueueException TODO
164 */
165 void addToPrepareBuildQueue( List<PrepareBuildProjectsTask> prepareBuildTasks )
166 throws TaskQueueException;
167
168 /**
169 * Returns the prepare build tasks in the prepare build queue.
170 *
171 * @return
172 * @throws TaskQueueException TODO
173 */
174 List<PrepareBuildProjectsTask> getProjectsInPrepareBuildQueue()
175 throws TaskQueueException;
176
177 /**
178 * Checks if the specified project is in the prepare build queue.
179 *
180 * @param projectId
181 * @return
182 * @throws TaskQueueException TODO
183 */
184 boolean isInPrepareBuildQueue( int projectId )
185 throws TaskQueueException;
186
187 /**
188 * Checks if the specified project group and scm root is in the prepare build queue.
189 *
190 * @param projectGroupId
191 * @param scmRootId
192 * @return
193 * @throws TaskQueueException
194 */
195 boolean isInPrepareBuildQueue( int projectGroupId, int scmRootId )
196 throws TaskQueueException;
197
198 /**
199 * Checks if the specified project group and scm root is in the prepare build queue.
200 *
201 * @param projectGroupId
202 * @param scmRootAddress
203 * @return
204 * @throws TaskQueueException
205 */
206 boolean isInPrepareBuildQueue( int projectGroupId, String scmRootAddress )
207 throws TaskQueueException;
208
209 /**
210 * Cancel the prepare build task of the corresponding project group and scm root.
211 *
212 * @param projectId
213 * @param scmRootId
214 */
215 void cancelPrepareBuildTask( int projectGroupId, int scmRootId );
216
217 /**
218 * Cancel the prepare build task of the corresponding project
219 *
220 * @param projectId
221 */
222 void cancelPrepareBuildTask( int projectId );
223
224 /**
225 * Cancel the current prepare build.
226 *
227 * @return
228 */
229 boolean cancelCurrentPrepareBuild();
230
231 /**
232 * Remove the project group matching the specified id, and scm root id from the prepare build queue.
233 *
234 * @param projectGroupId
235 * @param scmRootId
236 * @return
237 * @throws TaskQueueException TODO
238 */
239 boolean removeProjectFromPrepareBuildQueue( int projectGroupId, int scmRootId )
240 throws TaskQueueException;
241
242 /**
243 * Remove the project group matching the specified id and scm root address from the prepare build queue.
244 *
245 * @param projectId
246 * @param scmRootAddress
247 * @return
248 * @throws TaskQueueException TODO
249 */
250 boolean removeProjectFromPrepareBuildQueue( int projectGroupId, String scmRootAddress )
251 throws TaskQueueException;
252
253 /**
254 * Remove the projects matching the specified hashcodes from the prepare build queue.
255 *
256 * @param hashCodes
257 * @throws TaskQueueException TODO
258 */
259 void removeProjectsFromPrepareBuildQueueWithHashCodes( int[] hashCodes )
260 throws TaskQueueException;
261
262 /* Build Queue */
263
264 /**
265 * Returns the build queue.
266 *
267 * @return
268 */
269 TaskQueue getBuildQueue();
270
271 /**
272 * Add the build task to the build queue.
273 *
274 * @param buildTask
275 * @throws Exception
276 */
277 void addToBuildQueue( BuildProjectTask buildTask )
278 throws TaskQueueException;
279
280 /**
281 * Add the build tasks to the build queue.
282 *
283 * @param buildTasks
284 * @throws TaskQueueException TODO
285 */
286 void addToBuildQueue( List<BuildProjectTask> buildTasks )
287 throws TaskQueueException;
288
289 /**
290 * Returns the build tasks in the build queue.
291 *
292 * @return
293 * @throws TaskQueueException TODO
294 */
295 List<BuildProjectTask> getProjectsInBuildQueue()
296 throws TaskQueueException;
297
298 /**
299 * Checks if the specified project is in the build queue.
300 *
301 * @param projectId
302 * @return
303 * @throws TaskQueueException TODO
304 */
305 boolean isInBuildQueue( int projectId )
306 throws TaskQueueException;
307
308 /**
309 * Checks if the specified project with the specified build definition is in the build queue.
310 *
311 * @param projectId
312 * @param buildDefinitionId
313 * @return
314 * @throws TaskQueueException TODO
315 */
316 boolean isInBuildQueue( int projectId, int buildDefinitionId )
317 throws TaskQueueException;
318
319 /**
320 * Cancel the build task of the corresponding project.
321 *
322 * @param projectId
323 */
324 void cancelBuildTask( int projectId );
325
326 /**
327 * Cancel the current build.
328 *
329 * @return
330 */
331 boolean cancelCurrentBuild();
332
333 /**
334 * Remove the project matching the specified id, name, build definition and trigger from the build queue.
335 *
336 * @param projectId
337 * @param buildDefinitionId
338 * @param buildTrigger
339 * @param projectName
340 * @param projectGroupId
341 * @return
342 * @throws TaskQueueException TODO
343 */
344 boolean removeProjectFromBuildQueue( int projectId, int buildDefinitionId, BuildTrigger buildTrigger,
345 String projectName, int projectGroupId )
346 throws TaskQueueException;
347
348 /**
349 * Remove the specified project from the build queue.
350 *
351 * @param projectId
352 * @return
353 * @throws TaskQueueException TODO
354 */
355 boolean removeProjectFromBuildQueue( int projectId )
356 throws TaskQueueException;
357
358 /**
359 * Remove the specified projects from the build queue.
360 *
361 * @param projectIds
362 * @return
363 * @throws TaskQueueException TODO
364 */
365 boolean removeProjectsFromBuildQueue( int[] projectIds )
366 throws TaskQueueException;
367
368 /**
369 * Remove the projects matching the specified hashcodes from the build queue.
370 *
371 * @param hashCodes
372 * @throws TaskQueueException TODO
373 */
374 void removeProjectsFromBuildQueueWithHashCodes( int[] hashCodes )
375 throws TaskQueueException;
376
377 /**
378 * Returns the build task queue executor used.
379 *
380 * @return
381 */
382 TaskQueueExecutor getBuildTaskQueueExecutor();
383
384 /**
385 * Returns the checkout task queue executor used.
386 *
387 * @return
388 */
389 TaskQueueExecutor getCheckoutTaskQueueExecutor();
390
391 /**
392 * Returns the prepare build task queue executor used.
393 *
394 * @return
395 */
396 TaskQueueExecutor getPrepareBuildTaskQueueExecutor();
397 }