blob: 1b1f142f517b3465e62172d47f2d0d2699dc612e [file] [log] [blame]
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.lib.cvsclient.request;
import org.netbeans.lib.cvsclient.IClientEnvironment;
import org.netbeans.lib.cvsclient.admin.Entry;
import org.netbeans.lib.cvsclient.admin.IAdminReader;
import org.netbeans.lib.cvsclient.command.KeywordSubstitution;
import org.netbeans.lib.cvsclient.file.*;
import org.netbeans.lib.cvsclient.util.BugLog;
import org.jetbrains.annotations.NonNls;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
/**
* @author Thomas Singer
*/
public final class Requests {
// Fields =================================================================
private final List requestList = new ArrayList();
private final ICvsFileSystem cvsFileSystem;
private final IAdminReader adminReader;
private final ResponseExpectingRequest responseExpectingRequest;
// Setup ==================================================================
public Requests(ResponseExpectingRequest responseExpectingRequest, IClientEnvironment clientEnvironment) {
BugLog.getInstance().assertNotNull(responseExpectingRequest);
BugLog.getInstance().assertNotNull(clientEnvironment);
this.responseExpectingRequest = responseExpectingRequest;
this.cvsFileSystem = clientEnvironment.getCvsFileSystem();
this.adminReader = clientEnvironment.getAdminReader();
}
// Accessing ==============================================================
public void addRequest(IRequest request) {
BugLog.getInstance().assertNotNull(request);
requestList.add(request);
}
public void addArgumentRequest(@NonNls String argument) {
addRequest(new ArgumentRequest(argument));
}
public void addArgumentRequest(Object obj, @NonNls String argument) {
if (obj == null) {
return;
}
final String objString = obj.toString().trim();
if (objString.length() == 0) {
return;
}
addArgumentRequest(argument);
addArgumentRequest(objString);
}
public void addArgumentRequests(Object obj, @NonNls String argument) {
if (obj == null) {
return;
}
final String objString = obj.toString().trim();
if (objString.length() == 0) {
return;
}
addArgumentRequest(argument);
addArgumentRequest(objString);
}
public void addArgumentRequest(boolean value, @NonNls String argument) {
if (value) {
addArgumentRequest(argument);
}
}
public void addLocalPathDirectoryRequest() {
//final String repositoryPath = cvsFileSystem.getRepositoryForDirectory(DirectoryObject.getRoot(), adminReader);
//addRequest(new LocalDirectoryRequest(repositoryPath));
addDirectoryRequest(DirectoryObject.getRoot());
}
@NonNls public String addDirectoryRequest(DirectoryObject directoryObject) {
final String relativeDirPath = directoryObject.toUnixPath();
final String repositoryPath = cvsFileSystem.getRepositoryForDirectory(directoryObject, adminReader);
addRequest(new DirectoryRequest(relativeDirPath, repositoryPath));
if (adminReader.isStatic(directoryObject, cvsFileSystem)){
addRequest(new AbstractRequest() {
public String getRequestString() {
return "Static-directory \n";
}
});
}
return repositoryPath;
}
public void addFileArgumentRequest(AbstractFileObject fileObject) {
addArgumentRequest(fileObject.toUnixPath());
}
public void addMessageRequests(@NonNls String message) {
addArgumentRequest("-m");
boolean first = true;
final StringTokenizer token = new StringTokenizer(message, "\n", false);
while (token.hasMoreTokens()) {
if (first) {
addArgumentRequest(token.nextToken());
first = false;
}
else {
addRequest(new ArgumentxRequest(token.nextToken()));
}
}
}
public List getRequests() {
return Collections.unmodifiableList(requestList);
}
public ResponseExpectingRequest getResponseExpectingRequest() {
return responseExpectingRequest;
}
public void addDirectoryStickyRequests(DirectoryObject directoryObject, IAdminReader adminReader, ICvsFileSystem cvsFileSystem) {
addDirectoryRequest(directoryObject);
addStickyRequest(adminReader.getStickyTagForDirectory(directoryObject, cvsFileSystem));
}
public void addStickyRequest(String tag) {
if (tag != null) {
addRequest(new StickyRequest(tag));
}
}
public void addModifiedRequest(FileObject fileObject, boolean binary, boolean writable) {
addRequest(new ModifiedRequest(fileObject, binary, writable));
}
public void addIsModifiedRequest(FileObject fileObject) {
addRequest(new IsModifiedRequest(fileObject));
}
public void addUnchangedRequest(FileObject fileObject) {
addRequest(new UnchangedRequest(fileObject));
}
public void addEntryRequest(Entry entry) {
addRequest(new EntryRequest(entry));
}
public void addQuestionableRequest(FileObject fileObject) {
addRequest(new QuestionableRequest(fileObject));
}
public void addNotifyRequest(FileObject fileObject, @NonNls String command, String temporaryWatch) {
final String path = cvsFileSystem.getLocalFileSystem().getFile(fileObject.getParent()).getAbsolutePath();
addRequest(new NotifyRequest(fileObject, path, command, temporaryWatch));
}
public void addKoptRequest(KeywordSubstitution keywordSubstMode) {
addRequest(new KoptRequest(keywordSubstMode));
}
}