Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationActivity.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationActivity.cs (.../ClosingStructuresCalculationActivity.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationActivity.cs (.../ClosingStructuresCalculationActivity.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -22,9 +22,7 @@ using System; using Core.Common.Base.Service; using Ringtoets.ClosingStructures.Data; -using Ringtoets.ClosingStructures.Utils; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.HydraRing.Calculation.Activities; @@ -44,7 +42,7 @@ /// /// Creates a new instance of . /// - /// The height structures data used for the calculation. + /// The closing structures data used for the calculation. /// The filepath of the HLCD file that should be used for performing the calculation. /// The failure mechanism the calculation belongs to. /// The assessment section the calculation belongs to. @@ -90,14 +88,9 @@ { ClosingStructuresDataSynchronizationService.ClearCalculationOutput(calculation); - FailureMechanismSection failureMechanismSection = - ClosingStructuresHelper.FailureMechanismSectionForCalculation(failureMechanism.Sections, calculation); - calculationService.Calculate(calculation, assessmentSection, - failureMechanismSection, - failureMechanism.GeneralInput, - failureMechanism.Contribution, + failureMechanism, hlcdFilepath); } Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -26,6 +26,7 @@ using log4net; using Ringtoets.ClosingStructures.Data; using Ringtoets.ClosingStructures.Service.Properties; +using Ringtoets.ClosingStructures.Utils; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; @@ -57,37 +58,25 @@ /// /// The that holds all the information required to perform the calculation. /// The that holds information about the norm used in the calculation. - /// The to create input with. - /// The to create the input with for the calculation. - /// The amount of contribution for this failure mechanism in the assessment section. + /// The that holds the information about the contribution + /// and the general inputs used in the calculation. /// The filepath of the HLCD file that should be used for performing the calculation. /// Thrown when is an invalid - /// + /// . public void Calculate(StructuresCalculation calculation, IAssessmentSection assessmentSection, - FailureMechanismSection failureMechanismSection, - GeneralClosingStructuresInput generalInput, - double failureMechanismContribution, + ClosingStructuresFailureMechanism failureMechanism, string hlcdFilePath) { var calculationName = calculation.Name; - StructuresClosureCalculationInput input; - switch (calculation.InputParameters.InflowModelType) - { - case ClosingStructureInflowModelType.VerticalWall: - input = CreateClosureVerticalWallCalculationInput(calculation, failureMechanismSection, generalInput); - break; - case ClosingStructureInflowModelType.LowSill: - input = CreateLowSillCalculationInput(calculation, failureMechanismSection, generalInput); - break; - case ClosingStructureInflowModelType.FloodedCulvert: - input = CreateFloodedCulvertCalculationInput(calculation, failureMechanismSection, generalInput); - break; - default: - throw new NotSupportedException("ClosingStructureInflowModelType"); - } + FailureMechanismSection failureMechanismSection = ClosingStructuresHelper.FailureMechanismSectionForCalculation(failureMechanism.Sections, + calculation); + StructuresClosureCalculationInput input = CreateStructuresClosureCalculationInput(calculation, + failureMechanism, + failureMechanismSection); + string hlcdDirectory = Path.GetDirectoryName(hlcdFilePath); calculator = HydraRingCalculatorFactory.Instance.CreateStructuresClosureCalculator(hlcdDirectory, assessmentSection.Id); @@ -100,8 +89,8 @@ if (!canceled) { calculation.Output = ProbabilityAssessmentService.Calculate(assessmentSection.FailureMechanismContribution.Norm, - failureMechanismContribution, - generalInput.N, + failureMechanism.Contribution, + failureMechanism.GeneralInput.N, calculator.ExceedanceProbabilityBeta); } } @@ -120,13 +109,35 @@ } } + private static StructuresClosureCalculationInput CreateStructuresClosureCalculationInput(StructuresCalculation calculation, ClosingStructuresFailureMechanism failureMechanism, FailureMechanismSection failureMechanismSection) + { + StructuresClosureCalculationInput input; + switch (calculation.InputParameters.InflowModelType) + { + case ClosingStructureInflowModelType.VerticalWall: + input = CreateClosureVerticalWallCalculationInput(calculation, failureMechanismSection, failureMechanism.GeneralInput); + break; + case ClosingStructureInflowModelType.LowSill: + input = CreateLowSillCalculationInput(calculation, failureMechanismSection, failureMechanism.GeneralInput); + break; + case ClosingStructureInflowModelType.FloodedCulvert: + input = CreateFloodedCulvertCalculationInput(calculation, failureMechanismSection, failureMechanism.GeneralInput); + break; + default: + throw new NotSupportedException("ClosingStructureInflowModelType"); + } + return input; + } + /// /// Cancels any ongoing structures closure calculation. /// public void Cancel() { if (calculator != null) + { calculator.Cancel(); + } canceled = true; } @@ -255,7 +266,7 @@ { validationResult.Add(RingtoetsCommonServiceResources.CalculationService_ValidateInput_No_hydraulic_boundary_location_selected); } - //TODO: Validate all the input parameters here, see WTI-926 + //TODO: Validate all the input parameters here, see WTI-926 return validationResult.ToArray(); } } Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Service.Test/ClosingStructuresCalculationServiceTest.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Service.Test/ClosingStructuresCalculationServiceTest.cs (.../ClosingStructuresCalculationServiceTest.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Service.Test/ClosingStructuresCalculationServiceTest.cs (.../ClosingStructuresCalculationServiceTest.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -141,7 +141,6 @@ new Point2D(0, 0), new Point2D(1, 1) })); - FailureMechanismSection failureMechanismSection = closingStructuresFailureMechanism.Sections.First(); var calculation = new TestClosingStructuresCalculation() { @@ -157,8 +156,9 @@ using (new HydraRingCalculatorFactoryConfig()) { var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).StructuresClosureCalculator; - TestDelegate call = () => service.Calculate(calculation, assessmentSectionStub, failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, closingStructuresFailureMechanism.Contribution, + TestDelegate call = () => service.Calculate(calculation, + assessmentSectionStub, + closingStructuresFailureMechanism, testDataPath); StructuresClosureCalculationInput[] calculationInputs = calculator.ReceivedInputs.ToArray(); @@ -217,9 +217,7 @@ // Call new ClosingStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, + closingStructuresFailureMechanism, validDataFilepath); // Assert @@ -312,9 +310,7 @@ // Call new ClosingStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, + closingStructuresFailureMechanism, validDataFilepath); // Assert @@ -406,9 +402,7 @@ // Call new ClosingStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, + closingStructuresFailureMechanism, validDataFilepath); // Assert @@ -477,14 +471,10 @@ } }; - var failureMechanismSection = closingStructuresFailureMechanism.Sections.First(); - // Call Action call = () => new ClosingStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, + closingStructuresFailureMechanism, validDataFilepath); // Assert @@ -528,7 +518,6 @@ } }; - FailureMechanismSection failureMechanismSection = closingStructuresFailureMechanism.Sections.First(); var exception = false; // Call @@ -538,10 +527,8 @@ { new ClosingStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, - validDataFilepath); + closingStructuresFailureMechanism, + testDataPath); } catch { @@ -580,8 +567,7 @@ new Point2D(0, 0), new Point2D(1, 1) })); - FailureMechanismSection failureMechanismSection = closingStructuresFailureMechanism.Sections.First(); - + var calculation = new TestClosingStructuresCalculation() { InputParameters = @@ -599,10 +585,8 @@ // Call service.Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - closingStructuresFailureMechanism.GeneralInput, - closingStructuresFailureMechanism.Contribution, - validDataFilepath); + closingStructuresFailureMechanism, + testDataPath); // Assert Assert.IsNull(calculation.Output); Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationActivity.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationActivity.cs (.../HeightStructuresCalculationActivity.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationActivity.cs (.../HeightStructuresCalculationActivity.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -22,10 +22,8 @@ using System; using Core.Common.Base.Service; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.HeightStructures.Data; -using Ringtoets.HeightStructures.Utils; using Ringtoets.HydraRing.Calculation.Activities; namespace Ringtoets.HeightStructures.Service @@ -88,14 +86,9 @@ { HeightStructuresDataSynchronizationService.ClearCalculationOutput(calculation); - FailureMechanismSection failureMechanismSection = - HeightStructuresHelper.FailureMechanismSectionForCalculation(failureMechanism.Sections, calculation); - calculationService.Calculate(calculation, assessmentSection, - failureMechanismSection, - failureMechanism.GeneralInput, - failureMechanism.Contribution, + failureMechanism, hlcdFilepath); } Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -30,6 +30,7 @@ using Ringtoets.Common.Service; using Ringtoets.HeightStructures.Data; using Ringtoets.HeightStructures.Service.Properties; +using Ringtoets.HeightStructures.Utils; using Ringtoets.HydraRing.Calculation.Calculator; using Ringtoets.HydraRing.Calculation.Calculator.Factory; using Ringtoets.HydraRing.Calculation.Data; @@ -90,21 +91,21 @@ /// /// The that holds all the information required to perform the calculation. /// The that holds information about the norm used in the calculation. - /// The to create input with. - /// The to create the input with for the calculation. - /// The amount of contribution for this failure mechanism in the assessment section. + /// The that holds the information about the contribution + /// and the general inputs used in the calculation. /// The filepath of the HLCD file that should be used for performing the calculation. internal void Calculate(StructuresCalculation calculation, IAssessmentSection assessmentSection, - FailureMechanismSection failureMechanismSection, - GeneralHeightStructuresInput generalInput, - double failureMechanismContribution, + HeightStructuresFailureMechanism failureMechanism, string hlcdFilePath) { var calculationName = calculation.Name; - StructuresOvertoppingCalculationInput input = CreateInput(calculation, failureMechanismSection, generalInput); + FailureMechanismSection failureMechanismSection = HeightStructuresHelper.FailureMechanismSectionForCalculation(failureMechanism.Sections, + calculation); + StructuresOvertoppingCalculationInput input = CreateInput(calculation, failureMechanismSection, failureMechanism.GeneralInput); + string hlcdDirectory = Path.GetDirectoryName(hlcdFilePath); calculator = HydraRingCalculatorFactory.Instance.CreateStructuresOvertoppingCalculator(hlcdDirectory, assessmentSection.Id); @@ -117,8 +118,8 @@ if (!canceled) { calculation.Output = ProbabilityAssessmentService.Calculate(assessmentSection.FailureMechanismContribution.Norm, - failureMechanismContribution, - generalInput.N, + failureMechanism.Contribution, + failureMechanism.GeneralInput.N, calculator.ExceedanceProbabilityBeta); } } @@ -194,35 +195,35 @@ else { validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.StormDuration, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_StormDuration_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_StormDuration_DisplayName))); if (IsInvalidNumber(inputParameters.DeviationWaveDirection)) { validationResults.Add(string.Format(RingtoetsCommonServiceResources.Validation_ValidateInput_No_value_entered_for_ParameterName_0_, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_DeviationWaveDirection_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_DeviationWaveDirection_DisplayName))); } validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.ModelFactorSuperCriticalFlow, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_ModelFactorSuperCriticalFlow_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_ModelFactorSuperCriticalFlow_DisplayName))); if (IsInvalidNumber(inputParameters.StructureNormalOrientation)) { validationResults.Add(string.Format(RingtoetsCommonServiceResources.Validation_ValidateInput_No_value_entered_for_ParameterName_0_, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Orientation_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Orientation_DisplayName))); } validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.FlowWidthAtBottomProtection, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_FlowWidthAtBottomProtection_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_FlowWidthAtBottomProtection_DisplayName))); validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.WidthFlowApertures, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_WidthFlowApertures_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_WidthFlowApertures_DisplayName))); validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.StorageStructureArea, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_StorageStructureArea_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_StorageStructureArea_DisplayName))); validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.AllowedLevelIncreaseStorage, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_AllowedLevelIncreaseStorage_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_AllowedLevelIncreaseStorage_DisplayName))); validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.LevelCrestStructure, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_LevelCrestStructure_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_LevelCrestStructure_DisplayName))); validationResults.AddRange(DistributionValidation.ValidateDistribution(inputParameters.CriticalOvertoppingDischarge, - GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_CriticalOvertoppingDischarge_DisplayName))); + GenerateParameterNameWithoutUnits(RingtoetsCommonFormsResources.Structure_CriticalOvertoppingDischarge_DisplayName))); } return validationResults.ToArray(); Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs =================================================================== diff -u -rfc4f8f86955f675f94208db783c8d0624d2b2250 -r3e2b418a9bbc27e2e990b15325b1350e6d56dc3d --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs (.../HeightStructuresCalculationServiceTest.cs) (revision fc4f8f86955f675f94208db783c8d0624d2b2250) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs (.../HeightStructuresCalculationServiceTest.cs) (revision 3e2b418a9bbc27e2e990b15325b1350e6d56dc3d) @@ -504,20 +504,17 @@ { InputParameters = { - HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001) + HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001), + Structure = new TestHeightStructure() } }; - var failureMechanismSection = heightStructuresFailureMechanism.Sections.First(); - string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); // Call Action call = () => new HeightStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - heightStructuresFailureMechanism.GeneralInput, - heightStructuresFailureMechanism.Contribution, + heightStructuresFailureMechanism, validFilePath); // Assert @@ -554,11 +551,11 @@ { InputParameters = { - HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1, 1) + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1, 1), + Structure = new TestHeightStructure() } }; - var failureMechanismSection = heightStructuresFailureMechanism.Sections.First(); var exception = false; // Call @@ -568,9 +565,7 @@ { new HeightStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - heightStructuresFailureMechanism.GeneralInput, - heightStructuresFailureMechanism.Contribution, + heightStructuresFailureMechanism, testDataPath); } catch @@ -619,7 +614,8 @@ { InputParameters = { - HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001) + HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001), + Structure = new TestHeightStructure() } }; @@ -644,9 +640,7 @@ // Call new HeightStructuresCalculationService().Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - heightStructuresFailureMechanism.GeneralInput, - heightStructuresFailureMechanism.Contribution, + heightStructuresFailureMechanism, validFilePath); // Assert @@ -705,12 +699,11 @@ { InputParameters = { - HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001) + HydraulicBoundaryLocation = assessmentSectionStub.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001), + Structure = new TestHeightStructure() } }; - FailureMechanismSection failureMechanismSection = heightStructuresFailureMechanism.Sections.First(); - using (new HydraRingCalculatorFactoryConfig()) { var testStructuresOvertoppingCalculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).StructuresOvertoppingCalculator; @@ -720,9 +713,7 @@ // Call service.Calculate(calculation, assessmentSectionStub, - failureMechanismSection, - heightStructuresFailureMechanism.GeneralInput, - heightStructuresFailureMechanism.Contribution, + heightStructuresFailureMechanism, testDataPath); // Assert