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(); } } }
/// <summary> /// /// </summary> /// <param name="firstNameMatchInfo"></param> public void AddFirstNameMatchInfo(MatchInfo firstNameMatchInfo) { this.firstNameMatchInfo = firstNameMatchInfo; this.ComputeStrength(); }
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(); } } }