Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs =================================================================== diff -u -r48b447734910e47479811a7b831fafb7316e6ad3 -r900b61c96d2996792f400370d551ea3299afe993 --- Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 48b447734910e47479811a7b831fafb7316e6ad3) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 900b61c96d2996792f400370d551ea3299afe993) @@ -92,39 +92,35 @@ changedObjects.AddRange(MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForLowerLimitNorm, sourceAssessmentSection.WaterLevelCalculationsForLowerLimitNorm)); - ObservableList sourceWaterLevelProbabilities = sourceAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities; + MergeUserDefinedHydraulicBoundaryLocations(targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities, + sourceAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities, + changedObjects, + targetAssessmentSection.HydraulicBoundaryDatabase.Locations); + MergeUserDefinedHydraulicBoundaryLocations(targetAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities, + sourceAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities, + changedObjects, + targetAssessmentSection.HydraulicBoundaryDatabase.Locations); - HydraulicBoundaryLocationCalculationsForTargetProbability[] waterLevelProbabilitiesToMerge = sourceAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities - .Where(stp => targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities - .Select(c => c.TargetProbability) - .Contains(stp.TargetProbability)).ToArray(); - - MergeProbabilities(targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities, changedObjects, waterLevelProbabilitiesToMerge); - - IEnumerable uniqueWaterLevelSourceProbabilities = sourceWaterLevelProbabilities.Except(waterLevelProbabilitiesToMerge); - - MergeUniqueProbabilities(targetAssessmentSection, targetAssessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities, uniqueWaterLevelSourceProbabilities); - - ObservableList sourceWaveHeightProbabilities = sourceAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities; - - HydraulicBoundaryLocationCalculationsForTargetProbability[] waveHeightProbabilitiesToMerge = sourceAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities - .Where(stp => targetAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities - .Select(c => c.TargetProbability) - .Contains(stp.TargetProbability)).ToArray(); - - MergeProbabilities(targetAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities, changedObjects, waveHeightProbabilitiesToMerge); - - IEnumerable uniqueWaveHeightSourceProbabilities = sourceWaveHeightProbabilities.Except(waveHeightProbabilitiesToMerge); - - MergeUniqueProbabilities(targetAssessmentSection, targetAssessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities, uniqueWaveHeightSourceProbabilities); - log.Info(changedObjects.Any() ? Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged : Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_not_merged); return changedObjects; } + private static void MergeUserDefinedHydraulicBoundaryLocations(ObservableList targetWaterLevelCalculationsForUserDefinedTargetProbabilities, + ObservableList sourceWaterLevelCalculationsForUserDefinedTargetProbabilities, + List changedObjects, ObservableList hydraulicBoundaryLocations) + { + HydraulicBoundaryLocationCalculationsForTargetProbability[] waterLevelProbabilitiesToMerge = sourceWaterLevelCalculationsForUserDefinedTargetProbabilities.Where(stp => targetWaterLevelCalculationsForUserDefinedTargetProbabilities + .Select(c => c.TargetProbability) + .Contains(stp.TargetProbability)).ToArray(); + + MergeProbabilities(targetWaterLevelCalculationsForUserDefinedTargetProbabilities, changedObjects, waterLevelProbabilitiesToMerge); + IEnumerable uniqueWaterLevelSourceProbabilities = sourceWaterLevelCalculationsForUserDefinedTargetProbabilities.Except(waterLevelProbabilitiesToMerge); + MergeUniqueProbabilities(targetWaterLevelCalculationsForUserDefinedTargetProbabilities, uniqueWaterLevelSourceProbabilities, hydraulicBoundaryLocations); + } + private static void MergeProbabilities(IEnumerable userDefinedTargetProbabilities, List changedObjects, HydraulicBoundaryLocationCalculationsForTargetProbability[] probabilitiesToMerge) { foreach (HydraulicBoundaryLocationCalculationsForTargetProbability sourceProbability in probabilitiesToMerge) @@ -135,7 +131,7 @@ } } - private static void MergeUniqueProbabilities(IAssessmentSection targetAssessmentSection, ObservableList userDefinedTargetProbabilities, IEnumerable targetProbabilities) + private static void MergeUniqueProbabilities(ObservableList userDefinedTargetProbabilities, IEnumerable targetProbabilities, ObservableList hydraulicBoundaryLocations) { foreach (HydraulicBoundaryLocationCalculationsForTargetProbability targetProbability in targetProbabilities) { @@ -145,7 +141,7 @@ }; newTargetProbability.HydraulicBoundaryLocationCalculations.AddRange(targetProbability.HydraulicBoundaryLocationCalculations - .Select(calculation => new HydraulicBoundaryLocationCalculation(GetHydraulicBoundaryLocation(calculation.HydraulicBoundaryLocation, targetAssessmentSection.HydraulicBoundaryDatabase.Locations))) + .Select(calculation => new HydraulicBoundaryLocationCalculation(GetHydraulicBoundaryLocation(calculation.HydraulicBoundaryLocation, hydraulicBoundaryLocations))) .ToArray()); userDefinedTargetProbabilities.Add(newTargetProbability);