Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs =================================================================== diff -u -r95ef54e2348b92a2b9c0c7d0737e2508f8fc3ac4 -r066bbc72d2bcb35de2cdd943e35875463deafb9e --- Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 95ef54e2348b92a2b9c0c7d0737e2508f8fc3ac4) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 066bbc72d2bcb35de2cdd943e35875463deafb9e) @@ -104,29 +104,42 @@ changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, sourceAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm)); + // Also merge wave heights!!! ObservableList sourceProbabilities = sourceAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities; + HydraulicBoundaryLocationCalculationsForTargetProbability[] probabilitiesToMerge = DetermineProbabilitiesToMerge(targetAssessmentSection, sourceAssessmentSection, changedObjects); + + IEnumerable targetProbabilities = sourceProbabilities.Except(probabilitiesToMerge); + + MergeUniqueProbabilities(targetAssessmentSection, targetProbabilities); + + log.Info(changedObjects.Any() + ? Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged + : Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_not_merged); + + return changedObjects; + } + + private static HydraulicBoundaryLocationCalculationsForTargetProbability[] DetermineProbabilitiesToMerge(IAssessmentSection targetAssessmentSection, IAssessmentSection sourceAssessmentSection, List changedObjects) + { HydraulicBoundaryLocationCalculationsForTargetProbability[] probabilitiesToMerge = sourceAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities .Where(sp => targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities .Select(c => c.TargetProbability) .Contains(sp.TargetProbability)).ToArray(); + MergeProbabilities(targetAssessmentSection, changedObjects, probabilitiesToMerge); + + return probabilitiesToMerge; + } + + private static void MergeProbabilities(IAssessmentSection targetAssessmentSection, List changedObjects, HydraulicBoundaryLocationCalculationsForTargetProbability[] probabilitiesToMerge) + { foreach (HydraulicBoundaryLocationCalculationsForTargetProbability sourceProbability in probabilitiesToMerge) { HydraulicBoundaryLocationCalculationsForTargetProbability targetProbability = targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.First(c => c.TargetProbability.Equals(sourceProbability.TargetProbability)); changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetProbability.HydraulicBoundaryLocationCalculations, sourceProbability.HydraulicBoundaryLocationCalculations)); } - - IEnumerable targetProbabilities = sourceProbabilities.Except(probabilitiesToMerge); - - MergeUniqueProbabilities(targetAssessmentSection, targetProbabilities); - - log.Info(changedObjects.Any() - ? Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged - : Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_not_merged); - - return changedObjects; } private static void MergeUniqueProbabilities(IAssessmentSection targetAssessmentSection, IEnumerable targetProbabilities)