Exemple #1
0
        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();
        }
Exemple #2
0
        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);
        }