Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs =================================================================== diff -u -rab5fe3ae7bb47d1648c200bc00f20e52512b15cb -r26c61097587b8bd3d7070c1458cacd03147e4b7c --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision ab5fe3ae7bb47d1648c200bc00f20e52512b15cb) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Plugin/GrassCoverErosionOutwardsPlugin.cs (.../GrassCoverErosionOutwardsPlugin.cs) (revision 26c61097587b8bd3d7070c1458cacd03147e4b7c) @@ -109,14 +109,18 @@ AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism }; - yield return new ViewInfo, GrassCoverErosionOutwardsDesignWaterLevelLocationsView> + yield return new ViewInfo< + GrassCoverErosionOutwardsDesignWaterLevelLocationsContext, + IEnumerable, + GrassCoverErosionOutwardsDesignWaterLevelLocationsView> { GetViewName = (v, o) => RingtoetsGrassCoverErosionOutwardsFormsResources.GrassCoverErosionOutwardsWaterLevelLocations_DisplayName, GetViewData = context => context.WrappedData, Image = RingtoetsCommonFormsResources.GenericInputOutputIcon, AfterCreate = (view, context) => { view.AssessmentSection = context.AssessmentSection; + view.FailureMechanism = context.FailureMechanism; view.ApplicationSelection = Gui; view.CalculationGuiService = hydraulicBoundaryLocationCalculationGuiService; }, @@ -135,6 +139,7 @@ AfterCreate = (view, context) => { view.AssessmentSection = context.AssessmentSection; + view.FailureMechanism = context.FailureMechanism; view.ApplicationSelection = Gui; view.CalculationGuiService = hydraulicBoundaryLocationCalculationGuiService; } @@ -438,10 +443,11 @@ } ObservableList locations = hydraulicBoundariesGroupContext.WrappedData; + var failureMechanism = hydraulicBoundariesGroupContext.FailureMechanism; return new object[] { - new GrassCoverErosionOutwardsDesignWaterLevelLocationsContext(locations, assessmentSection), - new GrassCoverErosionOutwardsWaveHeightLocationsContext(locations, assessmentSection), + new GrassCoverErosionOutwardsDesignWaterLevelLocationsContext(locations, assessmentSection, failureMechanism), + new GrassCoverErosionOutwardsWaveHeightLocationsContext(locations, assessmentSection, failureMechanism), new GrassCoverErosionOutwardsWaveConditionsCalculationGroupContext(hydraulicBoundariesGroupContext.FailureMechanism.WaveConditionsCalculationGroup, hydraulicBoundariesGroupContext.FailureMechanism, assessmentSection) @@ -468,27 +474,23 @@ } IAssessmentSection assessmentSection = nodeData.AssessmentSection; - GrassCoverErosionOutwardsFailureMechanism failureMechanism = assessmentSection.GetFailureMechanisms().OfType().FirstOrDefault(); - if (failureMechanism == null) - { - return; - } - if (!(failureMechanism.Contribution > 0)) - { - log.Info(Resources.GrassCoverErosionOutwardsPlugin_CalculateGrassCoverErosionOutwardsHydraulicBoundaryLocations_Cannot_calculate_when_Contribution_is_zero); - return; - } + GrassCoverErosionOutwardsFailureMechanism failureMechanism = nodeData.FailureMechanism; - bool successfulCalculation = hydraulicBoundaryLocationCalculationGuiService.CalculateDesignWaterLevels( - assessmentSection.HydraulicBoundaryDatabase.FilePath, - nodeData.WrappedData, - assessmentSection.Id, - failureMechanism.CalculationBeta(assessmentSection), - new GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider()); + var calculationBeta = GetModifiedBeta(failureMechanism, assessmentSection); - if (successfulCalculation) + if (!double.IsNaN(calculationBeta)) { - nodeData.WrappedData.NotifyObservers(); + bool successfulCalculation = hydraulicBoundaryLocationCalculationGuiService.CalculateDesignWaterLevels( + assessmentSection.HydraulicBoundaryDatabase.FilePath, + nodeData.WrappedData, + assessmentSection.Id, + calculationBeta, + new GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider()); + + if (successfulCalculation) + { + nodeData.WrappedData.NotifyObservers(); + } } }); @@ -531,22 +533,22 @@ { return; } - if (!(failureMechanism.Contribution > 0)) - { - log.Info(Resources.GrassCoverErosionOutwardsPlugin_CalculateGrassCoverErosionOutwardsHydraulicBoundaryLocations_Cannot_calculate_when_Contribution_is_zero); - return; - } - bool successfulCalculation = hydraulicBoundaryLocationCalculationGuiService.CalculateWaveHeights( - assessmentSection.HydraulicBoundaryDatabase.FilePath, - nodeData.WrappedData, - assessmentSection.Id, - failureMechanism.CalculationBeta(assessmentSection), - new GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider()); + var calculationBeta = GetModifiedBeta(failureMechanism, assessmentSection); - if (successfulCalculation) + if (!double.IsNaN(calculationBeta)) { - nodeData.WrappedData.NotifyObservers(); + bool successfulCalculation = hydraulicBoundaryLocationCalculationGuiService.CalculateWaveHeights( + assessmentSection.HydraulicBoundaryDatabase.FilePath, + nodeData.WrappedData, + assessmentSection.Id, + calculationBeta, + new GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider()); + + if (successfulCalculation) + { + nodeData.WrappedData.NotifyObservers(); + } } }); @@ -858,6 +860,20 @@ #endregion + private static double GetModifiedBeta(GrassCoverErosionOutwardsFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + { + var calculationBeta = double.NaN; + try + { + calculationBeta = failureMechanism.CalculationBeta(assessmentSection); + } + catch (ArgumentException e) + { + log.ErrorFormat(e.Message); + } + return calculationBeta; + } + #endregion } } \ No newline at end of file