private void Compare_Click(object sender, EventArgs e) { try { if (IsReady == true) { using (new PleaseWait(this.Location)) { Thread.Sleep(1000); CompareText compare = new CompareText(); CompareBox.Text = compare.compareText(CSV_Compare.SetFilePathOne, CSV_Compare.SetFilePathTwo); LineShow showLine = new LineShow(); LineBox.Text = showLine.CompareLine(CSV_Compare.SetFilePathOne, CSV_Compare.SetFilePathTwo); IsReady = false; } } else { MessageBox.Show("Please Change file, Its already been compared"); } } catch (Exception) { MessageBox.Show("Error\r\nPlease Retry", "Error"); } }
public ComparisonProgress(string sourceFile, string destinationFile) : this() { var fileInfo = new FileCompareInfo(); if (!ValidFile(sourceFile) && !ValidFile(destinationFile)) { fileInfo.ComparePathType = PathType.Directory; } else { if (ValidFile(sourceFile) || ValidFile(destinationFile)) { fileInfo.ComparePathType = PathType.File; } } ComparisonPathType = fileInfo.ComparePathType; fileInfo.SourceFile = sourceFile; fileInfo.DestinationFile = destinationFile; sourceDiffList = null; destinationDiffList = null; txtPath1.Text = sourceFile; txtPath2.Text = destinationFile; backgroundWorkerDifference.RunWorkerAsync(fileInfo); }
public ComparisonProgress ( List <CompareItem> listViewItems1, List <CompareItem> listViewItems2, string sourceFile, string destinationFile ) : this() { var fileInfo = new FileCompareInfo(); fileInfo.ComparePathType = PathType.ListItems; ComparisonPathType = fileInfo.ComparePathType; fileInfo.ListViewItems1 = listViewItems1; fileInfo.ListViewItems2 = listViewItems2; sourceDiffList = null; destinationDiffList = null; txtPath1.Text = sourceFile; txtPath2.Text = destinationFile; backgroundWorkerDifference.RunWorkerAsync(fileInfo); }
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); }
public void DisplayDirectoryResults(CompareText SourceDiffList, CompareText DestinationDiffList, ArrayList ResultLines) { CompareItem lviS; CompareItem lviD; ListFiles1 = new List <CompareItem>(); ListFiles2 = new List <CompareItem>(); sourceDiffList = SourceDiffList; destinationDiffList = DestinationDiffList; resultLines = ResultLines; int cnt = 1; DifferenceLines = new ArrayList(); string numberMask = "000"; if (sourceDiffList.Count() > 999 && sourceDiffList.Count() > sourceDiffList.Count()) { for (int x = 0; x < sourceDiffList.Count().ToString().Length; x++) { numberMask = numberMask + "0"; } } else if (destinationDiffList.Count() > 999) { for (int x = 0; x < destinationDiffList.Count().ToString().Length; x++) { numberMask = numberMask + "0"; } } foreach (CompareResultSpan drs in resultLines) { switch (drs.Status) { case CompareResultSpanStatus.DeleteSource: for (int i = 0; i < drs.Length; i++) { lviS = new CompareItem(cnt.ToString(numberMask)); lviD = new CompareItem(cnt.ToString(numberMask)); DifferenceLines.Add(cnt); lviS.CompareResultTag = CompareItem.CompareResult.Add; lviD.CompareResultTag = CompareItem.CompareResult.Add; lviS.ItemSourceTag = CompareItem.ItemSource.Original; lviD.ItemSourceTag = CompareItem.ItemSource.NotInOriginal; summary.LinesLeftOnly++; //Green lviS.BackColor = Color.FromArgb(208, 236, 204); lviD.BackColor = Color.FromArgb(208, 236, 204); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Line); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Size); lviS.SubItems.Add( (sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type.ToString()); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Path); if ((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type == PathType.Directory) { lviS.ImageIndex = 0; } else { lviS.ImageIndex = 1; } lviD.SubItems.Add(""); ListFiles1.Add(lviS); ListFiles2.Add(lviD); cnt++; } break; case CompareResultSpanStatus.NoChange: for (int i = 0; i < drs.Length; i++) { lviS = new CompareItem(cnt.ToString(numberMask)); lviD = new CompareItem(cnt.ToString(numberMask)); lviS.CompareResultTag = CompareItem.CompareResult.Equal; lviD.CompareResultTag = CompareItem.CompareResult.Equal; lviS.ItemSourceTag = CompareItem.ItemSource.Original; lviD.ItemSourceTag = CompareItem.ItemSource.Original; summary.LinesMatch++; lviS.BackColor = Color.White; lviD.BackColor = Color.White; lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Line); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Size); lviS.SubItems.Add( (sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type.ToString()); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Path); if ((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type == PathType.Directory) { lviS.ImageIndex = 0; } else { lviS.ImageIndex = 1; } lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Line); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Size); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type. ToString()); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Path); if ((destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type == PathType.Directory) { lviD.ImageIndex = 0; } else { lviD.ImageIndex = 1; } ListFiles1.Add(lviS); ListFiles2.Add(lviD); cnt++; } break; case CompareResultSpanStatus.AddDestination: for (int i = 0; i < drs.Length; i++) { lviS = new CompareItem(cnt.ToString(numberMask)); lviD = new CompareItem(cnt.ToString(numberMask)); DifferenceLines.Add(cnt); lviS.CompareResultTag = CompareItem.CompareResult.Delete; lviD.CompareResultTag = CompareItem.CompareResult.Delete; lviS.ItemSourceTag = CompareItem.ItemSource.NotInOriginal; lviD.ItemSourceTag = CompareItem.ItemSource.Original; summary.LinesRightOnly++; //Gray lviS.BackColor = Color.FromArgb(224, 224, 224); //Light Coral lviD.BackColor = Color.FromArgb(241, 213, 214); lviS.SubItems.Add(""); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Line); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Size); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type. ToString()); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Path); if ((destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type == PathType.Directory) { lviD.ImageIndex = 0; } else { lviD.ImageIndex = 1; } ListFiles1.Add(lviS); ListFiles2.Add(lviD); cnt++; } break; case CompareResultSpanStatus.Replace: for (int i = 0; i < drs.Length; i++) { lviS = new CompareItem(cnt.ToString(numberMask)); lviD = new CompareItem(cnt.ToString(numberMask)); lviS.CompareResultTag = CompareItem.CompareResult.Replace; lviD.CompareResultTag = CompareItem.CompareResult.Replace; lviS.ItemSourceTag = CompareItem.ItemSource.Original; lviD.ItemSourceTag = CompareItem.ItemSource.Original; summary.LinesDifferent++; DifferenceLines.Add(cnt); //Green lviS.BackColor = Color.FromArgb(208, 236, 204); lviD.BackColor = Color.FromArgb(208, 236, 204); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Line); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Size); lviS.SubItems.Add( (sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type.ToString()); lviS.SubItems.Add((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Path); if ((sourceDiffList.GetByIndex(drs.SourceIndex + i)).Type == PathType.Directory) { lviS.ImageIndex = 0; } else { lviS.ImageIndex = 1; } lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Line); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Size); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type. ToString()); lviD.SubItems.Add( (destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Path); if ((destinationDiffList.GetByIndex(drs.DestinationIndex + i)).Type == PathType.Directory) { lviD.ImageIndex = 0; } else { lviD.ImageIndex = 1; } ListFiles1.Add(lviS); ListFiles2.Add(lviD); cnt++; } break; } } }