Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs =================================================================== diff -u -rfa05755175660f1738a1c3bf82fb4505b93ffa1f -r6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision fa05755175660f1738a1c3bf82fb4505b93ffa1f) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision 6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce) @@ -27,6 +27,7 @@ using Ringtoets.Common.Data.Probability; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Service; +using Ringtoets.Common.Service.MessageProviders; using Ringtoets.Common.Service.Structures; using Ringtoets.HydraRing.Calculation.Calculator; using Ringtoets.HydraRing.Calculation.Data.Input.Structures; @@ -42,6 +43,11 @@ { private static readonly ILog log = LogManager.GetLogger(typeof(ClosingStructuresCalculationService)); + /// + /// Creates a new instance of . + /// + public ClosingStructuresCalculationService() : base(new ClosingStructuresCalculationMessageProvider()) {} + protected override StructuresClosureCalculationInput CreateInput(StructuresCalculation calculation, ClosingStructuresFailureMechanism failureMechanism, string hydraulicBoundaryDatabaseFilePath) { StructuresClosureCalculationInput input; Index: Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs =================================================================== diff -u -rfa05755175660f1738a1c3bf82fb4505b93ffa1f -r6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce --- Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs (.../StructuresCalculationServiceBase.cs) (revision fa05755175660f1738a1c3bf82fb4505b93ffa1f) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs (.../StructuresCalculationServiceBase.cs) (revision 6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce) @@ -30,6 +30,7 @@ using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.IO.HydraRing; +using Ringtoets.Common.Service.MessageProviders; using Ringtoets.Common.Service.Properties; using Ringtoets.Common.Service.ValidationRules; using Ringtoets.HydraRing.Calculation.Calculator; @@ -57,6 +58,20 @@ private IStructuresCalculator calculator; /// + /// Creates a new instance of . + /// + /// The object which is used to build log messages. + /// Thrown when + /// is null. + protected StructuresCalculationServiceBase(IStructuresCalculationMessageProvider messageProvider) + { + if (messageProvider == null) + { + throw new ArgumentNullException(nameof(messageProvider)); + } + } + + /// /// Performs validation over the values on the given . Error and status information is logged during /// the execution of the operation. /// Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/Structures/StructuresCalculationServiceBaseTest.cs =================================================================== diff -u -rfa05755175660f1738a1c3bf82fb4505b93ffa1f -r6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/Structures/StructuresCalculationServiceBaseTest.cs (.../StructuresCalculationServiceBaseTest.cs) (revision fa05755175660f1738a1c3bf82fb4505b93ffa1f) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/Structures/StructuresCalculationServiceBaseTest.cs (.../StructuresCalculationServiceBaseTest.cs) (revision 6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce) @@ -30,6 +30,7 @@ using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Service.MessageProviders; using Ringtoets.Common.Service.Structures; using Ringtoets.Common.Service.TestUtil; using Ringtoets.HydraRing.Calculation.Calculator; @@ -48,6 +49,17 @@ private static readonly string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); [Test] + public void Constructor_MessageProviderNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new TestStructuresCalculationService(null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("messageProvider", exception.ParamName); + } + + [Test] public void Validate_CalculationNull_ThrowArgumentNullException() { // Setup @@ -329,7 +341,7 @@ var failureMechanism = new TestFailureMechanism(); // Call - TestDelegate test = () => new TestStructuresCalculationService().Calculate(null, + TestDelegate test = () => new TestStructuresCalculationService(new TestMessageProvider()).Calculate(null, assessmentSection, failureMechanism, string.Empty); @@ -348,7 +360,7 @@ var failureMechanism = new TestFailureMechanism(); // Call - TestDelegate test = () => new TestStructuresCalculationService().Calculate(calculation, + TestDelegate test = () => new TestStructuresCalculationService(new TestMessageProvider()).Calculate(calculation, null, failureMechanism, string.Empty); @@ -369,7 +381,7 @@ var calculation = new TestStructuresCalculation(); // Call - TestDelegate test = () => new TestStructuresCalculationService().Calculate(calculation, + TestDelegate test = () => new TestStructuresCalculationService(new TestMessageProvider()).Calculate(calculation, assessmentSection, null, string.Empty); @@ -405,7 +417,7 @@ using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { - var service = new TestStructuresCalculationService(); + var service = new TestStructuresCalculationService(new TestMessageProvider()); // Call service.Calculate(calculation, @@ -450,7 +462,7 @@ using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) { - var service = new TestStructuresCalculationService(); + var service = new TestStructuresCalculationService(new TestMessageProvider()); calculator.CalculationFinishedHandler += (s, e) => service.Cancel(); // Call @@ -469,6 +481,8 @@ private class TestStructuresCalculationService : StructuresCalculationServiceBase { + public TestStructuresCalculationService(IStructuresCalculationMessageProvider messageProvider) : base(messageProvider) {} + protected override ExceedanceProbabilityCalculationInput CreateInput(StructuresCalculation calculation, TestFailureMechanism failureMechanism, string hydraulicBoundaryDatabaseFilePath) @@ -502,5 +516,23 @@ } } } + + private class TestMessageProvider : IStructuresCalculationMessageProvider + { + public string GetCalculationFailedMessage(string calculationSubject) + { + return $"Calculation {calculationSubject} failed."; + } + + public string GetCalculationFailedWithErrorReportMessage(string calculationSubject, string errorReport) + { + return $"Calculation {calculationSubject} failed with report {errorReport}."; + } + + public string GetCalculationPerformedMessage(string calculationSubject) + { + return $"Calculation {calculationSubject} performed."; + } + } } } \ No newline at end of file Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs =================================================================== diff -u -rfa05755175660f1738a1c3bf82fb4505b93ffa1f -r6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision fa05755175660f1738a1c3bf82fb4505b93ffa1f) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Service/HeightStructuresCalculationService.cs (.../HeightStructuresCalculationService.cs) (revision 6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce) @@ -24,6 +24,7 @@ using Ringtoets.Common.Data.Probability; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Service; +using Ringtoets.Common.Service.MessageProviders; using Ringtoets.Common.Service.Structures; using Ringtoets.HeightStructures.Data; using Ringtoets.HeightStructures.Service.Properties; @@ -41,6 +42,11 @@ { private static readonly ILog log = LogManager.GetLogger(typeof(HeightStructuresCalculationService)); + /// + /// Creates a new instance of . + /// + public HeightStructuresCalculationService() : base(new HeightStructuresCalculationMessageProvider()) {} + protected override StructuresOvertoppingCalculationInput CreateInput(StructuresCalculation calculation, HeightStructuresFailureMechanism failureMechanism, string hydraulicBoundaryDatabaseFilePath) Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Service/StabilityPointStructuresCalculationService.cs =================================================================== diff -u -r461842cc9a0a60d00900065b9a7db474db7d7548 -r6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Service/StabilityPointStructuresCalculationService.cs (.../StabilityPointStructuresCalculationService.cs) (revision 461842cc9a0a60d00900065b9a7db474db7d7548) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Service/StabilityPointStructuresCalculationService.cs (.../StabilityPointStructuresCalculationService.cs) (revision 6e0a4fb94b3cd5631842025c95d2b1460fc7a6ce) @@ -25,6 +25,7 @@ using Ringtoets.Common.Data.Probability; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Service; +using Ringtoets.Common.Service.MessageProviders; using Ringtoets.Common.Service.Structures; using Ringtoets.HydraRing.Calculation.Calculator; using Ringtoets.HydraRing.Calculation.Data.Input.Structures; @@ -45,6 +46,11 @@ { private static readonly ILog log = LogManager.GetLogger(typeof(StabilityPointStructuresCalculationService)); + /// + /// Creates a new instance of . + /// + public StabilityPointStructuresCalculationService() : base(new StabilityPointStructuresCalculationMessageProvider()) {} + protected override StructuresStabilityPointCalculationInput CreateInput(StructuresCalculation calculation, StabilityPointStructuresFailureMechanism failureMechanism, string hydraulicBoundaryDatabaseFilePath)