View Javadoc

1   package org.apache.maven.continuum.web.action.admin;
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.commons.lang.ArrayUtils;
23  import org.apache.continuum.buildmanager.BuildManagerException;
24  import org.apache.continuum.taskqueue.BuildProjectTask;
25  import org.apache.continuum.taskqueue.CheckOutTask;
26  import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
27  import org.apache.continuum.utils.build.BuildTrigger;
28  import org.apache.maven.continuum.model.project.Project;
29  import org.apache.maven.continuum.model.project.ProjectGroup;
30  import org.apache.maven.continuum.security.ContinuumRoleConstants;
31  import org.apache.maven.continuum.web.action.ContinuumActionSupport;
32  import org.apache.maven.continuum.web.bean.BuildProjectQueue;
33  import org.apache.maven.continuum.web.bean.CheckoutQueue;
34  import org.apache.maven.continuum.web.exception.AuthenticationRequiredException;
35  import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
36  import org.apache.maven.continuum.web.model.DistributedBuildSummary;
37  import org.apache.maven.continuum.web.model.PrepareBuildSummary;
38  import org.codehaus.plexus.redback.rbac.Resource;
39  import org.codehaus.redback.integration.interceptor.SecureAction;
40  import org.codehaus.redback.integration.interceptor.SecureActionBundle;
41  import org.codehaus.redback.integration.interceptor.SecureActionException;
42  import org.slf4j.Logger;
43  import org.slf4j.LoggerFactory;
44  
45  import java.util.ArrayList;
46  import java.util.List;
47  import java.util.Map;
48  import java.util.Set;
49  
50  /**
51   * @author <a href="mailto:olamy@apache.org">olamy</a>
52   * @version $Id: QueuesAction.java 1372260 2012-08-13 04:29:09Z brett $
53   * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="queues"
54   * @since 24 sept. 07
55   */
56  public class QueuesAction
57      extends ContinuumActionSupport
58      implements SecureAction
59  {
60      private static final Logger logger = LoggerFactory.getLogger( QueuesAction.class );
61  
62      private static final String DISTRIBUTED_BUILD_SUCCESS = "distributed-build-success";
63  
64      private List<String> selectedPrepareBuildTaskHashCodes;
65  
66      private List<String> selectedBuildTaskHashCodes;
67  
68      private List<String> selectedCheckOutTaskHashCodes;
69  
70      private int buildDefinitionId;
71  
72      private int projectId;
73  
74      private int trigger;
75  
76      private String projectName;
77  
78      private List<BuildProjectQueue> currentBuildProjectTasks = new ArrayList<BuildProjectQueue>();
79  
80      private List<CheckoutQueue> currentCheckoutTasks = new ArrayList<CheckoutQueue>();
81  
82      private List<BuildProjectQueue> buildsInQueue = new ArrayList<BuildProjectQueue>();
83  
84      private List<CheckoutQueue> checkoutsInQueue = new ArrayList<CheckoutQueue>();
85  
86      private List<PrepareBuildSummary> currentPrepareBuilds = new ArrayList<PrepareBuildSummary>();
87  
88      private List<PrepareBuildSummary> prepareBuildQueues = new ArrayList<PrepareBuildSummary>();
89  
90      private List<PrepareBuildSummary> currentDistributedPrepareBuilds = new ArrayList<PrepareBuildSummary>();
91  
92      private List<PrepareBuildSummary> distributedPrepareBuildQueues = new ArrayList<PrepareBuildSummary>();
93  
94      private List<DistributedBuildSummary> currentDistributedBuilds = new ArrayList<DistributedBuildSummary>();
95  
96      private List<DistributedBuildSummary> distributedBuildQueues = new ArrayList<DistributedBuildSummary>();
97  
98      private String buildAgentUrl;
99  
100     private int projectGroupId;
101 
102     private int scmRootId;
103 
104     // -----------------------------------------------------
105     //  webwork
106     // -----------------------------------------------------
107 
108     public String cancelCurrent()
109         throws Exception
110     {
111         try
112         {
113             checkManageQueuesAuthorization();
114         }
115         catch ( AuthorizationRequiredException authzE )
116         {
117             addActionError( authzE.getMessage() );
118             return REQUIRES_AUTHORIZATION;
119         }
120         catch ( AuthenticationRequiredException e )
121         {
122             addActionError( e.getMessage() );
123             return REQUIRES_AUTHENTICATION;
124         }
125 
126         try
127         {
128             getContinuum().getBuildsManager().cancelBuild( projectId );
129         }
130         catch ( BuildManagerException e )
131         {
132             addActionError( e.getMessage() );
133             return ERROR;
134         }
135 
136         return SUCCESS;
137     }
138 
139     public String removeCheckout()
140         throws Exception
141     {
142         try
143         {
144             checkManageQueuesAuthorization();
145         }
146         catch ( AuthorizationRequiredException authzE )
147         {
148             addActionError( authzE.getMessage() );
149             return REQUIRES_AUTHORIZATION;
150         }
151         catch ( AuthenticationRequiredException e )
152         {
153             addActionError( e.getMessage() );
154             return REQUIRES_AUTHENTICATION;
155         }
156 
157         try
158         {
159             getContinuum().getBuildsManager().removeProjectFromCheckoutQueue( projectId );
160         }
161         catch ( BuildManagerException e )
162         {
163             addActionError( e.getMessage() );
164             return ERROR;
165         }
166 
167         return SUCCESS;
168     }
169 
170     public String cancelCurrentCheckout()
171         throws Exception
172     {
173         try
174         {
175             checkManageQueuesAuthorization();
176         }
177         catch ( AuthorizationRequiredException authzE )
178         {
179             addActionError( authzE.getMessage() );
180             return REQUIRES_AUTHORIZATION;
181         }
182         catch ( AuthenticationRequiredException e )
183         {
184             addActionError( e.getMessage() );
185             return REQUIRES_AUTHENTICATION;
186         }
187         try
188         {
189             cancelCheckout( projectId );
190         }
191         catch ( BuildManagerException e )
192         {
193             addActionError( e.getMessage() );
194             return ERROR;
195         }
196 
197         return SUCCESS;
198     }
199 
200     public String display()
201         throws Exception
202     {
203         if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
204         {
205             // current prepare build task
206             Map<String, PrepareBuildProjectsTask> currentPrepareBuildMap =
207                 getContinuum().getDistributedBuildManager().getProjectsCurrentlyPreparingBuild();
208 
209             for ( String url : currentPrepareBuildMap.keySet() )
210             {
211                 PrepareBuildProjectsTask task = currentPrepareBuildMap.get( url );
212 
213                 ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
214 
215                 PrepareBuildSummary summary = new PrepareBuildSummary();
216                 summary.setBuildAgentUrl( url );
217                 summary.setProjectGroupId( task.getProjectGroupId() );
218                 summary.setProjectGroupName( projectGroup.getName() );
219                 summary.setScmRootAddress( task.getScmRootAddress() );
220                 summary.setScmRootId( task.getProjectScmRootId() );
221 
222                 currentDistributedPrepareBuilds.add( summary );
223             }
224 
225             // current builds
226             Map<String, BuildProjectTask> currentBuildMap =
227                 getContinuum().getDistributedBuildManager().getProjectsCurrentlyBuilding();
228 
229             for ( String url : currentBuildMap.keySet() )
230             {
231                 BuildProjectTask task = currentBuildMap.get( url );
232 
233                 Project project = getContinuum().getProject( task.getProjectId() );
234 
235                 DistributedBuildSummary summary = new DistributedBuildSummary();
236                 summary.setProjectId( project.getId() );
237                 summary.setProjectName( project.getName() );
238                 summary.setProjectGroupName( project.getProjectGroup().getName() );
239                 summary.setBuildDefinitionId( task.getBuildDefinitionId() );
240                 summary.setBuildDefinitionLabel( task.getBuildDefinitionLabel() );
241                 summary.setHashCode( task.getHashCode() );
242                 summary.setBuildAgentUrl( url );
243 
244                 currentDistributedBuilds.add( summary );
245             }
246 
247             // prepare build queues
248             Map<String, List<PrepareBuildProjectsTask>> prepareBuildMap =
249                 getContinuum().getDistributedBuildManager().getProjectsInPrepareBuildQueue();
250 
251             for ( String url : prepareBuildMap.keySet() )
252             {
253                 for ( PrepareBuildProjectsTask task : prepareBuildMap.get( url ) )
254                 {
255                     ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
256 
257                     PrepareBuildSummary summary = new PrepareBuildSummary();
258                     summary.setBuildAgentUrl( url );
259                     summary.setProjectGroupId( task.getProjectGroupId() );
260                     summary.setProjectGroupName( projectGroup.getName() );
261                     summary.setScmRootAddress( task.getScmRootAddress() );
262                     summary.setScmRootId( task.getProjectScmRootId() );
263                     summary.setHashCode( task.getHashCode() );
264 
265                     distributedPrepareBuildQueues.add( summary );
266                 }
267             }
268 
269             // build queues
270             Map<String, List<BuildProjectTask>> buildMap =
271                 getContinuum().getDistributedBuildManager().getProjectsInBuildQueue();
272 
273             for ( String url : buildMap.keySet() )
274             {
275                 for ( BuildProjectTask task : buildMap.get( url ) )
276                 {
277                     DistributedBuildSummary summary = new DistributedBuildSummary();
278 
279                     Project project = getContinuum().getProject( task.getProjectId() );
280 
281                     summary.setProjectId( project.getId() );
282                     summary.setProjectName( project.getName() );
283                     summary.setProjectGroupName( project.getProjectGroup().getName() );
284                     summary.setBuildDefinitionId( task.getBuildDefinitionId() );
285                     summary.setBuildDefinitionLabel( task.getBuildDefinitionLabel() );
286                     summary.setHashCode( task.getHashCode() );
287                     summary.setBuildAgentUrl( url );
288 
289                     distributedBuildQueues.add( summary );
290                 }
291             }
292 
293             return DISTRIBUTED_BUILD_SUCCESS;
294         }
295         else
296         {
297             try
298             {
299                 // current prepare builds
300                 Map<String, PrepareBuildProjectsTask> currentPrepareBuildTasks =
301                     getContinuum().getBuildsManager().getCurrentProjectInPrepareBuild();
302 
303                 Set<String> keySet = currentPrepareBuildTasks.keySet();
304                 for ( String key : keySet )
305                 {
306                     PrepareBuildProjectsTask prepareBuildTask = currentPrepareBuildTasks.get( key );
307 
308                     PrepareBuildSummary s = new PrepareBuildSummary();
309                     s.setProjectGroupId( prepareBuildTask.getProjectGroupId() );
310                     s.setProjectGroupName( prepareBuildTask.getProjectGroupName() );
311                     s.setScmRootId( prepareBuildTask.getProjectScmRootId() );
312                     s.setScmRootAddress( prepareBuildTask.getScmRootAddress() );
313                     s.setQueueName( key );
314                     currentPrepareBuilds.add( s );
315                 }
316             }
317             catch ( BuildManagerException e )
318             {
319                 addActionError( e.getMessage() );
320                 return ERROR;
321             }
322 
323             try
324             {
325                 // current builds
326                 Map<String, BuildProjectTask> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
327                 Set<String> keySet = currentBuilds.keySet();
328                 for ( String key : keySet )
329                 {
330                     BuildProjectTask buildTask = currentBuilds.get( key );
331                     BuildProjectQueue queue = new BuildProjectQueue();
332                     queue.setName( key );
333                     queue.setTask( buildTask );
334                     currentBuildProjectTasks.add( queue );
335                 }
336             }
337             catch ( BuildManagerException e )
338             {
339                 addActionError( e.getMessage() );
340                 return ERROR;
341             }
342 
343             try
344             {
345                 // queued prepare builds
346                 Map<String, List<PrepareBuildProjectsTask>> prepareBuilds =
347                     getContinuum().getBuildsManager().getProjectsInPrepareBuildQueue();
348 
349                 Set<String> keySet = prepareBuilds.keySet();
350                 for ( String key : keySet )
351                 {
352                     for ( PrepareBuildProjectsTask task : prepareBuilds.get( key ) )
353                     {
354                         PrepareBuildSummary summary = new PrepareBuildSummary();
355                         summary.setProjectGroupId( task.getProjectGroupId() );
356                         summary.setProjectGroupName( task.getProjectGroupName() );
357                         summary.setScmRootId( task.getProjectScmRootId() );
358                         summary.setScmRootAddress( task.getScmRootAddress() );
359                         summary.setHashCode( task.getHashCode() );
360                         summary.setQueueName( key );
361 
362                         prepareBuildQueues.add( summary );
363                     }
364                 }
365             }
366             catch ( BuildManagerException e )
367             {
368                 addActionError( e.getMessage() );
369                 return ERROR;
370             }
371 
372             try
373             {
374                 // queued builds
375                 Map<String, List<BuildProjectTask>> builds =
376                     getContinuum().getBuildsManager().getProjectsInBuildQueues();
377                 Set<String> keySet = builds.keySet();
378                 for ( String key : keySet )
379                 {
380                     for ( BuildProjectTask task : builds.get( key ) )
381                     {
382                         BuildProjectQueue queue = new BuildProjectQueue();
383                         queue.setName( key );
384                         queue.setTask( task );
385                         buildsInQueue.add( queue );
386                     }
387                 }
388             }
389             catch ( BuildManagerException e )
390             {
391                 addActionError( e.getMessage() );
392                 return ERROR;
393             }
394 
395             try
396             {
397                 // current checkouts
398                 Map<String, CheckOutTask> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
399                 Set<String> keySet = currentCheckouts.keySet();
400                 for ( String key : keySet )
401                 {
402                     CheckOutTask checkoutTask = currentCheckouts.get( key );
403                     CheckoutQueue queue = new CheckoutQueue();
404                     queue.setName( key );
405                     queue.setTask( checkoutTask );
406                     currentCheckoutTasks.add( queue );
407                 }
408             }
409             catch ( BuildManagerException e )
410             {
411                 addActionError( e.getMessage() );
412                 return ERROR;
413             }
414 
415             try
416             {
417                 // queued checkouts
418                 Map<String, List<CheckOutTask>> checkouts =
419                     getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
420                 Set<String> keySet = checkouts.keySet();
421                 for ( String key : keySet )
422                 {
423                     for ( CheckOutTask task : checkouts.get( key ) )
424                     {
425                         CheckoutQueue queue = new CheckoutQueue();
426                         queue.setName( key );
427                         queue.setTask( task );
428                         checkoutsInQueue.add( queue );
429                     }
430                 }
431             }
432             catch ( BuildManagerException e )
433             {
434                 addActionError( e.getMessage() );
435                 return ERROR;
436             }
437         }
438 
439         return SUCCESS;
440     }
441 
442     public String remove()
443         throws Exception
444     {
445         try
446         {
447             checkManageQueuesAuthorization();
448         }
449         catch ( AuthorizationRequiredException authzE )
450         {
451             addActionError( authzE.getMessage() );
452             return REQUIRES_AUTHORIZATION;
453         }
454         catch ( AuthenticationRequiredException e )
455         {
456             addActionError( e.getMessage() );
457             return REQUIRES_AUTHENTICATION;
458         }
459 
460         getContinuum().getBuildsManager().removeProjectFromBuildQueue( projectId, buildDefinitionId, new BuildTrigger(
461             trigger, "" ), projectName, projectGroupId );
462         Project project = getContinuum().getProject( projectId );
463         project.setState( project.getOldState() );
464         getContinuum().updateProject( project );
465 
466         return SUCCESS;
467     }
468 
469     public String removeBuildEntries()
470         throws Exception
471     {
472         try
473         {
474             checkManageQueuesAuthorization();
475         }
476         catch ( AuthorizationRequiredException authzE )
477         {
478             addActionError( authzE.getMessage() );
479             return REQUIRES_AUTHORIZATION;
480         }
481         catch ( AuthenticationRequiredException e )
482         {
483             addActionError( e.getMessage() );
484             return REQUIRES_AUTHENTICATION;
485         }
486 
487         getContinuum().getBuildsManager().removeProjectsFromBuildQueueWithHashcodes( listToIntArray(
488             this.getSelectedBuildTaskHashCodes() ) );
489         return SUCCESS;
490     }
491 
492     public String removeCheckoutEntries()
493         throws Exception
494     {
495         try
496         {
497             checkManageQueuesAuthorization();
498         }
499         catch ( AuthorizationRequiredException authzE )
500         {
501             addActionError( authzE.getMessage() );
502             return REQUIRES_AUTHORIZATION;
503         }
504         catch ( AuthenticationRequiredException e )
505         {
506             addActionError( e.getMessage() );
507             return REQUIRES_AUTHENTICATION;
508         }
509 
510         getContinuum().getBuildsManager().removeProjectsFromCheckoutQueueWithHashcodes( listToIntArray(
511             this.getSelectedCheckOutTaskHashCodes() ) );
512         return SUCCESS;
513     }
514 
515     public String removePrepareBuildEntry()
516         throws Exception
517     {
518         try
519         {
520             checkManageQueuesAuthorization();
521         }
522         catch ( AuthorizationRequiredException authzE )
523         {
524             addActionError( authzE.getMessage() );
525             return REQUIRES_AUTHORIZATION;
526         }
527         catch ( AuthenticationRequiredException e )
528         {
529             addActionError( e.getMessage() );
530             return REQUIRES_AUTHENTICATION;
531         }
532 
533         getContinuum().getBuildsManager().removeProjectFromPrepareBuildQueue( projectGroupId, scmRootId );
534         return SUCCESS;
535     }
536 
537     public String removePrepareBuildEntries()
538         throws Exception
539     {
540         try
541         {
542             checkManageQueuesAuthorization();
543         }
544         catch ( AuthorizationRequiredException authzE )
545         {
546             addActionError( authzE.getMessage() );
547             return REQUIRES_AUTHORIZATION;
548         }
549         catch ( AuthenticationRequiredException e )
550         {
551             addActionError( e.getMessage() );
552             return REQUIRES_AUTHENTICATION;
553         }
554 
555         getContinuum().getBuildsManager().removeProjectsFromPrepareBuildQueueWithHashCodes( listToIntArray(
556             this.selectedPrepareBuildTaskHashCodes ) );
557         return SUCCESS;
558     }
559 
560     public String cancelDistributedBuild()
561         throws Exception
562     {
563         try
564         {
565             checkManageQueuesAuthorization();
566         }
567         catch ( AuthorizationRequiredException authzE )
568         {
569             addActionError( authzE.getMessage() );
570             return REQUIRES_AUTHORIZATION;
571         }
572         catch ( AuthenticationRequiredException e )
573         {
574             addActionError( e.getMessage() );
575             return REQUIRES_AUTHENTICATION;
576         }
577 
578         getContinuum().getDistributedBuildManager().cancelDistributedBuild( buildAgentUrl );
579 
580         return SUCCESS;
581     }
582 
583     public String removeDistributedPrepareBuildEntry()
584         throws Exception
585     {
586         try
587         {
588             checkManageQueuesAuthorization();
589         }
590         catch ( AuthorizationRequiredException authzE )
591         {
592             addActionError( authzE.getMessage() );
593             return REQUIRES_AUTHORIZATION;
594         }
595         catch ( AuthenticationRequiredException e )
596         {
597             addActionError( e.getMessage() );
598             return REQUIRES_AUTHENTICATION;
599         }
600 
601         getContinuum().getDistributedBuildManager().removeFromPrepareBuildQueue( buildAgentUrl, projectGroupId,
602                                                                                  scmRootId );
603 
604         return SUCCESS;
605     }
606 
607     public String removeDistributedPrepareBuildEntries()
608         throws Exception
609     {
610         try
611         {
612             checkManageQueuesAuthorization();
613         }
614         catch ( AuthorizationRequiredException authzE )
615         {
616             addActionError( authzE.getMessage() );
617             return REQUIRES_AUTHORIZATION;
618         }
619         catch ( AuthenticationRequiredException e )
620         {
621             addActionError( e.getMessage() );
622             return REQUIRES_AUTHENTICATION;
623         }
624 
625         getContinuum().getDistributedBuildManager().removeFromPrepareBuildQueue(
626             this.getSelectedPrepareBuildTaskHashCodes() );
627 
628         return SUCCESS;
629     }
630 
631     public String removeDistributedBuildEntry()
632         throws Exception
633     {
634         try
635         {
636             checkManageQueuesAuthorization();
637         }
638         catch ( AuthorizationRequiredException authzE )
639         {
640             addActionError( authzE.getMessage() );
641             return REQUIRES_AUTHORIZATION;
642         }
643         catch ( AuthenticationRequiredException e )
644         {
645             addActionError( e.getMessage() );
646             return REQUIRES_AUTHENTICATION;
647         }
648 
649         getContinuum().getDistributedBuildManager().removeFromBuildQueue( buildAgentUrl, projectId, buildDefinitionId );
650 
651         return SUCCESS;
652     }
653 
654     public String removeDistributedBuildEntries()
655         throws Exception
656     {
657         try
658         {
659             checkManageQueuesAuthorization();
660         }
661         catch ( AuthorizationRequiredException authzE )
662         {
663             addActionError( authzE.getMessage() );
664             return REQUIRES_AUTHORIZATION;
665         }
666         catch ( AuthenticationRequiredException e )
667         {
668             addActionError( e.getMessage() );
669             return REQUIRES_AUTHENTICATION;
670         }
671 
672         getContinuum().getDistributedBuildManager().removeFromBuildQueue( this.getSelectedBuildTaskHashCodes() );
673 
674         return SUCCESS;
675     }
676 
677     private int[] listToIntArray( List<String> strings )
678     {
679         if ( strings == null || strings.isEmpty() )
680         {
681             return new int[0];
682         }
683         int[] array = new int[0];
684         for ( String intString : strings )
685         {
686             array = ArrayUtils.add( array, Integer.parseInt( intString ) );
687         }
688         return array;
689     }
690 
691     // -----------------------------------------------------
692     //  security
693     // -----------------------------------------------------
694 
695     public SecureActionBundle getSecureActionBundle()
696         throws SecureActionException
697     {
698         SecureActionBundle bundle = new SecureActionBundle();
699         bundle.setRequiresAuthentication( true );
700         bundle.addRequiredAuthorization( ContinuumRoleConstants.CONTINUUM_VIEW_QUEUES, Resource.GLOBAL );
701 
702         return bundle;
703     }
704 
705     private boolean cancelCheckout( int projectId )
706         throws BuildManagerException
707     {
708         Map<String, CheckOutTask> tasks = getContinuum().getBuildsManager().getCurrentCheckouts();
709         if ( tasks != null )
710         {
711             Set<String> keySet = tasks.keySet();
712             for ( String key : keySet )
713             {
714                 CheckOutTask task = tasks.get( key );
715                 if ( task != null )
716                 {
717                     if ( task.getProjectId() == projectId )
718                     {
719                         logger.info( "Cancelling checkout for project " + projectId );
720                         return getContinuum().getBuildsManager().cancelCheckout( projectId );
721                     }
722                     else
723                     {
724                         logger.warn(
725                             "Current task is not for the given projectId (" + projectId + "): " + task.getProjectId() +
726                                 "; not cancelling checkout" );
727                     }
728                 }
729             }
730         }
731         else
732         {
733             logger.warn( "No task running - not cancelling checkout" );
734         }
735 
736         return false;
737     }
738 
739     public int getBuildDefinitionId()
740     {
741         return buildDefinitionId;
742     }
743 
744     public void setBuildDefinitionId( int buildDefinitionId )
745     {
746         this.buildDefinitionId = buildDefinitionId;
747     }
748 
749     public int getProjectId()
750     {
751         return projectId;
752     }
753 
754     public void setProjectId( int projectId )
755     {
756         this.projectId = projectId;
757     }
758 
759     public int getTrigger()
760     {
761         return trigger;
762     }
763 
764     public void setTrigger( int trigger )
765     {
766         this.trigger = trigger;
767     }
768 
769     public String getProjectName()
770     {
771         return projectName;
772     }
773 
774     public void setProjectName( String projectName )
775     {
776         this.projectName = projectName;
777     }
778 
779     public List<String> getSelectedBuildTaskHashCodes()
780     {
781         return selectedBuildTaskHashCodes;
782     }
783 
784     public void setSelectedBuildTaskHashCodes( List<String> selectedBuildTaskHashCodes )
785     {
786         this.selectedBuildTaskHashCodes = selectedBuildTaskHashCodes;
787     }
788 
789     public List<String> getSelectedCheckOutTaskHashCodes()
790     {
791         return selectedCheckOutTaskHashCodes;
792     }
793 
794     public void setSelectedCheckOutTaskHashCodes( List<String> selectedCheckOutTaskHashCodes )
795     {
796         this.selectedCheckOutTaskHashCodes = selectedCheckOutTaskHashCodes;
797     }
798 
799     public List<BuildProjectQueue> getCurrentBuildProjectTasks()
800     {
801         return currentBuildProjectTasks;
802     }
803 
804     public void setCurrentBuildProjectTasks( List<BuildProjectQueue> currentBuildProjectTasks )
805     {
806         this.currentBuildProjectTasks = currentBuildProjectTasks;
807     }
808 
809     public List<CheckoutQueue> getCurrentCheckoutTasks()
810     {
811         return currentCheckoutTasks;
812     }
813 
814     public void setCurrentCheckoutTasks( List<CheckoutQueue> currentCheckoutTasks )
815     {
816         this.currentCheckoutTasks = currentCheckoutTasks;
817     }
818 
819     public List<BuildProjectQueue> getBuildsInQueue()
820     {
821         return buildsInQueue;
822     }
823 
824     public void setBuildsInQueue( List<BuildProjectQueue> buildsInQueue )
825     {
826         this.buildsInQueue = buildsInQueue;
827     }
828 
829     public List<CheckoutQueue> getCheckoutsInQueue()
830     {
831         return checkoutsInQueue;
832     }
833 
834     public void setCheckoutsInQueue( List<CheckoutQueue> checkoutsInQueue )
835     {
836         this.checkoutsInQueue = checkoutsInQueue;
837     }
838 
839     public List<PrepareBuildSummary> getCurrentDistributedPrepareBuilds()
840     {
841         return currentDistributedPrepareBuilds;
842     }
843 
844     public List<DistributedBuildSummary> getCurrentDistributedBuilds()
845     {
846         return currentDistributedBuilds;
847     }
848 
849     public List<PrepareBuildSummary> getDistributedPrepareBuildQueues()
850     {
851         return distributedPrepareBuildQueues;
852     }
853 
854     public List<DistributedBuildSummary> getDistributedBuildQueues()
855     {
856         return distributedBuildQueues;
857     }
858 
859     public List<PrepareBuildSummary> getCurrentPrepareBuilds()
860     {
861         return currentPrepareBuilds;
862     }
863 
864     public List<PrepareBuildSummary> getPrepareBuildQueues()
865     {
866         return prepareBuildQueues;
867     }
868 
869     public String getBuildAgentUrl()
870     {
871         return buildAgentUrl;
872     }
873 
874     public void setBuildAgentUrl( String buildAgentUrl )
875     {
876         this.buildAgentUrl = buildAgentUrl;
877     }
878 
879     public void setProjectGroupId( int projectGroupId )
880     {
881         this.projectGroupId = projectGroupId;
882     }
883 
884     public void setScmRootId( int scmRootId )
885     {
886         this.scmRootId = scmRootId;
887     }
888 
889     public void setSelectedPrepareBuildTaskHashCodes( List<String> selectedPrepareBuildTaskHashCodes )
890     {
891         this.selectedPrepareBuildTaskHashCodes = selectedPrepareBuildTaskHashCodes;
892     }
893 
894     public List<String> getSelectedPrepareBuildTaskHashCodes()
895     {
896         return selectedPrepareBuildTaskHashCodes;
897     }
898 }