Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs =================================================================== diff -u -rc2c7fd14caf930e8c8d9c312fde6302681dbdc83 -r5cba53b7cc9ed25e641eb02e2292a885945b0e20 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision c2c7fd14caf930e8c8d9c312fde6302681dbdc83) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 5cba53b7cc9ed25e641eb02e2292a885945b0e20) @@ -34,6 +34,7 @@ using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.IO.HydraRing; using Ringtoets.Common.Service; +using Ringtoets.Common.Service.ValidationRules; using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.Service.Properties; using Ringtoets.HydraRing.Calculation.Calculator; @@ -520,13 +521,7 @@ } } - if (inputParameters.UseBreakWater) - { - if (double.IsNaN(inputParameters.BreakWater.Height) || double.IsInfinity(inputParameters.BreakWater.Height)) - { - validationResult.Add(RingtoetsCommonServiceResources.Validation_Invalid_BreakWaterHeight_value); - } - } + validationResult.AddRange(new UseBreakWaterRule(inputParameters).Validate()); return validationResult.ToArray(); } Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs =================================================================== diff -u -r6a8d4edb0f3b2d00d3958c48146c51487bd01247 -r5cba53b7cc9ed25e641eb02e2292a885945b0e20 --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 6a8d4edb0f3b2d00d3958c48146c51487bd01247) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 5cba53b7cc9ed25e641eb02e2292a885945b0e20) @@ -21,20 +21,18 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using System.Globalization; using System.IO; using System.Linq; -using System.Security; using Core.Common.Base.Data; using Core.Common.Base.IO; using Core.Common.IO.Exceptions; using log4net; using Ringtoets.Common.IO.HydraRing; using Ringtoets.Common.Service; +using Ringtoets.Common.Service.ValidationRules; using Ringtoets.HydraRing.Calculation.Calculator; using Ringtoets.HydraRing.Calculation.Calculator.Factory; -using Ringtoets.HydraRing.Calculation.Data.Input; using Ringtoets.HydraRing.Calculation.Data.Input.WaveConditions; using Ringtoets.HydraRing.Calculation.Exceptions; using Ringtoets.Revetment.Data; @@ -199,11 +197,7 @@ } else { - string message = ValidateWaveConditionsInput(input, designWaterLevelName); - if (!string.IsNullOrEmpty(message)) - { - validationResults.Add(message); - } + validationResults.AddRange(ValidateWaveConditionsInput(input, designWaterLevelName)); } return validationResults.ToArray(); @@ -360,38 +354,35 @@ return waveConditionsCosineCalculationInput; } - private static string ValidateWaveConditionsInput(WaveConditionsInput input, string designWaterLevelName) + private static IEnumerable ValidateWaveConditionsInput(WaveConditionsInput input, string designWaterLevelName) { + var messages = new List(); + if (input.HydraulicBoundaryLocation == null) { - return Resources.WaveConditionsCalculationService_ValidateInput_No_HydraulicBoundaryLocation_selected; + messages.Add(Resources.WaveConditionsCalculationService_ValidateInput_No_HydraulicBoundaryLocation_selected); } - - if (double.IsNaN(input.HydraulicBoundaryLocation.DesignWaterLevel)) + else if (double.IsNaN(input.HydraulicBoundaryLocation.DesignWaterLevel)) { - return string.Format(Resources.WaveConditionsCalculationService_ValidateInput_No_0_DesignWaterLevel_calculated, designWaterLevelName); + messages.Add(string.Format(Resources.WaveConditionsCalculationService_ValidateInput_No_0_DesignWaterLevel_calculated, designWaterLevelName)); } - - if (!input.WaterLevels.Any()) + else { - return Resources.WaveConditionsCalculationService_ValidateInput_No_derived_WaterLevels; - } + if (!input.WaterLevels.Any()) + { + messages.Add(Resources.WaveConditionsCalculationService_ValidateInput_No_derived_WaterLevels); + } - if (input.UseBreakWater) - { - if (double.IsInfinity(input.BreakWater.Height) || double.IsNaN(input.BreakWater.Height)) + messages.AddRange(new UseBreakWaterRule(input).Validate()); + + if (double.IsNaN(input.Orientation)) { - return RingtoetsCommonServiceResources.Validation_Invalid_BreakWaterHeight_value; + messages.Add(string.Format(RingtoetsCommonServiceResources.Validation_ValidateInput_No_concrete_value_entered_for_ParameterName_0_, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Orientation_DisplayName))); } } - if (double.IsNaN(input.Orientation)) - { - return string.Format(RingtoetsCommonServiceResources.Validation_ValidateInput_No_concrete_value_entered_for_ParameterName_0_, - ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Orientation_DisplayName)); - } - - return null; + return messages; } } } \ No newline at end of file Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs =================================================================== diff -u -r6a8d4edb0f3b2d00d3958c48146c51487bd01247 -r5cba53b7cc9ed25e641eb02e2292a885945b0e20 --- Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs (.../WaveConditionsCalculationServiceBaseTest.cs) (revision 6a8d4edb0f3b2d00d3958c48146c51487bd01247) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsCalculationServiceBaseTest.cs (.../WaveConditionsCalculationServiceBaseTest.cs) (revision 5cba53b7cc9ed25e641eb02e2292a885945b0e20) @@ -230,9 +230,10 @@ var dbFilePath = Path.Combine(testDataPath, "HRD ijsselmeer.sqlite"); - var input = new WaveConditionsInput() + var input = new WaveConditionsInput { HydraulicBoundaryLocation = TestHydraulicBoundaryLocation.CreateDesignWaterLevelCalculated(designWaterLevel), + Orientation = (RoundedDouble) 0, LowerBoundaryRevetment = (RoundedDouble) lowerBoundaryRevetments, UpperBoundaryRevetment = (RoundedDouble) upperBoundaryRevetments, StepSize = WaveConditionsInputStepSize.One,