Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs =================================================================== diff -u -r5f23b2d617e62e09cfdeb7063ef137dbebdf89c4 -r7b95be6337f556bb904b20d02536b34d77cd0bc2 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 5f23b2d617e62e09cfdeb7063ef137dbebdf89c4) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 7b95be6337f556bb904b20d02536b34d77cd0bc2) @@ -90,6 +90,76 @@ AfterMerge(targetAssessmentSection); } + private void BeforeMerge(AssessmentSection assessmentSection) + { + viewCommands.RemoveAllViewsForItem(assessmentSection); + } + + private static void AfterMerge(AssessmentSection targetAssessmentSection) + { + targetAssessmentSection.NotifyObservers(); + } + + #region HydraulicBoundaryLocationCalculations + + private static void MergeHydraulicBoundaryLocations(AssessmentSection targetAssessmentSection, AssessmentSection sourceAssessmentSection) + { + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm, + sourceAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForSignalingNorm, + sourceAssessmentSection.WaterLevelCalculationsForSignalingNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForLowerLimitNorm, + sourceAssessmentSection.WaterLevelCalculationsForLowerLimitNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm, + sourceAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm); + + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm, + sourceAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForSignalingNorm, + sourceAssessmentSection.WaveHeightCalculationsForSignalingNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForLowerLimitNorm, + sourceAssessmentSection.WaveHeightCalculationsForLowerLimitNorm); + MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, + sourceAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm); + + log.Info(Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged); + } + + private static void MergeHydraulicBoundaryLocationCalculations(IEnumerable targetCalculations, + IEnumerable sourceCalculations) + { + for (var i = 0; i < targetCalculations.Count(); i++) + { + HydraulicBoundaryLocationCalculation targetCalculation = targetCalculations.ElementAt(i); + HydraulicBoundaryLocationCalculation sourceCalculation = sourceCalculations.ElementAt(i); + + if (ShouldMerge(targetCalculation, sourceCalculation)) + { + targetCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = sourceCalculation.InputParameters.ShouldIllustrationPointsBeCalculated; + targetCalculation.Output = sourceCalculation.Output; + } + } + } + + private static bool ShouldMerge(HydraulicBoundaryLocationCalculation targetCalculation, HydraulicBoundaryLocationCalculation sourceCalculation) + { + bool targetCalculationHasOutput = targetCalculation.HasOutput; + bool sourceCalculationHasOutput = sourceCalculation.HasOutput; + + if (!targetCalculationHasOutput && !sourceCalculationHasOutput + || targetCalculationHasOutput && !sourceCalculationHasOutput + || targetCalculationHasOutput && targetCalculation.Output.HasGeneralResult && !sourceCalculation.Output.HasGeneralResult) + { + return false; + } + + return true; + } + + #endregion + + #region FailureMechanisms + private void MergeFailureMechanisms(AssessmentSection targetAssessmentSection, IEnumerable failureMechanismsToMerge) { foreach (IFailureMechanism failureMechanism in failureMechanismsToMerge) @@ -205,8 +275,8 @@ } } - private bool TryMergeFailureMechanism(AssessmentSection targetAssessmentSection, IFailureMechanism failureMechanismToMerge, - Action mergeFailureMechanismAction) + private static bool TryMergeFailureMechanism(AssessmentSection targetAssessmentSection, IFailureMechanism failureMechanismToMerge, + Action mergeFailureMechanismAction) where TFailureMechanism : class, IFailureMechanism { var failureMechanism = failureMechanismToMerge as TFailureMechanism; @@ -220,68 +290,6 @@ return false; } - private void BeforeMerge(AssessmentSection assessmentSection) - { - viewCommands.RemoveAllViewsForItem(assessmentSection); - } - - private static void AfterMerge(AssessmentSection targetAssessmentSection) - { - targetAssessmentSection.NotifyObservers(); - } - - private static void MergeHydraulicBoundaryLocations(AssessmentSection targetAssessmentSection, AssessmentSection sourceAssessmentSection) - { - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm, - sourceAssessmentSection.WaterLevelCalculationsForFactorizedSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForSignalingNorm, - sourceAssessmentSection.WaterLevelCalculationsForSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForLowerLimitNorm, - sourceAssessmentSection.WaterLevelCalculationsForLowerLimitNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm, - sourceAssessmentSection.WaterLevelCalculationsForFactorizedLowerLimitNorm); - - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm, - sourceAssessmentSection.WaveHeightCalculationsForFactorizedSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForSignalingNorm, - sourceAssessmentSection.WaveHeightCalculationsForSignalingNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForLowerLimitNorm, - sourceAssessmentSection.WaveHeightCalculationsForLowerLimitNorm); - MergeHydraulicBoundaryLocationCalculations(targetAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm, - sourceAssessmentSection.WaveHeightCalculationsForFactorizedLowerLimitNorm); - - log.Info(Resources.AssessmentSectionMergeHandler_MergeHydraulicBoundaryLocations_HydraulicBoundaryLocations_merged); - } - - private static void MergeHydraulicBoundaryLocationCalculations(IEnumerable targetCalculations, - IEnumerable sourceCalculations) - { - for (var i = 0; i < targetCalculations.Count(); i++) - { - HydraulicBoundaryLocationCalculation targetCalculation = targetCalculations.ElementAt(i); - HydraulicBoundaryLocationCalculation sourceCalculation = sourceCalculations.ElementAt(i); - - if (ShouldMerge(targetCalculation, sourceCalculation)) - { - targetCalculation.InputParameters.ShouldIllustrationPointsBeCalculated = sourceCalculation.InputParameters.ShouldIllustrationPointsBeCalculated; - targetCalculation.Output = sourceCalculation.Output; - } - } - } - - private static bool ShouldMerge(HydraulicBoundaryLocationCalculation targetCalculation, HydraulicBoundaryLocationCalculation sourceCalculation) - { - bool targetCalculationHasOutput = targetCalculation.HasOutput; - bool sourceCalculationHasOutput = sourceCalculation.HasOutput; - - if (!targetCalculationHasOutput && !sourceCalculationHasOutput - || targetCalculationHasOutput && !sourceCalculationHasOutput - || targetCalculationHasOutput && targetCalculation.Output.HasGeneralResult && !sourceCalculation.Output.HasGeneralResult) - { - return false; - } - - return true; - } + #endregion } } \ No newline at end of file