Index: Ringtoets/Common/src/Ringtoets.Common.Service/IDesignWaterLevelCalculationService.cs =================================================================== diff -u -rc78a5b1d66fba1148ab5880357ce3c20a042c9ed -r1e533850c7711172462df1e8f569b9f3ff950045 --- Ringtoets/Common/src/Ringtoets.Common.Service/IDesignWaterLevelCalculationService.cs (.../IDesignWaterLevelCalculationService.cs) (revision c78a5b1d66fba1148ab5880357ce3c20a042c9ed) +++ Ringtoets/Common/src/Ringtoets.Common.Service/IDesignWaterLevelCalculationService.cs (.../IDesignWaterLevelCalculationService.cs) (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -25,6 +25,9 @@ namespace Ringtoets.Common.Service { + /// + /// Interface that provides methods for performing Hydra-Ring calculations for design water level. + /// public interface IDesignWaterLevelCalculationService { /// Index: Ringtoets/Common/src/Ringtoets.Common.Service/IWaveHeightCalculationService.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Service/IWaveHeightCalculationService.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Service/IWaveHeightCalculationService.cs (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -0,0 +1,57 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Ringtoets.Common.Service.MessageProviders; +using Ringtoets.HydraRing.Calculation.Data.Output; +using Ringtoets.HydraRing.Data; + +namespace Ringtoets.Common.Service +{ + /// + /// Interface that provides methods for performing Hydra-Ring calculations for design water level. + /// + public interface IWaveHeightCalculationService + { + /// + /// Performs validation of the values in the given . Error information is logged during + /// the execution of the operation. + /// + /// The name to use in the validation logs. + /// The HLCD file that should be used for performing the calculation. + /// False if the connection to contains validation errors; True otherwise. + bool Validate(string name, string hydraulicBoundaryDatabaseFilePath); + + /// + /// Performs a wave height calculation based on the supplied and returns the result + /// if the calculation was successful. Error and status information is logged during the execution of the operation. + /// + /// The message provider for the services. + /// The to perform the calculation for. + /// The HLCD file that should be used for performing the calculation. + /// The id of the ring to perform the calculation for. + /// The norm to use during the calculation. + /// A on a successful calculation, null otherwise. + ReliabilityIndexCalculationOutput Calculate(ICalculationMessageProvider messageProvider, + IHydraulicBoundaryLocation hydraulicBoundaryLocation, + string hydraulicBoundaryDatabaseFilePath, + string ringId, double norm); + } +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj =================================================================== diff -u -rc78a5b1d66fba1148ab5880357ce3c20a042c9ed -r1e533850c7711172462df1e8f569b9f3ff950045 --- Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision c78a5b1d66fba1148ab5880357ce3c20a042c9ed) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Ringtoets.Common.Service.csproj (.../Ringtoets.Common.Service.csproj) (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -52,6 +52,7 @@ + Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationActivity.cs =================================================================== diff -u -r8aea6e032ff8aeb4a4f1b85210fd0e2fbbce3a4a -r1e533850c7711172462df1e8f569b9f3ff950045 --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationActivity.cs (.../WaveHeightCalculationActivity.cs) (revision 8aea6e032ff8aeb4a4f1b85210fd0e2fbbce3a4a) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationActivity.cs (.../WaveHeightCalculationActivity.cs) (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -82,11 +82,11 @@ return; } - PerformRun(() => WaveHeightCalculationService.Validate( + PerformRun(() => WaveHeightCalculationService.Instance.Validate( messageProvider.GetCalculationName(hydraulicBoundaryLocation.Name), hydraulicBoundaryDatabaseFilePath), () => hydraulicBoundaryLocation.WaveHeight = (RoundedDouble) double.NaN, - () => WaveHeightCalculationService.Calculate( + () => WaveHeightCalculationService.Instance.Calculate( messageProvider, hydraulicBoundaryLocation, hydraulicBoundaryDatabaseFilePath, ringId, norm)); } Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs =================================================================== diff -u -r3d6eb89c816218f1cb062f0ad3b0d944942f62e3 -r1e533850c7711172462df1e8f569b9f3ff950045 --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 3d6eb89c816218f1cb062f0ad3b0d944942f62e3) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -36,19 +36,28 @@ /// /// Service that provides methods for performing Hydra-Ring calculations for marginal wave statistics. /// - internal static class WaveHeightCalculationService + public class WaveHeightCalculationService : IWaveHeightCalculationService { private static readonly ILog log = LogManager.GetLogger(typeof(WaveHeightCalculationService)); + private static IWaveHeightCalculationService instance; /// - /// Performs validation of the values in the given . Error information is logged during - /// the execution of the operation. + /// Gets or sets an instance of . /// - /// The name to use in the validation logs. - /// The HLCD file that should be used for performing the calculation. - /// False if the connection to contains validation errors; True otherwise. - internal static bool Validate(string name, string hydraulicBoundaryDatabaseFilePath) + public static IWaveHeightCalculationService Instance { + get + { + return instance ?? (instance = new WaveHeightCalculationService()); + } + set + { + instance = value; + } + } + + public bool Validate(string name, string hydraulicBoundaryDatabaseFilePath) + { CalculationServiceHelper.LogValidationBeginTime(name); string validationProblem = HydraulicDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); @@ -65,20 +74,10 @@ return isValid; } - /// - /// Performs a wave height calculation based on the supplied and returns the result - /// if the calculation was successful. Error and status information is logged during the execution of the operation. - /// - /// The message provider for the services. - /// The to perform the calculation for. - /// The HLCD file that should be used for performing the calculation. - /// The id of the ring to perform the calculation for. - /// The norm to use during the calculation. - /// A on a successful calculation, null otherwise. - internal static ReliabilityIndexCalculationOutput Calculate(ICalculationMessageProvider messageProvider, - IHydraulicBoundaryLocation hydraulicBoundaryLocation, - string hydraulicBoundaryDatabaseFilePath, - string ringId, double norm) + public ReliabilityIndexCalculationOutput Calculate(ICalculationMessageProvider messageProvider, + IHydraulicBoundaryLocation hydraulicBoundaryLocation, + string hydraulicBoundaryDatabaseFilePath, + string ringId, double norm) { var hlcdDirectory = Path.GetDirectoryName(hydraulicBoundaryDatabaseFilePath); var input = CreateInput(hydraulicBoundaryLocation, norm); Index: Ringtoets/Common/src/Ringtoets.Common.Service/packages.config =================================================================== diff -u -rfea3ed82dfb6dfcad535eef16efcbaa9c01564ed -r1e533850c7711172462df1e8f569b9f3ff950045 --- Ringtoets/Common/src/Ringtoets.Common.Service/packages.config (.../packages.config) (revision fea3ed82dfb6dfcad535eef16efcbaa9c01564ed) +++ Ringtoets/Common/src/Ringtoets.Common.Service/packages.config (.../packages.config) (revision 1e533850c7711172462df1e8f569b9f3ff950045) @@ -1,4 +1,5 @@  +