Beispiel #1
0
        private void GetMatchResultsForSocial(RowLockingWrapper <CreditCardRow> creditCardRowToFind,
                                              RowLockingWrapper <ConsumerRow> consumerRowToFind,
                                              object ccNum, object lastName,
                                              List <MatchResult> results, IEnumerable <MatchInfo> snMiList,
                                              IDataModelTransaction dataModelTransaction, Decimal matchThreshold)
        {
            if (snMiList == null)
            {
                return;
            }

            //!!!RM what is faster using the .Consumer row
            //or using the ConsumerRow Fuz Matcher
            foreach (MatchInfo snMi in snMiList)
            {
                ConsumerRow miConsumerRow = (ConsumerRow)snMi.row;

                RowLockingWrapper <ConsumerRow> miConsumerRowWrapper = new RowLockingWrapper <ConsumerRow>(miConsumerRow, dataModelTransaction);
                MatchInfo ssnLnMi = this.lastNameMatcher.Validate(lastName, miConsumerRowWrapper, dataModelTransaction);

                MatchInfo ssnFnMi = null;

                miConsumerRowWrapper.AcquireReaderLock();
                if (miConsumerRow.RowState == DataRowState.Deleted ||
                    miConsumerRow.RowState == DataRowState.Detached)
                {
                    continue;
                }
                try
                {
                    CreditCardRow[] ccRows = miConsumerRow.GetCreditCardRows_NoLockCheck();

                    if (ccRows.Length > 0)
                    {
                        foreach (CreditCardRow snCcRow in ccRows)
                        {
                            RowLockingWrapper <CreditCardRow> snCcRowWrappper = new RowLockingWrapper <CreditCardRow>(snCcRow, dataModelTransaction);

                            MatchInfo   ssnCcMi = this.cardMatcher.Validate(ccNum, snCcRowWrappper, dataModelTransaction);
                            MatchResult mr      = new MatchResult(consumerRowToFind.TypedRow, creditCardRowToFind.TypedRow, ssnCcMi, snMi, ssnLnMi);
                            //if(mr.Strength < 1M)
                            //{
                            if (ssnFnMi == null)
                            {
                                consumerRowToFind.AcquireReaderLock();
                                try
                                {
                                    ssnFnMi = this.firstNameMatcher.Validate(consumerRowToFind.Row[this.firstNameColumn], miConsumerRowWrapper, dataModelTransaction);
                                }
                                finally
                                {
                                    consumerRowToFind.ReleaseReaderLock();
                                }
                            }
                            mr.AddFirstNameMatchInfo(ssnFnMi);
                            //}

                            if (mr.Strength >= matchThreshold)
                            {
                                results.Add(mr);
                            }
                        }
                    }
                    else
                    {
                        MatchResult mr = new MatchResult(consumerRowToFind.TypedRow, creditCardRowToFind.TypedRow, null, snMi, ssnLnMi);

                        consumerRowToFind.AcquireReaderLock();
                        try
                        {
                            mr.AddFirstNameMatchInfo(this.firstNameMatcher.Validate(consumerRowToFind.Row[this.firstNameColumn], miConsumerRowWrapper, dataModelTransaction));
                        }
                        finally
                        {
                            consumerRowToFind.ReleaseReaderLock();
                        }

                        if (mr.Strength >= matchThreshold)
                        {
                            results.Add(mr);
                        }
                    }
                }
                finally
                {
                    miConsumerRowWrapper.ReleaseReaderLock();
                }
            }
        }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="firstNameMatchInfo"></param>
 public void AddFirstNameMatchInfo(MatchInfo firstNameMatchInfo)
 {
     this.firstNameMatchInfo = firstNameMatchInfo;
     this.ComputeStrength();
 }
Beispiel #3
0
        private void GetMatchResultsForCreditCard(RowLockingWrapper <CreditCardRow> creditCardRowToFind, RowLockingWrapper <ConsumerRow> consumerRowToFind, object ssnNum,
                                                  object lastName, List <MatchResult> results, IEnumerable <MatchInfo> ccMiList,
                                                  IDataModelTransaction dataModelTransaction, Decimal matchThreshold)
        {
            if (ccMiList == null)
            {
                return;
            }

            //!!!RM what is faster using the .Consumer row
            //or using the ConsumerRow Fuz Matcher
            foreach (MatchInfo ccMi in ccMiList)
            {
                ConsumerRow miConsumerRow;
                if (dataModelTransaction != null)
                {
                    ((CreditCardRow)ccMi.row).AcquireReaderLock(dataModelTransaction.TransactionId, ((CreditCardRow)ccMi.row).LockTimeout);
                }

                if (ccMi.row.RowState == DataRowState.Deleted ||
                    ccMi.row.RowState == DataRowState.Detached)
                {
                    if (dataModelTransaction != null)
                    {
                        ((CreditCardRow)ccMi.row).ReleaseReaderLock(dataModelTransaction.TransactionId);
                    }

                    continue;
                }
                try
                {
                    miConsumerRow = ((CreditCardRow)ccMi.row).ConsumerRow;
                }
                finally
                {
                    if (dataModelTransaction != null)
                    {
                        ((CreditCardRow)ccMi.row).ReleaseReaderLock(dataModelTransaction.TransactionId);
                    }
                }

                if (miConsumerRow == null)
                {
                    continue;
                }

                RowLockingWrapper <ConsumerRow> consumerRowWrapper = new RowLockingWrapper <ConsumerRow>(miConsumerRow, dataModelTransaction);

                consumerRowWrapper.AcquireReaderLock();
                if (consumerRowWrapper.Row.RowState == DataRowState.Deleted ||
                    consumerRowWrapper.Row.RowState == DataRowState.Detached)
                {
                    consumerRowWrapper.ReleaseReaderLock();
                    continue;
                }

                try
                {
                    MatchInfo ccSsnMi = socialMatcher.Validate(ssnNum, consumerRowWrapper, dataModelTransaction);
                    MatchInfo ccLnMi  = this.lastNameMatcher.Validate(lastName, consumerRowWrapper, dataModelTransaction);

                    MatchResult mr = new MatchResult(consumerRowToFind.TypedRow, creditCardRowToFind.TypedRow, ccMi, ccSsnMi, ccLnMi);
                    //if(mr.Strength < 1M)
                    //{
                    mr.AddFirstNameMatchInfo(this.firstNameMatcher.Validate(consumerRowToFind.Row[this.firstNameColumn], consumerRowWrapper, dataModelTransaction));
                    //}

                    if (mr.Strength >= matchThreshold)
                    {
                        results.Add(mr);
                    }
                }
                finally
                {
                    consumerRowWrapper.ReleaseReaderLock();
                }
            }
        }