Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs =================================================================== diff -u -r840f6ddca0edcb0e0effd1567df7291367d339cb -r8536b5bd3d91298dc866db708d7c75ae10fc84de --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 840f6ddca0edcb0e0effd1567df7291367d339cb) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 8536b5bd3d91298dc866db708d7c75ae10fc84de) @@ -24,6 +24,7 @@ using System.Linq; using Core.Common.Base; using Core.Common.Gui.Commands; +using Core.Common.Util.Extensions; using log4net; using Ringtoets.ClosingStructures.Data; using Ringtoets.Common.Data.AssessmentSection; @@ -92,47 +93,58 @@ } BeforeMerge(targetAssessmentSection); - MergeHydraulicBoundaryLocations(targetAssessmentSection, sourceAssessmentSection); + + var changedObjects = new List + { + targetAssessmentSection + }; + + changedObjects.AddRange(MergeHydraulicBoundaryLocations(targetAssessmentSection, sourceAssessmentSection)); MergeFailureMechanisms(targetAssessmentSection, failureMechanismsToMerge); - AfterMerge(targetAssessmentSection); + + AfterMerge(changedObjects); } private void BeforeMerge(AssessmentSection assessmentSection) { viewCommands.RemoveAllViewsForItem(assessmentSection); } - private static void AfterMerge(AssessmentSection targetAssessmentSection) + private static void AfterMerge(IEnumerable changedObjects) { - targetAssessmentSection.NotifyObservers(); + changedObjects.ForEachElementDo(co => co.NotifyObservers()); } #region HydraulicBoundaryLocationCalculations - private static void MergeHydraulicBoundaryLocations(IAssessmentSection targetAssessmentSection, IAssessmentSection sourceAssessmentSection) + private static IEnumerable MergeHydraulicBoundaryLocations(IAssessmentSection targetAssessmentSection, IAssessmentSection sourceAssessmentSection) { - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm, - sourceAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForSignalingNorm, - sourceAssessmentSection.WaterLevelCalculationsForSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForLowerLimitNorm, - sourceAssessmentSection.WaterLevelCalculationsForLowerLimitNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm, - sourceAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm); + var changedObjects = new List(); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm, - sourceAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForSignalingNorm, - sourceAssessmentSection.WaveHeightCalculationsForSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForLowerLimitNorm, - sourceAssessmentSection.WaveHeightCalculationsForLowerLimitNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, - sourceAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm, + sourceAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForSignalingNorm, + sourceAssessmentSection.WaterLevelCalculationsForSignalingNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForLowerLimitNorm, + sourceAssessmentSection.WaterLevelCalculationsForLowerLimitNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm, + sourceAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm, + sourceAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForSignalingNorm, + sourceAssessmentSection.WaveHeightCalculationsForSignalingNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForLowerLimitNorm, + sourceAssessmentSection.WaveHeightCalculationsForLowerLimitNorm)); + changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, + sourceAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm)); + log.Info(Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged); + + return changedObjects; } - private static void MergeHydraulicBoundaryLocationCalculations(IEnumerable targetCalculations, + private static IEnumerable MergeHydraulicBoundaryLocationCalculations(IEnumerable targetCalculations, IEnumerable sourceCalculations) { for (var i = 0; i < targetCalculations.Count(); i++) @@ -144,6 +156,7 @@ { targetCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = sourceCalculation.InputParameters.ShouldIllustrationPointsBeCalculated; targetCalculation.Output = sourceCalculation.Output; + yield return targetCalculation; } } }