blob: d8eb26cd5bebc02a7e2f12b44262a6c3f22c42ad [file] [log] [blame]
package org.netbeans.lib.cvsclient;
import org.netbeans.lib.cvsclient.admin.IAdminReader;
import org.netbeans.lib.cvsclient.admin.IAdminWriter;
import org.netbeans.lib.cvsclient.connection.IConnection;
import org.netbeans.lib.cvsclient.file.*;
import org.netbeans.lib.cvsclient.util.BugLog;
import org.netbeans.lib.cvsclient.util.IIgnoreFileFilter;
import java.io.File;
/**
* @author Thomas Singer
*/
public final class ClientEnvironment
implements IClientEnvironment {
// Fields =================================================================
private final IConnection connection;
private final CvsRoot cvsRoot;
private final ICvsFileSystem cvsFileSystem;
private final ILocalFileReader localFileReader;
private final ILocalFileWriter localFileWriter;
private final IAdminReader adminReader;
private final IAdminWriter adminWriter;
private final IIgnoreFileFilter ignoreFileFilter;
private final IFileReadOnlyHandler fileReadOnlyHandler;
private final String charset;
private final ICvsRootProvider cvsRootProvider;
// Setup ==================================================================
public ClientEnvironment(IConnection connection, File localRootDirectory, File adminRootDirectory, CvsRoot cvsRoot,
ILocalFileReader localFileReader, ILocalFileWriter localFileWriter,
IAdminReader adminReader, IAdminWriter adminWriter,
IIgnoreFileFilter ignoreFileFilter, IFileReadOnlyHandler fileReadOnlyHandler,
String charset) {
this(connection, localRootDirectory, adminRootDirectory, cvsRoot,localFileReader, localFileWriter ,adminReader, adminWriter,
ignoreFileFilter, fileReadOnlyHandler, charset, ICvsRootProvider.DUMMY);
}
public ClientEnvironment(IConnection connection, File localRootDirectory, File adminRootDirectory, CvsRoot cvsRoot,
ILocalFileReader localFileReader, ILocalFileWriter localFileWriter,
IAdminReader adminReader, IAdminWriter adminWriter,
IIgnoreFileFilter ignoreFileFilter, IFileReadOnlyHandler fileReadOnlyHandler,
String charset, ICvsRootProvider cvsRootProvider) {
BugLog.getInstance().assertNotNull(connection);
BugLog.getInstance().assertNotNull(localRootDirectory);
BugLog.getInstance().assertNotNull(adminRootDirectory);
BugLog.getInstance().assertNotNull(cvsRoot);
BugLog.getInstance().assertNotNull(localFileReader);
BugLog.getInstance().assertNotNull(localFileWriter);
BugLog.getInstance().assertNotNull(adminReader);
BugLog.getInstance().assertNotNull(adminWriter);
BugLog.getInstance().assertNotNull(ignoreFileFilter);
BugLog.getInstance().assertNotNull(fileReadOnlyHandler);
BugLog.getInstance().assertNotNull(cvsRootProvider);
this.connection = connection;
this.cvsRoot = cvsRoot;
this.cvsFileSystem = new CvsFileSystem(localRootDirectory, adminRootDirectory, connection.getRepository());
this.localFileReader = localFileReader;
this.localFileWriter = localFileWriter;
this.adminReader = adminReader;
this.adminWriter = adminWriter;
this.ignoreFileFilter = ignoreFileFilter;
this.fileReadOnlyHandler = fileReadOnlyHandler;
this.charset = charset;
this.cvsRootProvider = cvsRootProvider;
}
// Implemented ============================================================
public IConnection getConnection() {
return connection;
}
public ICvsFileSystem getCvsFileSystem() {
return cvsFileSystem;
}
public CvsRoot getCvsRoot() {
return cvsRoot;
}
public IAdminReader getAdminReader() {
return adminReader;
}
public IAdminWriter getAdminWriter() {
return adminWriter;
}
public ILocalFileReader getLocalFileReader() {
return localFileReader;
}
public ILocalFileWriter getLocalFileWriter() {
return localFileWriter;
}
public IIgnoreFileFilter getIgnoreFileFilter() {
return ignoreFileFilter;
}
public IFileReadOnlyHandler getFileReadOnlyHandler() {
return fileReadOnlyHandler;
}
public String getCharset() {
return charset;
}
public IClientEnvironment createEnvironmentForDirectory(DirectoryObject directory) {
IConnection connection = cvsRootProvider.getConnection(directory, cvsFileSystem);
if (connection == null) return null;
CvsRoot cvsRoot = cvsRootProvider.getCvsRoot(directory, cvsFileSystem);
if (cvsRoot == null) return null;
return new ClientEnvironment(connection, cvsFileSystem.getLocalFileSystem().getFile(directory),
cvsFileSystem.getAdminFileSystem().getFile(directory),
cvsRoot
, getLocalFileReader(), getLocalFileWriter(), getAdminReader(), getAdminWriter(),
getIgnoreFileFilter(), getFileReadOnlyHandler(), getCharset(), cvsRootProvider);
}
}