/// <summary> /// Deletes those allowed errors whose context have changed. In the base implementation this means /// where any involved row has changed since the error creation. Additional context change situations /// such as a change in the quality condition can be detected by the sub-repository. /// </summary> /// <param name="qualityConditions">The quality conditions.</param> /// <param name="invalidateAllowedErrorsIfAnyInvolvedObjectChanged"> /// if set to <c>true</c> allowed errors are invalidated if any involved object changed.</param> /// <param name="invalidateAllowedErrorsIfQualityConditionWasUpdated"> /// if set to <c>true</c> allowed errors are invalidated if the quality condition was updated.</param> public void DeleteInvalidAllowedErrors( [NotNull] IEnumerable <QualityCondition> qualityConditions, bool invalidateAllowedErrorsIfAnyInvolvedObjectChanged, bool invalidateAllowedErrorsIfQualityConditionWasUpdated) { // TODO: consider using AllowedErrorList property, remove qualityConditions parameter Assert.ArgumentNotNull(qualityConditions, nameof(qualityConditions)); ICollection <QualityCondition> qualityConditionCollection = CollectionUtils.GetCollection(qualityConditions); var allowedErrors = new List <AllowedError>(GetAllowedErrors(qualityConditionCollection)); AllowedErrorUtils.InvalidateAllowedErrors( allowedErrors, qualityConditionCollection, _verificationContext, invalidateAllowedErrorsIfAnyInvolvedObjectChanged, invalidateAllowedErrorsIfQualityConditionWasUpdated); List <AllowedError> invalidErrors = allowedErrors.Where(error => error.Invalidated).ToList(); AllowedErrorUtils.DeleteAllowedErrors(invalidErrors); }
/// <summary> /// Ensures that the relevant allowed errors are cached in <see cref="AllowedErrorList"/> /// and invalidates those allowed errors that should be deleted, such as where involved /// objects do not exist any more. /// </summary> /// <param name="qualityConditions"></param> /// <param name="invalidateAllowedErrorsIfAnyInvolvedObjectChanged"></param> /// <param name="invalidateAllowedErrorsIfQualityConditionWasUpdated"></param> public void InvalidateAllowedErrors( [NotNull] IEnumerable <QualityCondition> qualityConditions, bool invalidateAllowedErrorsIfAnyInvolvedObjectChanged, bool invalidateAllowedErrorsIfQualityConditionWasUpdated) { AllowedErrorUtils.InvalidateAllowedErrors( AllowedErrorList, qualityConditions, _verificationContext, invalidateAllowedErrorsIfAnyInvolvedObjectChanged, invalidateAllowedErrorsIfQualityConditionWasUpdated); }