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); }
public static bool Execute(IFile file, StudyScalarFiles studyScalarFiles) { switch (file.FileName) { case Constants.StudyScalarResultsFileName: studyScalarFiles.ScalarResults = file; return(true); case Constants.StudyScalarMetadataFileName: studyScalarFiles.ScalarMetadata = file; return(true); case Constants.StudyScalarInputsFileName: studyScalarFiles.ScalarInputs = file; return(true); case Constants.StudyScalarInputsMetadataFileName: studyScalarFiles.ScalarInputsMetadata = file; return(true); } return(false); }