public static void CompareFiles() { CLIComparer.Init(); //If I am here I have valid files, start comparing CompareEngine.CompareEngine compareEngine = new CompareEngine.CompareEngine(); //Load the file paths into objects CompareText sourceDiffList = new CompareText(LeftSide); CompareText destinationDiffList = new CompareText(RightSide); //Perform the comparison compareEngine.StartDiff(sourceDiffList, destinationDiffList); //Get Results ArrayList resultLines = compareEngine.DiffResult(); string numberMask = GetNumberMask(sourceDiffList.Count(), destinationDiffList.Count()); int lineCounter = 1; foreach (CompareResultSpan compareResultSpan in resultLines) { switch (compareResultSpan.Status) { case CompareResultSpanStatus.DeleteSource: for (int i = 0; i < compareResultSpan.Length; i++) { string initial = ""; string rewrite = ""; initial += lineCounter.ToString(numberMask); rewrite += lineCounter.ToString(numberMask); initial += " < " + sourceDiffList.GetByIndex(compareResultSpan.SourceIndex + i).Line + ""; CLIComparer.DiffLines.Add(initial); lineCounter++; CLIComparer.MissingSourceCounter++; } break; case CompareResultSpanStatus.NoChange: for (int i = 0; i < compareResultSpan.Length; i++) { lineCounter++; } break; case CompareResultSpanStatus.AddDestination: for (int i = 0; i < compareResultSpan.Length; i++) { string rewrite = ""; rewrite += lineCounter.ToString(numberMask); rewrite += " > " + destinationDiffList.GetByIndex(compareResultSpan.DestinationIndex + i).Line + ""; CLIComparer.DiffLines.Add(rewrite); lineCounter++; CLIComparer.MissingDestCounter++; } break; case CompareResultSpanStatus.Replace: for (int i = 0; i < compareResultSpan.Length; i++) { string initial = ""; string rewrite = ""; initial += lineCounter.ToString(numberMask); rewrite += lineCounter.ToString(numberMask); initial += " initial:"; rewrite += " rewrite:"; initial += sourceDiffList.GetByIndex(compareResultSpan.SourceIndex + i).Line; rewrite += destinationDiffList.GetByIndex(compareResultSpan.DestinationIndex + i).Line; CLIComparer.DiffLines.Add(initial); CLIComparer.DiffLines.Add(rewrite); lineCounter++; CLIComparer.DiffsCounter++; } break; } } CLIComparer.ShowSummary(); }
private void backgroundWorkerDifference_DoWork(object sender, DoWorkEventArgs e) { startTime = DateTime.Now; FileInfo fileInfo; backgroundWorkerDifference.WorkerReportsProgress = true; var fileCompareInfo = (FileCompareInfo)e.Argument; backgroundWorkerDifference.ReportProgress(5); if (fileCompareInfo.ComparePathType == PathType.ListItems) { var LineItems1 = new List <string>(); var LineItems2 = new List <string>(); backgroundWorkerDifference.ReportProgress(15); foreach (CompareItem item in fileCompareInfo.ListViewItems1) { if (item.ItemSourceTag != CompareItem.ItemSource.NotInOriginal) { LineItems1.Add(item.SubItems[1].Text); } } foreach (CompareItem item in fileCompareInfo.ListViewItems2) { if (item.ItemSourceTag != CompareItem.ItemSource.NotInOriginal) { LineItems2.Add(item.SubItems[1].Text); } } sourceDiffList = new CompareText(LineItems1); destinationDiffList = new CompareText(LineItems2); } else if (fileCompareInfo.ComparePathType == PathType.Line) { var LineItems1 = new List <string>(); var LineItems2 = new List <string>(); backgroundWorkerDifference.ReportProgress(15); foreach (char s in fileCompareInfo.Line1) { LineItems1.Add(s.ToString()); } foreach (char s in fileCompareInfo.Line2) { LineItems2.Add(s.ToString()); } sourceDiffList = new CompareText(LineItems1); destinationDiffList = new CompareText(LineItems2); } else if (fileCompareInfo.ComparePathType == PathType.Directory) { List <DirectoryItem> sourceDirectoryListing = DirectoryHelper.GetDirectoryInfo(fileCompareInfo.SourceFile); List <DirectoryItem> destinationDirectoryListing = DirectoryHelper.GetDirectoryInfo(fileCompareInfo.DestinationFile); backgroundWorkerDifference.ReportProgress(50); sourceDiffList = new CompareText(sourceDirectoryListing); destinationDiffList = new CompareText(destinationDirectoryListing); } else //File { try { fileInfo = new FileInfo(fileCompareInfo.SourceFile); if (fileInfo.Exists) { sourceDiffList = new CompareText(fileCompareInfo.SourceFile); } else { sourceDiffList = new CompareText(); } fileInfo = new FileInfo(fileCompareInfo.DestinationFile); if (fileInfo.Exists) { destinationDiffList = new CompareText(fileCompareInfo.DestinationFile); } else { destinationDiffList = new CompareText(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error Loading Files to Compare", MessageBoxButtons.OK); return; } } backgroundWorkerDifference.ReportProgress(65); var compareEngine = new CompareEngine.CompareEngine(); backgroundWorkerDifference.ReportProgress(70); compareEngine.StartDiff(sourceDiffList, destinationDiffList); backgroundWorkerDifference.ReportProgress(80); resultLines = compareEngine.DiffResult(); backgroundWorkerDifference.ReportProgress(90); //Load ListView Items if (fileCompareInfo.ComparePathType == PathType.Line) { } else if (fileCompareInfo.ComparePathType == PathType.Directory) { DisplayDirectoryResults(sourceDiffList, destinationDiffList, resultLines); } else { DistplayFileResults(sourceDiffList, destinationDiffList, resultLines); } backgroundWorkerDifference.ReportProgress(95); }