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(