Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/DesignWaterLevelCalculationService.cs =================================================================== diff -u -re88fa1dfcf62085f7fabc453b73dbc8ac3ff9223 -r3d9b418d483c122040e11a7e074d666c64e9d7b5 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision e88fa1dfcf62085f7fabc453b73dbc8ac3ff9223) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision 3d9b418d483c122040e11a7e074d666c64e9d7b5) @@ -20,11 +20,13 @@ // All rights reserved. using System.IO; +using log4net; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Service; using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Input.Hydraulics; using Ringtoets.HydraRing.Calculation.Data.Output; +using Ringtoets.HydraRing.Calculation.Parsers; using Ringtoets.HydraRing.Calculation.Services; using Ringtoets.HydraRing.Data; using Ringtoets.HydraRing.IO; @@ -38,8 +40,10 @@ /// /// Service that provides methods for performing Hydra-Ring calculations for design water level. /// - internal static class DesignWaterLevelCalculationService + internal static class DesignWaterLevelCalculationService { + private static readonly ILog log = LogManager.GetLogger(typeof(DesignWaterLevelCalculationService)); + /// /// Performs validation over the values on the given . Error information is logged during /// the execution of the operation. @@ -79,12 +83,34 @@ { var hlcdDirectory = Path.GetDirectoryName(hydraulicBoundaryDatabase.FilePath); var input = CreateInput(assessmentSection, hydraulicBoundaryLocation); + var targetProbabilityCalculationParser = new TargetProbabilityCalculationParser(); - return CalculationServiceHelper.PerformCalculation(hydraulicBoundaryLocation.Id.ToString(), - () => HydraRingCalculationService.PerformCalculation(hlcdDirectory, ringId, HydraRingTimeIntegrationSchemeType.FerryBorgesCastanheta, HydraRingUncertaintiesType.All, input), - Resources.DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calculation); + CalculationServiceHelper.PerformCalculation( + hydraulicBoundaryLocation.Id.ToString(), + () => + { + HydraRingCalculationService.PerformCalculation( + hlcdDirectory, + ringId, + HydraRingTimeIntegrationSchemeType.FerryBorgesCastanheta, + HydraRingUncertaintiesType.All, + input, + new[] { targetProbabilityCalculationParser }); + + VerifyOutput(targetProbabilityCalculationParser.Output, hydraulicBoundaryLocation.Id.ToString()); + }); + + return targetProbabilityCalculationParser.Output; } + private static void VerifyOutput(TargetProbabilityCalculationOutput output, string name) + { + if (output == null) + { + log.ErrorFormat(Resources.DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calculation, name); + } + } + private static AssessmentLevelCalculationInput CreateInput(IAssessmentSection assessmentSection, HydraulicBoundaryLocation hydraulicBoundaryLocation) { return new AssessmentLevelCalculationInput(1, hydraulicBoundaryLocation.Id, assessmentSection.FailureMechanismContribution.Norm);