internal void Run(MeetingComparisonResult comparisonResult, ref Dictionary <GlobalObjectId, List <Attendee> > organizerRumsSent) { if (!this.SkipItem(ref organizerRumsSent)) { PrimaryConsistencyCheckChain primaryConsistencyCheckChain = ConsistencyCheckFactory.Instance.CreatePrimaryConsistencyCheckChain(this.context, comparisonResult); primaryConsistencyCheckChain.PerformChecks(this.context); if (primaryConsistencyCheckChain.ShouldTerminate) { if (RumFactory.Instance.Policy.RepairMode == CalendarRepairType.ValidateOnly && this.context.BaseItem.CalendarItemType == CalendarItemType.RecurringMaster) { RecurrenceBlobsConsistentCheck recurrenceBlobsConsistentCheck = new RecurrenceBlobsConsistentCheck(this.context); ConsistencyCheckResult consistencyCheckResult = recurrenceBlobsConsistentCheck.Run(); if (consistencyCheckResult.ShouldBeReported) { comparisonResult.AddCheckResult(consistencyCheckResult); } } } else { ConsistencyCheckChain <ConsistencyCheckResult> consistencyCheckChain = ConsistencyCheckFactory.Instance.CreateGeneralConsistencyCheckChain(this.context, comparisonResult, RumFactory.Instance.Policy.RepairMode == CalendarRepairType.ValidateOnly); consistencyCheckChain.PerformChecks(); } if (RumFactory.Instance.Policy.RepairMode == CalendarRepairType.RepairAndValidate && comparisonResult.RepairInfo.SendRums(this.context.BaseItem, ref organizerRumsSent)) { this.NumberOfSuccessfulRepairAttempts += 1L; } } }
private void FailCheck(ConsistencyCheckResult result, ExceptionInfo exceptionInfo, DifferencesBetweenBlobAndAttach difference) { result.Status = CheckStatusType.Failed; result.AddInconsistency(base.Context, PropertyInconsistency.CreateInstance(RoleType.Attendee, CalendarInconsistencyFlag.RecurringException, string.Format("Exc{0}", difference), exceptionInfo.OriginalStartTime, RecurrenceBlobsConsistentCheck.GetActualValueOfExceptionalProperty(exceptionInfo, difference), base.Context)); }