public static void Generate(string[] archiveFileNames, System.IO.Stream outputStream) { var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap(); AnnoRDA.FileSystem fileSystem; if (archiveFileNames.Length == 1 && PathIsDirectory(archiveFileNames[0])) { var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader(); var loadResult = directoryLoader.Load(archiveFileNames[0], System.Threading.CancellationToken.None); fileSystem = loadResult.FileSystem; foreach (string path in loadResult.ContainerPaths) { archiveFiles.Add(path, path); } } else { fileSystem = new AnnoRDA.FileSystem(); var fileLoader = new AnnoRDA.Loader.ContainerFileLoader(); foreach (var rdaFileName in archiveFileNames) { var loadedFS = fileLoader.Load(rdaFileName); fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None); archiveFiles.Add(rdaFileName, rdaFileName); } } using (var fileDBWriter = new AnnoRDA.FileDB.Writer.FileSystemWriter(outputStream, true)) { fileDBWriter.WriteFileSystem(fileSystem, archiveFiles); } }
public override int Run(string[] remainingArguments) { var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap(); AnnoRDA.FileSystem fileSystem; if (remainingArguments.Length == 1 && this.PathIsDirectory(remainingArguments[0])) { var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader(); var loadResult = directoryLoader.Load(remainingArguments[0], System.Threading.CancellationToken.None); fileSystem = loadResult.FileSystem; foreach (string path in loadResult.ContainerPaths) { archiveFiles.Add(path, path); } } else { fileSystem = new AnnoRDA.FileSystem(); var fileLoader = new AnnoRDA.Loader.ContainerFileLoader(); foreach (var rdaFileName in remainingArguments) { var loadedFS = fileLoader.Load(rdaFileName); fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None); archiveFiles.Add(rdaFileName, rdaFileName); } } using (var outputStream = new System.IO.FileStream(this.outputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (var writer = new AnnoRDA.FileDB.Writer.FileDBWriter(outputStream, false)) { writer.WriteFileDB(fileSystem, archiveFiles); } } return 0; }
private void WriteFileTree(AnnoRDA.FileSystem fileSystem, ArchiveFileMap archiveFiles, IList <AnnoRDA.BlockContentsSource> residentBuffers) { this.WriteStructureStart(FileSystemTags.Structures.Names.FileTree); this.WritePathMap(fileSystem.Root.Folders, "", archiveFiles, residentBuffers); this.WriteFileMap(fileSystem.Root.Files, "", archiveFiles, residentBuffers); this.WriteStructureEnd(); }
internal static void ContainsFolder(AnnoRDA.FileSystem fileSystem, IEnumerable <string> path) { if (fileSystem == null) { throw new ArgumentNullException("fileSystem"); } ContainsFolder(fileSystem.Root, path); }
internal static void ContainsFolder(AnnoRDA.FileSystem fileSystem, string path) { if (path == null) { throw new ArgumentNullException("path"); } ContainsFolder(fileSystem, Enumerable.Repeat(path, 1)); }
internal static void ContainsFile(AnnoRDA.FileSystem fileSystem, FileSpec fileSpec) { if (fileSystem == null) { throw new ArgumentNullException("fileSystem"); } ContainsFile(fileSystem.Root, fileSpec); }
private async void button_Generate_Click(object sender, RoutedEventArgs e) { this.cancellationTokenSource = new System.Threading.CancellationTokenSource(); this.viewModel.IsGenerating = true; ICollection <RDAFileListItem> enabledItems = viewModel.RDAFileList.Items.Where((item) => item.IsEnabled).ToList(); int numSteps = enabledItems.Count * 2; // reading numSteps += 1; // writing this.statusBar_progressBar_Progress.Minimum = 0; this.statusBar_progressBar_Progress.Maximum = numSteps; this.statusBar_progressBar_Progress.Value = 0; var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap(); var fileSystem = new AnnoRDA.FileSystem(); var fileLoader = new AnnoRDA.Loader.ContainerFileLoader(); try { foreach (var rdaFile in enabledItems) { this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}", rdaFile.Name); archiveFiles.Add(rdaFile.LoadPath, rdaFile.Name); var progress = new System.Progress <string>((string fileName) => { this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}: {1}", rdaFile.Name, fileName); }); var containerFileSystem = await Task.Run(() => fileLoader.Load(rdaFile.LoadPath, progress, this.cancellationTokenSource.Token)); this.statusBar_progressBar_Progress.Value += 1; this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}", rdaFile.Name); await Task.Run(() => fileSystem.OverwriteWith(containerFileSystem, null, this.cancellationTokenSource.Token)); this.statusBar_progressBar_Progress.Value += 1; } this.statusBar_textBlock_Message.Text = "Writing..."; using (var outputStream = new System.IO.FileStream(this.viewModel.OutputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (var writer = new AnnoRDA.FileDB.Writer.FileDBWriter(outputStream, false)) { await Task.Run(() => writer.WriteFileDB(fileSystem, archiveFiles)); } } this.statusBar_progressBar_Progress.Value += 1; this.statusBar_textBlock_Message.Text = "Done"; } catch (System.OperationCanceledException) { this.statusBar_textBlock_Message.Text = "Canceled"; } finally { this.viewModel.IsGenerating = false; this.cancellationTokenSource.Dispose(); this.cancellationTokenSource = null; } }
private void WriteArchiveMap(AnnoRDA.FileSystem fileSystem, ArchiveFileMap archiveFiles) { this.WriteStructureStart(FileSystemTags.Structures.Names.ArchiveMap); IList <AnnoRDA.BlockContentsSource> residentBuffers = new List <AnnoRDA.BlockContentsSource>(); this.WriteFileTree(fileSystem, archiveFiles, residentBuffers); this.WriteArchiveFiles(archiveFiles); this.WriteResidentBuffers(residentBuffers); this.WriteStructureEnd(); }
public Result ReadFileSystem() { this.fileSystem = new FileSystem(); this.archiveFiles = new Writer.ArchiveFileMap(); this.stateStack = new Stack <IState>(); this.stateStack.Push(new RootState(this.fileSystem, this.archiveFiles)); this.reader.ReadFile(this); return(new Result { FileSystem = this.fileSystem, ArchiveFiles = this.archiveFiles }); }
public override int Run(string[] remainingArguments) { var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap(); AnnoRDA.FileSystem fileSystem; if (remainingArguments.Length == 1 && this.PathIsDirectory(remainingArguments[0])) { var directoryLoader = new AnnoRDA.Loader.ContainerDirectoryLoader(); var loadResult = directoryLoader.Load(remainingArguments[0], System.Threading.CancellationToken.None); fileSystem = loadResult.FileSystem; foreach (string path in loadResult.ContainerPaths) { archiveFiles.Add(path, path); } } else { fileSystem = new AnnoRDA.FileSystem(); var fileLoader = new AnnoRDA.Loader.ContainerFileLoader(); foreach (var rdaFileName in remainingArguments) { var loadedFS = fileLoader.Load(rdaFileName); fileSystem.OverwriteWith(loadedFS, null, System.Threading.CancellationToken.None); archiveFiles.Add(rdaFileName, rdaFileName); } } using (var outputStream = new System.IO.FileStream(this.outputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (var writer = new AnnoRDA.FileDB.Writer.FileSystemWriter(outputStream, false)) { writer.WriteFileSystem(fileSystem, archiveFiles); } } return(0); }
private async void button_Generate_Click(object sender, RoutedEventArgs e) { this.cancellationTokenSource = new System.Threading.CancellationTokenSource(); this.viewModel.IsGenerating = true; ICollection<RDAFileListItem> enabledItems = viewModel.RDAFileList.Items.Where((item) => item.IsEnabled).ToList(); int numSteps = enabledItems.Count * 2; // reading numSteps += 1; // writing this.statusBar_progressBar_Progress.Minimum = 0; this.statusBar_progressBar_Progress.Maximum = numSteps; this.statusBar_progressBar_Progress.Value = 0; var archiveFiles = new AnnoRDA.FileDB.Writer.ArchiveFileMap(); var fileSystem = new AnnoRDA.FileSystem(); var fileLoader = new AnnoRDA.Loader.ContainerFileLoader(); try { foreach (var rdaFile in enabledItems) { this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}", rdaFile.Name); archiveFiles.Add(rdaFile.LoadPath, rdaFile.Name); var progress = new System.Progress<string>((string fileName) => { this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}: {1}", rdaFile.Name, fileName); }); var containerFileSystem = await Task.Run(() => fileLoader.Load(rdaFile.LoadPath, progress, this.cancellationTokenSource.Token)); this.statusBar_progressBar_Progress.Value += 1; this.statusBar_textBlock_Message.Text = System.String.Format("Loading {0}", rdaFile.Name); await Task.Run(() => fileSystem.OverwriteWith(containerFileSystem, null, this.cancellationTokenSource.Token)); this.statusBar_progressBar_Progress.Value += 1; } this.statusBar_textBlock_Message.Text = "Writing..."; using (var outputStream = new System.IO.FileStream(this.viewModel.OutputFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (var writer = new AnnoRDA.FileDB.Writer.FileDBWriter(outputStream, false)) { await Task.Run(() => writer.WriteFileDB(fileSystem, archiveFiles)); } } this.statusBar_progressBar_Progress.Value += 1; this.statusBar_textBlock_Message.Text = "Done"; } catch(System.OperationCanceledException) { this.statusBar_textBlock_Message.Text = "Canceled"; } finally { this.viewModel.IsGenerating = false; this.cancellationTokenSource.Dispose(); this.cancellationTokenSource = null; } }
public FileTreeState(AnnoRDA.FileSystem fileSystem, Writer.ArchiveFileMap archiveFiles) { this.fileSystem = fileSystem; this.archiveFiles = archiveFiles; }
public void WriteFileSystem(AnnoRDA.FileSystem fileSystem, ArchiveFileMap archiveFiles) { this.WriteArchiveMap(fileSystem, archiveFiles); this.writer.FinalizeFile(this.tags); }
internal static void FolderAndFileCountAreEqual(int expectedFolders, int expectedFiles, AnnoRDA.FileSystem actual) { NotNull(actual); FolderAndFileCountAreEqual(expectedFolders, expectedFiles, actual.Root); }
public static void Empty(AnnoRDA.FileSystem actual) { NotNull(actual); Empty(actual.Root); }