Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs =================================================================== diff -u -r2ffec498317b3c7b3340430cfeccb0ef1f4210fc -re2dbd70747659819d97614b9a73733babaa7b106 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs) (revision 2ffec498317b3c7b3340430cfeccb0ef1f4210fc) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs) (revision e2dbd70747659819d97614b9a73733babaa7b106) @@ -21,19 +21,27 @@ 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.HydraRing.Calculation.Activities; -using Ringtoets.HydraRing.Calculation.Data.Output; +using Ringtoets.Revetment.Data; +using Ringtoets.Revetment.Service; using Ringtoets.WaveImpactAsphaltCover.Data; +using Ringtoets.WaveImpactAsphaltCover.Service.Properties; +using RingtoetsCommonServiceResources = Ringtoets.Common.Service.Properties.Resources; namespace Ringtoets.WaveImpactAsphaltCover.Service { /// /// for running a wave impact asphalt cover wave conditions calculation. /// - public class WaveImpactAsphaltCoverWaveConditionsCalculationActivity : HydraRingActivity> + public class WaveImpactAsphaltCoverWaveConditionsCalculationActivity : HydraRingActivity> { + private static readonly ILog log = LogManager.GetLogger(typeof(WaveImpactAsphaltCoverWaveConditionsCalculationActivity)); + private readonly WaveImpactAsphaltCoverWaveConditionsCalculation calculation; private readonly string hlcdDirectory; private readonly WaveImpactAsphaltCoverFailureMechanism failureMechanism; @@ -77,8 +85,61 @@ Name = calculation.Name; } - protected override void OnRun() {} + protected override void OnRun() + { + PerformRun(() => true, + () => WaveImpactAsphaltCoverDataSynchronizationService.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.WaveImpactAsphaltCoverWaveConditionsCalculationActivity_OnRun_Subject_0_for_waterlevel_1_started_time_2_, + calculation.Name, + waterLevel, + DateTimeService.CurrentTimeAsString)); + + ProgressText = string.Format(Resources.WaveImpactAsphaltCoverWaveConditionsCalculationActivity_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.WaveImpactAsphaltCoverWaveConditionsCalculationActivity_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() {} } } \ No newline at end of file