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); } }