public FileManager(IVirtualDisk virtualDisk, FileSystemNodeStorage fileSystemNodeStorage, IEqualityComparer <string> namesComparer, NodeResolver nodeResolver, IFreeBlockManager freeBlockManager, IFolderEnumeratorRegistry folderEnumeratorRegistry, IFileSystemObjectLockingManager lockingManager, BlockReferenceListsEditor blockReferenceListsEditor, PathBuilder pathBuilder, IFileSystemArtifactNamesValidator nameValidator, IPathValidator pathValidator) { if (virtualDisk == null) { throw new ArgumentNullException("virtualDisk"); } if (fileSystemNodeStorage == null) { throw new ArgumentNullException("fileSystemNodeStorage"); } if (namesComparer == null) { throw new ArgumentNullException("namesComparer"); } if (nodeResolver == null) { throw new ArgumentNullException("nodeResolver"); } if (freeBlockManager == null) { throw new ArgumentNullException("freeBlockManager"); } if (folderEnumeratorRegistry == null) { throw new ArgumentNullException("folderEnumeratorRegistry"); } if (lockingManager == null) { throw new ArgumentNullException("lockingManager"); } if (blockReferenceListsEditor == null) { throw new ArgumentNullException("blockReferenceListsEditor"); } if (pathBuilder == null) { throw new ArgumentNullException("pathBuilder"); } if (nameValidator == null) { throw new ArgumentNullException("nameValidator"); } if (pathValidator == null) { throw new ArgumentNullException("pathValidator"); } _virtualDisk = virtualDisk; _pathValidator = pathValidator; _nameValidator = nameValidator; _pathBuilder = pathBuilder; _blockReferenceListsEditor = blockReferenceListsEditor; _lockingManager = lockingManager; _folderEnumeratorRegistry = folderEnumeratorRegistry; _freeBlockManager = freeBlockManager; _nodeResolver = nodeResolver; _namesComparer = namesComparer; _fileSystemNodeStorage = fileSystemNodeStorage; }
public NewArtifactNameViewModel(IFileSystemArtifactNamesValidator namesValidator) { if (namesValidator == null) { throw new ArgumentNullException("namesValidator"); } _namesValidator = namesValidator; }
public ArtifactRenamingVisitor(VirtualFileSystem fileSystem, IUserInteractionService userInteractionService, IFileSystemArtifactNamesValidator artifactNamesValidator) { if (fileSystem == null) { throw new ArgumentNullException("fileSystem"); } if (userInteractionService == null) { throw new ArgumentNullException("userInteractionService"); } if (artifactNamesValidator == null) { throw new ArgumentNullException("artifactNamesValidator"); } _fileSystem = fileSystem; _artifactNamesValidator = artifactNamesValidator; _userInteractionService = userInteractionService; }
public AllCollaborators(IVirtualDisk disk, IFileSystemNodeStorage diskStructuresManager, IFileSystemArtifactNamesValidator nameValidator, IPathValidator pathValidator, NodeResolver nodeResolver, VirtualFileSystem virtualFileSystem, FileInfo fileNodeFake, Stream stream) { if (disk == null) { throw new ArgumentNullException("disk"); } if (diskStructuresManager == null) { throw new ArgumentNullException("diskStructuresManager"); } if (nameValidator == null) { throw new ArgumentNullException("nameValidator"); } if (pathValidator == null) { throw new ArgumentNullException("pathValidator"); } if (nodeResolver == null) { throw new ArgumentNullException("nodeResolver"); } if (virtualFileSystem == null) { throw new ArgumentNullException("virtualFileSystem"); } if (stream == null) { throw new ArgumentNullException("stream"); } Disk = disk; DiskStructuresManager = diskStructuresManager; NameValidator = nameValidator; PathValidator = pathValidator; NodeResolver = nodeResolver; VirtualFileSystem = virtualFileSystem; FileNodeFake = fileNodeFake; Stream = stream; }
public PathValidator(string rootPath, IEnumerable <char> illegalCharactersForPath, IFileSystemArtifactNamesValidator nameValidator, char directorySeparatorChar) { if (illegalCharactersForPath == null) { throw new ArgumentNullException("illegalCharactersForPath"); } if (nameValidator == null) { throw new ArgumentNullException("nameValidator"); } if (String.IsNullOrEmpty(rootPath)) { throw new ArgumentNullException("rootPath"); } if (illegalCharactersForPath.ContainsLetters()) { throw new ArgumentException("В текущей версии не поддерживаются буквы в качестве элементов множества, определяющего символы, которые можно использовать в именах файлов, папок, путях файловой системы"); } if (illegalCharactersForPath.Any(character => character.Equals(directorySeparatorChar))) { throw new ArgumentException("Набор элементов, составляющих недопустимые символы для задания путей, не может содержать символ разделения папок(\"{0}\")".FormatWith(directorySeparatorChar)); } Nullable <char> illegalChar; if (rootPath.ContainsAny(illegalCharactersForPath, out illegalChar)) { throw new ArgumentException("Путь к корневой папке содержит как минимум один из запрещенных для путей символов, этот: \"{0}\"".FormatWith(illegalChar.Value)); } _rootPath = rootPath; _illegalCharactersForPath = illegalCharactersForPath; _nameValidator = nameValidator; _directorySeparatorChar = directorySeparatorChar; }
public NewArtifactViewModel(IFileSystemArtifactNamesValidator namesValidator) : base(namesValidator) { }
private VirtualFileSystem( IVirtualDisk virtualDisk, VirtualFileSystemInfo fileSystemInfo, FileSystemNodeStorage fileSystemNodeStorage, IEqualityComparer <string> namesComparer, NodeResolver nodeResolver, IFreeBlockManager freeBlockManager, IFolderEnumeratorRegistry folderEnumeratorRegistry, BlockReferenceListsEditor blockReferenceListsEditor, PathBuilder pathBuilder, IFileSystemArtifactNamesValidator nameValidator, IPathValidator pathValidator, FileManager fileManager, FolderManager folderManager) { if (fileSystemInfo == null) { throw new ArgumentNullException("fileSystemInfo"); } if (fileSystemNodeStorage == null) { throw new ArgumentNullException("fileSystemNodeStorage"); } if (namesComparer == null) { throw new ArgumentNullException("namesComparer"); } if (nodeResolver == null) { throw new ArgumentNullException("nodeResolver"); } if (freeBlockManager == null) { throw new ArgumentNullException("freeBlockManager"); } if (folderEnumeratorRegistry == null) { throw new ArgumentNullException("folderEnumeratorRegistry"); } if (blockReferenceListsEditor == null) { throw new ArgumentNullException("blockReferenceListsEditor"); } if (pathBuilder == null) { throw new ArgumentNullException("pathBuilder"); } if (nameValidator == null) { throw new ArgumentNullException("nameValidator"); } if (pathValidator == null) { throw new ArgumentNullException("pathValidator"); } if (folderManager == null) { throw new ArgumentNullException("folderManager"); } _virtualDisk = virtualDisk; _folderManager = folderManager; _folderManager = folderManager; _folderManager = folderManager; _folderManager = folderManager; _fileManager = fileManager; _pathBuilder = pathBuilder; _folderEnumeratorRegistry = folderEnumeratorRegistry; _nodeResolver = nodeResolver; _freeBlockManager = freeBlockManager; _fileSystemInfo = fileSystemInfo; _namesComparer = namesComparer; }
public BrowserWindowViewModel( VirtualFileSystem virtualSystemCurrentlyBrowsed, IApplicationController applicationController, IComparer <FileSystemArtifactViewModel> viewModelSortingComparer, IUserInteractionService userInteractionService, string diskBrowsedLocation, IEqualityComparer <string> fileSystemArtifactNameComparer, IFileSystemArtifactViewModelVisitor deletingVisitor, IFileSystemArtifactNamesValidator artifactNamesValidator, IFileSystemArtifactViewModelVisitor renamingVisitor, INewArtifactCreator newArtifactCreator, IVirtualFileSystemInstanceManager virtualFileSystemInstanceManager, IFileSystemArtifactViewModelVisitor movingVisitor, IArtifactImporter artifactImporter, TaskCounter taskCounter, IDispatcher dispatcher) { if (virtualSystemCurrentlyBrowsed == null) { throw new ArgumentNullException("virtualSystemCurrentlyBrowsed"); } if (applicationController == null) { throw new ArgumentNullException("applicationController"); } if (viewModelSortingComparer == null) { throw new ArgumentNullException("viewModelSortingComparer"); } if (userInteractionService == null) { throw new ArgumentNullException("userInteractionService"); } if (diskBrowsedLocation == null) { throw new ArgumentNullException("diskBrowsedLocation"); } if (fileSystemArtifactNameComparer == null) { throw new ArgumentNullException("fileSystemArtifactNameComparer"); } if (deletingVisitor == null) { throw new ArgumentNullException("deletingVisitor"); } if (artifactNamesValidator == null) { throw new ArgumentNullException("artifactNamesValidator"); } if (renamingVisitor == null) { throw new ArgumentNullException("renamingVisitor"); } if (newArtifactCreator == null) { throw new ArgumentNullException("newArtifactCreator"); } if (virtualFileSystemInstanceManager == null) { throw new ArgumentNullException("virtualFileSystemInstanceManager"); } if (movingVisitor == null) { throw new ArgumentNullException("movingVisitor"); } if (artifactImporter == null) { throw new ArgumentNullException("artifactImporter"); } if (dispatcher == null) { throw new ArgumentNullException("dispatcher"); } this.CurrentFolderContents = new ObservableCollection <FileSystemArtifactViewModel>(); _virtualSystemCurrentlyBrowsed = virtualSystemCurrentlyBrowsed; _taskCounter = taskCounter; _dispatcher = dispatcher; _artifactImporter = artifactImporter; _movingVisitor = movingVisitor; _renamingVisitor = renamingVisitor; _newArtifactCreator = newArtifactCreator; _virtualFileSystemInstanceManager = virtualFileSystemInstanceManager; _userInteractionService = userInteractionService; _diskBrowsedLocation = diskBrowsedLocation; _fileSystemArtifactNameComparer = fileSystemArtifactNameComparer; _deletingVisitor = deletingVisitor; _artifactNamesValidator = artifactNamesValidator; _applicationController = applicationController; _viewModelSortingComparer = viewModelSortingComparer; this.CurrentFolderPath = VirtualFileSystem.Root; _tasks = new ObservableCollection <TaskViewModel>(); this.Tasks = new ReadOnlyObservableCollection <TaskViewModel>(_tasks); this.RefreshCurrentFolderContentsFallingBackToRootIfNecessary(); this.FileSearchPattern = new FileSearchPatternViewModel(); this.IsRefreshEnabled = true; }
/// <summary> /// /// </summary> /// <param name="disk"></param> /// <param name="namesComparer"></param> /// <param name="nodeResolver"></param> /// <param name="pathBuilder"></param> /// <param name="namesValidator"></param> /// <param name="pathValidator"></param> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> /// <exception cref="InconsistentDataDetectedException"></exception> internal static VirtualFileSystem CreateFromDisk(IVirtualDisk disk, IEqualityComparer <string> namesComparer, NodeResolver nodeResolver, PathBuilder pathBuilder, IFileSystemArtifactNamesValidator namesValidator, IPathValidator pathValidator) { if (disk == null) { throw new ArgumentNullException("disk"); } if (namesComparer == null) { throw new ArgumentNullException("namesComparer"); } if (nodeResolver == null) { throw new ArgumentNullException("nodeResolver"); } if (pathBuilder == null) { throw new ArgumentNullException("pathBuilder"); } if (namesValidator == null) { throw new ArgumentNullException("namesValidator"); } if (pathValidator == null) { throw new ArgumentNullException("pathValidator"); } VirtualFileSystemInfo fileSystemInfo; var fileSystemNodeStorage = new FileSystemNodeStorage(disk); const int headerBlockIndex = VirtualDiskFormatter.FileSystemHeaderBlockIndex; const int freeBlockBitmapStartingBlockIndex = VirtualDiskFormatter.FreeSpaceStartingBlockIndex; var header = fileSystemNodeStorage.ReadFileSystemHeader(headerBlockIndex); fileSystemInfo = new VirtualFileSystemInfo(header.Version, disk.BlockSizeInBytes, header.RootBlockOffset, freeBlockBitmapStartingBlockIndex); var freeSpaceBitmapStore = new FreeSpaceBitmapStore(disk, VirtualDiskFormatter.FreeSpaceStartingBlockIndex); int bitmapSize; var freeSpaceMap = freeSpaceBitmapStore.ReadMap(out bitmapSize); var freeSpaceBitArray = new BitArray(freeSpaceMap) { Length = bitmapSize }; var freeBlockManagerBitArrayBased = new FreeBlockManagerBitArrayBased(freeSpaceBitArray, fileSystemInfo.FirstNonReservedDiskBlockIndex, bitmapSize); IFreeBlockManager freeBlockManager = new FreeBlockManagerDiskWriting(freeSpaceBitmapStore, freeBlockManagerBitArrayBased); IFolderEnumeratorRegistry folderEnumeratorRegistry = new FolderEnumeratorRegistry(); IFileSystemObjectLockingManager lockingManager = new FileSystemObjectLockingManager(); var blockReferenceEditor = new BlockReferenceListsEditor(disk, freeBlockManager, fileSystemNodeStorage); //Note: много общих коллабораторов у трех классов. Недорефакторено. var fileManager = new FileManager(disk, fileSystemNodeStorage, namesComparer, nodeResolver, freeBlockManager, folderEnumeratorRegistry, lockingManager, blockReferenceEditor, pathBuilder, namesValidator, pathValidator); var folderManager = new FolderManager(fileSystemNodeStorage, namesComparer, nodeResolver, freeBlockManager, folderEnumeratorRegistry, lockingManager, blockReferenceEditor, pathBuilder, namesValidator, pathValidator); return(new VirtualFileSystem(disk, fileSystemInfo, fileSystemNodeStorage, namesComparer, nodeResolver, freeBlockManager, folderEnumeratorRegistry, blockReferenceEditor, pathBuilder, namesValidator, pathValidator, fileManager, folderManager)); }