Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -r84d01e19f0ef74acb036b1e821b9095b75dee554 -rae2027c7593045adc8b1a9cc66bc7978262c5e1e --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 84d01e19f0ef74acb036b1e821b9095b75dee554) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision ae2027c7593045adc8b1a9cc66bc7978262c5e1e) @@ -70,43 +70,50 @@ affectedObjects.Add(assessmentSection); - var failureMechanismsToClearOutputFor = new List(); + IObservable[] affectedCalculations = + RingtoetsDataSynchronizationService.ClearFailureMechanismCalculationOutputs( + GetFailureMechanismsToUpdate(assessmentSection, oldFailureMechanismContributions)) + .ToArray(); - foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) - { - foreach (KeyValuePair oldFailureMechanismContribution in oldFailureMechanismContributions) - { - if (failureMechanism is StabilityStoneCoverFailureMechanism || failureMechanism is WaveImpactAsphaltCoverFailureMechanism) - { - continue; - } - - if (failureMechanism is DuneErosionFailureMechanism - || oldFailureMechanismContribution.Key.Equals(failureMechanism) - && Math.Abs(oldFailureMechanismContribution.Value) > 1e-6 - && Math.Abs(oldFailureMechanismContribution.Value - failureMechanism.Contribution) > 1e-6) - { - failureMechanismsToClearOutputFor.Add(failureMechanism); - break; - } - } - } - - IObservable[] affectedCalculations = RingtoetsDataSynchronizationService.ClearFailureMechanismCalculationOutputs(failureMechanismsToClearOutputFor).ToArray(); - if (affectedCalculations.Length > 0) { affectedObjects.AddRange(affectedCalculations); log.InfoFormat(Resources.ChangeHandler_Results_of_NumberOfCalculations_0_calculations_cleared, affectedObjects.OfType().Count()); } - - affectedObjects.AddRange(ClearHydraulicBoundaryLocationOutput(failureMechanismsToClearOutputFor)); - + + affectedObjects.AddRange(ClearHydraulicBoundaryLocationOutput(GetFailureMechanismsToUpdate(assessmentSection, oldFailureMechanismContributions))); } return affectedObjects; } + private static IFailureMechanism[] GetFailureMechanismsToUpdate(IAssessmentSection assessmentSection, + Dictionary oldFailureMechanismContributions) + { + var failureMechanismsToClearOutputFor = new List(); + foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) + { + foreach (KeyValuePair oldFailureMechanismContribution in oldFailureMechanismContributions) + { + if (failureMechanism is StabilityStoneCoverFailureMechanism || failureMechanism is WaveImpactAsphaltCoverFailureMechanism) + { + continue; + } + + if (failureMechanism is DuneErosionFailureMechanism + || oldFailureMechanismContribution.Key.Equals(failureMechanism) + && Math.Abs(oldFailureMechanismContribution.Value) > 1e-6 + && Math.Abs(oldFailureMechanismContribution.Value - failureMechanism.Contribution) > 1e-6) + { + failureMechanismsToClearOutputFor.Add(failureMechanism); + break; + } + } + } + + return failureMechanismsToClearOutputFor.ToArray(); + } + private IEnumerable ClearHydraulicBoundaryLocationOutput(IEnumerable failureMechanismsToClearOutputFor) { IEnumerable affectedObjects =