Exemple #1
0
        public static void ProcessEntireDirectory(LogType t)
        {
            String folder;
            // Create folder picker
            FileDialog fileDialog = ThisAddIn.app.FileDialog[MsoFileDialogType.msoFileDialogFolderPicker];

            fileDialog.AllowMultiSelect = false;
            if (fileDialog.Show() != -1)
            {
                return;
            }
            folder = fileDialog.SelectedItems.Item(1);

            // Prevent showing excel document updates to improve performance
            ThisAddIn.app.ScreenUpdating = false;

            string outputFileName = Path.Combine(folder, "processed_all.csv");

            string[] files = Directory.GetFiles(folder, Util.GetFileNamePatternForLog(t));

            // Quit if no files found
            if (files.Length == 0)
            {
                System.Windows.Forms.MessageBox.Show("No compatible files found in the selected directory.");
                return;
            }

            // Show progress bar
            ProgressBarForm progress = new ProgressBarForm();

            progress.InitializeAndShow(files.Length - 1);

            FileWriter writer = new FileWriter(outputFileName);

            // Loop to process multiple files consecutively
            for (int i = 0; i < files.Length; i++)
            {
                ILogProcessor processor = Util.CreateProcessor(t);
                FileReader    reader    = new FileReader(files[i]);
                processor.SetFileName(Path.GetFileName(files[i]));

                Util.RunPipeline(reader, processor, writer, writeHeader: i == 0);

                progress.Step();
            }

            writer.Flush();
            progress.Done();
            System.Windows.Forms.MessageBox.Show("Processed output written to " + outputFileName);
        }