Ejemplo n.º 1
0
        private void SearchDuplicates()
        {
            MergeCtl.Base      = fBase;
            MergeCtl.MergeMode = fRMMode;

            MergeCtl.SetRec1(null);
            MergeCtl.SetRec2(null);

            MatchParams mParams;

            //mParams.IndistinctNameMatching = chkIndistinctMatching.Checked;
            mParams.NamesIndistinctThreshold = (float)(edNameAccuracy.Value / 100.0f);
            mParams.DatesCheck       = chkBirthYear.Checked.GetValueOrDefault();
            mParams.YearsInaccuracy  = (int)edYearInaccuracy.Value;
            mParams.CheckEventPlaces = false;

            bool res = false;

            btnSkip.Enabled = false;

            try
            {
                ProgressBar1.MinValue = 0;
                ProgressBar1.MaxValue = fTree.RecordsCount;
                ProgressBar1.Value    = fRMIndex;

                int recNum = fTree.RecordsCount;
                for (int i = fRMIndex; i < recNum; i++)
                {
                    fRMIndex            = i;
                    ProgressBar1.Value += 1; //Increment(1);

                    GEDCOMRecord iRec = fTree[i];
                    if (iRec.RecordType != fRMMode)
                    {
                        continue;
                    }

                    for (int j = i + 1; j < recNum; j++)
                    {
                        GEDCOMRecord kRec = fTree[j];
                        if (kRec.RecordType != fRMMode)
                        {
                            continue;
                        }

                        if (iRec == kRec)
                        {
                            continue;
                        }
                        if (fRMSkip.IndexOf(iRec.XRef + "-" + kRec.XRef) >= 0)
                        {
                            continue;
                        }

                        res = iRec.IsMatch(kRec, mParams) >= 100.0f;

                        if (res && fRMMode == GEDCOMRecordType.rtIndividual)
                        {
                            res = CheckPersonsEx((GEDCOMIndividualRecord)iRec, (GEDCOMIndividualRecord)kRec);
                        }

                        if (res)
                        {
                            MergeCtl.SetRec1(iRec);
                            MergeCtl.SetRec2(kRec);
                            break;
                        }
                    }

                    if (res)
                    {
                        break;
                    }
                }
            }
            finally
            {
                btnSkip.Enabled = true;
            }
        }
Ejemplo n.º 2
0
        public void SearchDuplicates()
        {
            fView.MergeCtl.Base      = fBase;
            fView.MergeCtl.MergeMode = fRMMode;

            fView.MergeCtl.SetRec1(null);
            fView.MergeCtl.SetRec2(null);

            MatchParams mParams;

            //mParams.IndistinctNameMatching = fView.IndistinctMatchingCheck.Checked; // FIXME!
            mParams.NamesIndistinctThreshold = ((float)fView.NameAccuracyNum.Value) / 100.0f;
            mParams.DatesCheck       = fView.BirthYearChk.Checked;
            mParams.YearsInaccuracy  = (int)fView.YearInaccuracyNum.Value;
            mParams.CheckEventPlaces = false;

            bool res = false;

            fView.SkipBtn.Enabled = false;

            try {
                var tree = fBase.Context.Tree;

                fView.ProgressBar.Minimum = 0;
                fView.ProgressBar.Maximum = tree.RecordsCount;
                fView.ProgressBar.Value   = fRMIndex;

                int recNum = tree.RecordsCount;
                for (int i = fRMIndex; i < recNum; i++)
                {
                    fRMIndex = i;
                    fView.ProgressBar.Increment(1);

                    GEDCOMRecord iRec = tree[i];
                    if (iRec.RecordType != fRMMode)
                    {
                        continue;
                    }

                    for (int j = i + 1; j < recNum; j++)
                    {
                        GEDCOMRecord kRec = tree[j];
                        if (kRec.RecordType != fRMMode)
                        {
                            continue;
                        }

                        if (iRec == kRec)
                        {
                            continue;
                        }
                        if (fRMSkip.IndexOf(iRec.XRef + "-" + kRec.XRef) >= 0)
                        {
                            continue;
                        }

                        res = iRec.IsMatch(kRec, mParams) >= 100.0f;

                        if (res && fRMMode == GEDCOMRecordType.rtIndividual)
                        {
                            res = CheckPersonsEx((GEDCOMIndividualRecord)iRec, (GEDCOMIndividualRecord)kRec);
                        }

                        if (res)
                        {
                            fView.MergeCtl.SetRec1(iRec);
                            fView.MergeCtl.SetRec2(kRec);
                            break;
                        }
                    }

                    if (res)
                    {
                        break;
                    }
                }
            } finally {
                fView.SkipBtn.Enabled = true;
            }
        }