2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.cvsSupport2
.cvsoperations
.common
;
18 import com
.intellij
.cvsSupport2
.application
.CvsEntriesManager
;
19 import com
.intellij
.cvsSupport2
.connections
.CvsRootProvider
;
20 import com
.intellij
.cvsSupport2
.cvsoperations
.cvsAdd
.AddFileOperation
;
21 import com
.intellij
.cvsSupport2
.errorHandling
.CannotFindCvsRootException
;
22 import com
.intellij
.openapi
.vcs
.VcsException
;
23 import org
.jetbrains
.annotations
.NotNull
;
24 import org
.netbeans
.lib
.cvsclient
.command
.CommandAbortedException
;
26 import java
.util
.ArrayList
;
27 import java
.util
.Collection
;
28 import java
.util
.List
;
30 public class CompositeOperaton
extends CvsOperation
{
31 private final List
<CvsOperation
> mySubOperations
= new ArrayList
<CvsOperation
>();
32 private CvsOperation myCurrentOperation
;
34 public void addOperation(CvsOperation operation
) {
35 mySubOperations
.add(operation
);
38 protected void addOperation(final int i
, final CvsOperation operation
) {
39 mySubOperations
.add(i
, operation
);
43 public void appendSelfCvsRootProvider(@NotNull final Collection
<CvsRootProvider
> roots
) throws CannotFindCvsRootException
{
44 for (CvsOperation operation
: mySubOperations
) {
45 operation
.appendSelfCvsRootProvider(roots
);
49 public void execute(CvsExecutionEnvironment executionEnvironment
) throws VcsException
, CommandAbortedException
{
50 CvsEntriesManager
.getInstance().lockSynchronizationActions();
52 for (final CvsOperation cvsOperation
: getSubOperations()) {
53 myCurrentOperation
= cvsOperation
;
54 myCurrentOperation
.execute(executionEnvironment
);
57 CvsEntriesManager
.getInstance().unlockSynchronizationActions();
61 public void executeFinishActions() {
62 super.executeFinishActions();
63 for (final CvsOperation cvsOperation
: getSubOperations()) {
64 cvsOperation
.executeFinishActions();
69 public String
getLastProcessedCvsRoot() {
70 if (myCurrentOperation
== null) return null;
71 return myCurrentOperation
.getLastProcessedCvsRoot();
74 protected boolean containsSubOperation(AddFileOperation op
) {
75 return mySubOperations
.contains(op
);
80 protected List
<CvsOperation
> getSubOperations() { return mySubOperations
; }
82 public boolean runInReadThread() {
83 for(CvsOperation op
: mySubOperations
) {
84 if (op
.runInReadThread()) return true;
89 protected int getSubOperationsCount() {
90 return mySubOperations
.size();