Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingCalculationService.cs =================================================================== diff -u -rde4477561032a5d95d5e65e50b719724466648ed -r3d9b418d483c122040e11a7e074d666c64e9d7b5 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingCalculationService.cs (.../HydraRingCalculationService.cs) (revision de4477561032a5d95d5e65e50b719724466648ed) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Services/HydraRingCalculationService.cs (.../HydraRingCalculationService.cs) (revision 3d9b418d483c122040e11a7e074d666c64e9d7b5) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Collections.Generic; using System.Diagnostics; using System.IO; using Ringtoets.HydraRing.Calculation.Data; @@ -44,15 +45,17 @@ /// The to use while executing the calculation. /// The to use while executing the calculation. /// The input of the calculation to perform. + /// Parsers that will be invoked after the Hydra-Ring calculation has ran. /// A on a successful calculation, null otherwise. - public static TargetProbabilityCalculationOutput PerformCalculation(string hlcdDirectory, string ringId, - HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, - HydraRingUncertaintiesType uncertaintiesType, - TargetProbabilityCalculationInput targetProbabilityCalculationInput) + public static void PerformCalculation( + string hlcdDirectory, + string ringId, + HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, + HydraRingUncertaintiesType uncertaintiesType, + HydraRingCalculationInput targetProbabilityCalculationInput, + IEnumerable parsers) { var sectionId = targetProbabilityCalculationInput.Section.SectionId; - - // Create a working directory var workingDirectory = CreateWorkingDirectory(); var hydraRingInitializationService = new HydraRingInitializationService(targetProbabilityCalculationInput.FailureMechanismType, sectionId, hlcdDirectory, workingDirectory); @@ -64,48 +67,10 @@ PerformCalculation(workingDirectory, hydraRingInitializationService); - // Parse and return the output - var targetProbabilityCalculationParser = new TargetProbabilityCalculationParser(); - targetProbabilityCalculationParser.Parse(hydraRingInitializationService.OutputFilePath, targetProbabilityCalculationInput.Section.SectionId); - return targetProbabilityCalculationParser.Output; + ExecuteParsers(parsers, hydraRingInitializationService.TemporaryWorkingDirectory, targetProbabilityCalculationInput.Section.SectionId); } /// - /// This method performs a type I calculation via Hydra-Ring: - /// Given a set of random variables, compute the probability of failure. - /// - /// The directory of the HLCD file that should be used for performing the calculation. - /// The id of the ring to perform the calculation for. - /// The to use while executing the calculation. - /// The to use while executing the calculation. - /// The input of the calculation to perform. - /// A on a successful calculation, null otherwise. - public static ExceedanceProbabilityCalculationOutput PerformCalculation(string hlcdDirectory, string ringId, - HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, - HydraRingUncertaintiesType uncertaintiesType, - ExceedanceProbabilityCalculationInput exceedanceProbabilityCalculationInput) - { - var sectionId = exceedanceProbabilityCalculationInput.Section.SectionId; - - // Create a working directory - var workingDirectory = CreateWorkingDirectory(); - - // Write the initialization script - var hydraRingInitializationService = new HydraRingInitializationService(exceedanceProbabilityCalculationInput.FailureMechanismType, sectionId, hlcdDirectory, workingDirectory); - hydraRingInitializationService.WriteInitializationScript(); - - var hydraRingConfigurationService = new HydraRingConfigurationService(ringId, timeIntegrationSchemeType, uncertaintiesType); - hydraRingConfigurationService.AddHydraRingCalculationInput(exceedanceProbabilityCalculationInput); - hydraRingConfigurationService.WriteDataBaseCreationScript(hydraRingInitializationService.DatabaseCreationScriptFilePath); - - PerformCalculation(workingDirectory, hydraRingInitializationService); - - var exceedanceProbabilityCalculationParser = new ExceedanceProbabilityCalculationParser(); - exceedanceProbabilityCalculationParser.Parse(hydraRingInitializationService.OutputDataBasePath, exceedanceProbabilityCalculationInput.Section.SectionId); - return exceedanceProbabilityCalculationParser.Output; - } - - /// /// Cancels any currently running Hydra-Ring calculation. /// public static void CancelRunningCalculation() @@ -116,6 +81,14 @@ } } + private static void ExecuteParsers(IEnumerable parsers, string workingDirectory, int sectionId) + { + foreach (var parser in parsers) + { + parser.Parse(workingDirectory, sectionId); + } + } + private static void PerformCalculation(string workingDirectory, HydraRingInitializationService hydraRingInitializationService) { hydraRingProcess = HydraRingProcessFactory.Create(