Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs =================================================================== diff -u -r85e95a2b6e8fd7a873ba166ddfba608f2466a40c -r50ecb5a95c088a636ec38ce3c5f2fc8addcd67e3 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs) (revision 85e95a2b6e8fd7a873ba166ddfba608f2466a40c) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs) (revision 50ecb5a95c088a636ec38ce3c5f2fc8addcd67e3) @@ -21,11 +21,17 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base.Service; +using log4net; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Service; using Ringtoets.GrassCoverErosionOutwards.Data; +using Ringtoets.GrassCoverErosionOutwards.Service.Properties; using Ringtoets.HydraRing.Calculation.Activities; using Ringtoets.Revetment.Data; +using Ringtoets.Revetment.Service; +using RingtoetsCommonServiceResources = Ringtoets.Common.Service.Properties.Resources; namespace Ringtoets.GrassCoverErosionOutwards.Service { @@ -34,6 +40,8 @@ /// public class GrassCoverErosionOutwardsWaveConditionsCalculationActivity : HydraRingActivity> { + private static readonly ILog log = LogManager.GetLogger(typeof(GrassCoverErosionOutwardsWaveConditionsCalculationActivity)); + private readonly GrassCoverErosionOutwardsWaveConditionsCalculation calculation; private readonly string hlcdDirectory; private readonly GrassCoverErosionOutwardsFailureMechanism failureMechanism; @@ -79,12 +87,65 @@ protected override void OnRun() { - throw new System.NotImplementedException(); + PerformRun(() => true, + () => GrassCoverErosionOutwardsDataSynchronizationService.ClearWaveConditionsCalculationOutput(calculation), + () => + { + log.Info(string.Format(RingtoetsCommonServiceResources.Calculation_Subject_0_started_Time_1_, + calculation.Name, + DateTimeService.CurrentTimeAsString)); + + List outputs = new List(); + + var a = failureMechanism.GeneralInput.A; + var b = failureMechanism.GeneralInput.B; + var c = failureMechanism.GeneralInput.C; + var norm = assessmentSection.FailureMechanismContribution.Norm; + + foreach (var waterLevel in calculation.InputParameters.WaterLevels) + { + log.Info(string.Format(Resources.GrassCoverErosionOutwardsWaveConditionsCalculationActivity_OnRun_Subject_0_for_waterlevel_1_started_time_2_, + calculation.Name, + waterLevel, + DateTimeService.CurrentTimeAsString)); + + ProgressText = string.Format(Resources.GrassCoverErosionOutwardsWaveConditionsCalculationActivity_OnRun_Calculate_waterlevel_0_, waterLevel); + + var output = WaveConditionsCalculationService.Instance.Calculate(waterLevel, + a, + b, + c, + norm, + calculation.InputParameters, + hlcdDirectory, + assessmentSection.Id, + calculation.Name); + + if (output != null) + { + outputs.Add(output); + } + + log.Info(string.Format(Resources.GrassCoverErosionOutwardsWaveConditionsCalculationActivity_OnRun_Subject_0_for_waterlevel_1_ended_time_2_, + calculation.Name, + waterLevel, + DateTimeService.CurrentTimeAsString)); + } + + log.Info(string.Format(RingtoetsCommonServiceResources.Calculation_Subject_0_ended_Time_1_, + calculation.Name, + DateTimeService.CurrentTimeAsString)); + + return outputs.Any() ? outputs : null; + }); } protected override void OnFinish() { - throw new System.NotImplementedException(); + PerformFinish(() => + { + calculation.Output = new GrassCoverErosionOutwardsWaveConditionsOutput(Output); + }); } } } \ No newline at end of file