コード例 #1
0
            private async Task TestScalarResultsProcessing(FileInfo scalarResults, FileInfo scalarResultsMetadata)
            {
                if (!scalarResults.Exists)
                {
                    this.logger.LogWarning("Scalar results file not found: {FilePath}", scalarResults.FullName);
                    return;
                }

                if (!scalarResultsMetadata.Exists)
                {
                    this.logger.LogWarning("Scalar results metadata file not found: {FilePath}", scalarResultsMetadata.FullName);
                    return;
                }

                var scalarResultsContent         = File.ReadAllText(scalarResults.FullName);
                var scalarResultsMetadataContent = File.ReadAllText(scalarResultsMetadata.FullName);

                this.logger.LogInformation("ScalarResultsProcessing Started");

                var sw     = Stopwatch.StartNew();
                var result = await WriteCombinedStudyScalarData.GetStudyScalarResultsFromMergedFiles(new MemoryFile(scalarResultsContent), new MemoryFile(scalarResultsMetadataContent));

                sw.Stop();

                this.logger.LogInformation("Parsed {ChannelCount} channels", result.Count);
                if (result.Count > 0)
                {
                    this.logger.LogInformation("First channel {Name} has {Count} points", result[0].Name, result[0].Data.Count);
                }

                this.logger.LogInformation("ScalarResultsProcessing: {Time}", sw.Elapsed);
            }
コード例 #2
0
        public async Task ExecuteAsync(
            IRootFolder root,
            IFileWriter writer,
            bool channelsAsCsv,
            bool deleteProcessedFiles,
            int parallelism)
        {
            var studyScalarFiles   = new StudyScalarFiles();
            var channelDataColumns = new ChannelDataColumns();

            var allFiles = await root.GetFilesAsync();

            var filesToWrite = new List <IFile>();

            foreach (var file in allFiles)
            {
                try
                {
                    TryAddFileToStudyScalarResults.Execute(file, studyScalarFiles);

                    if (channelsAsCsv && TryGetChannelMetadata.Execute(file, out var channelMetadata))
                    {
                        channelDataColumns.Add(new CsvColumn(channelMetadata, file));
                    }
                    else
                    {
                        filesToWrite.Add(file);
                    }
                }
                catch (Exception t)
                {
                    Console.WriteLine();
                    Console.WriteLine("Failed to process file: " + file);
                    Console.WriteLine(t);

                    if (t is AbortProcessingException)
                    {
                        throw;
                    }
                }
            }

            await filesToWrite.ForEachAsync(parallelism, async file =>
            {
                await writer.WriteExistingFile(root, file);
            });

            await WriteChannelDataAsCsv.ExecuteAsync(root, writer, deleteProcessedFiles, parallelism, channelDataColumns);

            await WriteCombinedStudyScalarData.ExecuteAsync(root, writer, studyScalarFiles);
        }