Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs =================================================================== diff -u -rd843e2dbc351616dc406fb595edf6ae257ebe274 -rc3cdf6d9fadf4ad1c50d1175979c94e3e9733ed6 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs (.../DuneErosionBoundaryCalculationService.cs) (revision d843e2dbc351616dc406fb595edf6ae257ebe274) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs (.../DuneErosionBoundaryCalculationService.cs) (revision c3cdf6d9fadf4ad1c50d1175979c94e3e9733ed6) @@ -25,9 +25,11 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Service; using Ringtoets.DuneErosion.Data; +using Ringtoets.DuneErosion.Service.Properties; using Ringtoets.HydraRing.Calculation.Calculator; using Ringtoets.HydraRing.Calculation.Calculator.Factory; using Ringtoets.HydraRing.Calculation.Data.Input.Hydraulics; +using Ringtoets.HydraRing.Calculation.Exceptions; namespace Ringtoets.DuneErosion.Service { @@ -54,19 +56,59 @@ CalculationServiceHelper.LogCalculationBeginTime(calculationName); var exceptionThrown = false; + var inputValid = false; try { DunesBoundaryConditionsCalculationInput calculationInput = CreateInput(duneLocation, failureMechanism, assessmentSection, hydraulicBoundaryDatabaseFilePath); + inputValid = true; calculator.Calculate(calculationInput); if (string.IsNullOrEmpty(calculator.LastErrorFileContent)) { - } } + catch (HydraRingFileParserException) + { + if (!canceled) + { + var lastErrorContent = calculator.LastErrorFileContent; + if (string.IsNullOrEmpty(lastErrorContent)) + { + log.ErrorFormat(Resources.DuneErosionBoundaryCalculationService_Calculate_Error_in_dune_erosion_0_calculation_no_error_report, + calculationName); + } + else + { + log.ErrorFormat(Resources.DuneErosionBoundaryCalculationService_Calculate_Error_in_dune_erosion_0_calculation_click_details_for_last_error_report_1, + calculationName, lastErrorContent); + } + + exceptionThrown = true; + throw; + } + } finally { + var lastErrorFileContent = calculator.LastErrorFileContent; + bool errorOccurred = CalculationServiceHelper.ErrorOccurred(canceled, exceptionThrown, lastErrorFileContent); + if (errorOccurred) + { + log.ErrorFormat(Resources.DuneErosionBoundaryCalculationService_Calculate_Error_in_dune_erosion_0_calculation_click_details_for_last_error_report_1, + calculationName, lastErrorFileContent); + } + + if (inputValid) + { + log.InfoFormat(Resources.DuneErosionBoundaryCalculationService_Calculate_Calculation_temporary_directory_can_be_found_on_location_0, calculator.OutputDirectory); + } + CalculationServiceHelper.LogCalculationEndTime(calculationName); + + if (errorOccurred) + { + throw new HydraRingCalculationException(lastErrorFileContent); + } + } }