blob: de0939f68dad1e50f628a60e9c80488342eec195 [file] [log] [blame]
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.cvsSupport2.cvsoperations.common;
import com.intellij.cvsSupport2.config.CvsConfiguration;
import com.intellij.cvsSupport2.cvsoperations.cvsAdd.AddFileOperation;
import com.intellij.cvsSupport2.cvsoperations.cvsCommit.CommitFilesOperation;
import com.intellij.cvsSupport2.cvsoperations.cvsRemove.RemoveFilesOperation;
import org.netbeans.lib.cvsclient.command.KeywordSubstitution;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class RepositoryModificationOperation extends CompositeOperation {
private final CvsOperationOnFiles myRemoveRequests;
private final CommitFilesOperation myCommitRequests;
private int myAddedFilesCount = 0;
public static RepositoryModificationOperation
createGlobalTransactionOperation(String message, CvsConfiguration configuration) {
return new RepositoryModificationOperation(message, configuration);
}
private RepositoryModificationOperation(String message, CvsConfiguration configuration) {
myRemoveRequests = new RemoveFilesOperation();
myCommitRequests = new CommitFilesOperation(message, configuration.MAKE_NEW_FILES_READONLY);
addOperation(myRemoveRequests);
}
public void commitFile(String path) {
commitFile(new File(path).getAbsoluteFile());
}
private void commitFile(File file) {
myCommitRequests.addFile(file.getAbsolutePath());
}
public void addFile(String folderPath, String name, KeywordSubstitution substitution) {
myAddedFilesCount++;
File file = new File(folderPath, name).getAbsoluteFile();
AddFileOperation addFilesOperation = new AddFileOperation(substitution);
addFilesOperation.addFile(file.getAbsolutePath());
addOperation(addFilesOperation);
if (file.isFile())
commitFile(file);
}
public void removeFile(String path) {
File file = new File(path).getAbsoluteFile();
myRemoveRequests.addFile(file.getAbsolutePath());
commitFile(file);
}
public int getFilesToProcessCount() {
int filesToRemove = myRemoveRequests.getFilesCount();
int filesToChange = myCommitRequests.getFilesCount() - myAddedFilesCount - filesToRemove;
return myAddedFilesCount * 4 +
filesToRemove * 2 +
filesToChange * 2;
}
public void setMessage(Object parameters) {
myCommitRequests.setMessage(parameters);
}
protected List<CvsOperation> getSubOperations() {
ArrayList<CvsOperation> result = new ArrayList<CvsOperation>(super.getSubOperations());
result.add(myCommitRequests);
return result;
}
}