private void CallbackSaveDuplicateContentCsvReport( object sender, EventArgs e, MacroscopeCsvDuplicateContentReport.OutputWorksheet SelectedOutputWorksheet, string OutputFilename ) { SaveFileDialog Dialog = new SaveFileDialog(); Dialog.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"; Dialog.FilterIndex = 2; Dialog.RestoreDirectory = true; Dialog.DefaultExt = "csv"; Dialog.AddExtension = true; Dialog.FileName = OutputFilename; this.Enabled = false; if (Dialog.ShowDialog() == DialogResult.OK) { string Path = Dialog.FileName; MacroscopeTriplePercentageProgressForm ProgressForm; MacroscopeCsvDuplicateContentReport CsvReport; ProgressForm = new MacroscopeTriplePercentageProgressForm(MainForm: this); CsvReport = new MacroscopeCsvDuplicateContentReport( ProgressFormDialogue: ProgressForm ); try { Cursor.Current = Cursors.WaitCursor; CsvReport.WriteCsv( JobMaster: this.JobMaster, SelectedOutputWorksheet: SelectedOutputWorksheet, OutputFilename: Path ); Cursor.Current = Cursors.Default; } catch (MacroscopeSaveCsvFileException ex) { this.DialogueBoxError("Error saving Duplicate Content CSV Report", ex.Message); } catch (Exception ex) { this.DialogueBoxError("Error saving Duplicate Content CSV Report", ex.Message); } finally { Cursor.Current = Cursors.Default; } } Dialog.Dispose(); this.Enabled = true; }
/**************************************************************************/ public void WriteCsv( MacroscopeJobMaster JobMaster, MacroscopeCsvDuplicateContentReport.OutputWorksheet SelectedOutputWorksheet, string OutputFilename ) { decimal MajorPercentageDivider = 1; try { using (StreamWriter writer = File.CreateText(OutputFilename)) { CsvWriter ws = new CsvWriter(writer); switch (SelectedOutputWorksheet) { case MacroscopeCsvDuplicateContentReport.OutputWorksheet.TITLES: this.ProgressForm.UpdatePercentages( Title: "Processing Titles", Message: "Identifying duplicate titles in collection:", MajorPercentage: (( decimal )100 / MajorPercentageDivider) * ( decimal )1, ProgressLabelMajor: "Documents Processed", MinorPercentage: 0, ProgressLabelMinor: "", SubMinorPercentage: 0, ProgressLabelSubMinor: "" ); this.BuildWorksheetPageDuplicateTitles(JobMaster, ws); break; case MacroscopeCsvDuplicateContentReport.OutputWorksheet.CHECKSUMS: this.ProgressForm.UpdatePercentages( Title: "Processing Checksums", Message: "Identifying duplicate checksums in collection:", MajorPercentage: (( decimal )100 / MajorPercentageDivider) * ( decimal )2, ProgressLabelMajor: "Documents Processed", MinorPercentage: 0, ProgressLabelMinor: "", SubMinorPercentage: 0, ProgressLabelSubMinor: "" ); this.BuildWorksheetPageDuplicateChecksums(JobMaster, ws); break; case MacroscopeCsvDuplicateContentReport.OutputWorksheet.ETAGS: this.ProgressForm.UpdatePercentages( Title: "Processing ETags", Message: "Identifying duplicate ETags in collection:", MajorPercentage: (( decimal )100 / MajorPercentageDivider) * ( decimal )3, ProgressLabelMajor: "Documents Processed", MinorPercentage: 0, ProgressLabelMinor: "", SubMinorPercentage: 0, ProgressLabelSubMinor: "" ); this.BuildWorksheetPageDuplicateEtags(JobMaster, ws); break; case MacroscopeCsvDuplicateContentReport.OutputWorksheet.PAGES: this.ProgressForm.UpdatePercentages( Title: "Applying Levenshtein Distance", Message: "Identifying duplicate documents via Levenshtein Distance in collection:", MajorPercentage: (( decimal )100 / MajorPercentageDivider) * ( decimal )4, ProgressLabelMajor: "Documents Processed: 0", MinorPercentage: 0, ProgressLabelMinor: "", SubMinorPercentage: 0, ProgressLabelSubMinor: "" ); this.BuildWorksheetPageDuplicatePages(JobMaster, ws); break; default: break; } } } catch (CsvWriterException) { MacroscopeSaveCsvFileException CannotSaveCsvFileException; CannotSaveCsvFileException = new MacroscopeSaveCsvFileException( string.Format("Cannot write to CSV file at {0}", OutputFilename) ); throw CannotSaveCsvFileException; } catch (IOException) { MacroscopeSaveCsvFileException CannotSaveCsvFileException; CannotSaveCsvFileException = new MacroscopeSaveCsvFileException( string.Format("Cannot write to CSV file at {0}", OutputFilename) ); throw CannotSaveCsvFileException; } }