Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResultAssemblyFactory.cs =================================================================== diff -u -rad479a80b6db7879b935aecaca743c39615ec977 -rc7425b8f799095f2dc812351e14103931c672fba --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResultAssemblyFactory.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultAssemblyFactory.cs) (revision ad479a80b6db7879b935aecaca743c39615ec977) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanismSectionResultAssemblyFactory.cs (.../GrassCoverErosionInwardsFailureMechanismSectionResultAssemblyFactory.cs) (revision c7425b8f799095f2dc812351e14103931c672fba) @@ -20,10 +20,13 @@ // All rights reserved. using System; +using System.Collections.Generic; using Ringtoets.AssemblyTool.Data; using Ringtoets.AssemblyTool.KernelWrapper.Calculators; using Ringtoets.AssemblyTool.KernelWrapper.Calculators.Assembly; using Ringtoets.AssemblyTool.KernelWrapper.Kernels; +using Ringtoets.Common.Data.AssemblyTool; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Exceptions; namespace Ringtoets.GrassCoverErosionInwards.Data @@ -64,5 +67,56 @@ throw new AssemblyFactoryException(e.Message, e); } } + + /// + /// Assembles the detailed assessment result. + /// + /// The failure mechanism section result to + /// assemble the detailed assembly for. + /// The failure mechanism. + /// The . + /// A . + /// Thrown when any parameter is null. + /// Thrown when + /// cannot be assembled. + public static FailureMechanismSectionAssembly AssembleDetailedAssembly( + GrassCoverErosionInwardsFailureMechanismSectionResult failureMechanismSectionResult, + GrassCoverErosionInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) + { + if (failureMechanismSectionResult == null) + { + throw new ArgumentNullException(nameof(failureMechanismSectionResult)); + } + + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IFailureMechanismSectionAssemblyCalculator calculator = calculatorFactory.CreateFailureMechanismSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); + + try + { + IEnumerable categories = AssemblyToolCategoriesFactory.CreateFailureMechanismSectionAssemblyCategories( + assessmentSection.FailureMechanismContribution.SignalingNorm, + assessmentSection.FailureMechanismContribution.LowerLimitNorm, + failureMechanism.Contribution, + failureMechanism.GeneralInput.N); + + return calculator.AssembleDetailedAssessment(failureMechanismSectionResult.GetDetailedAssessmentProbability(failureMechanism, assessmentSection), + categories); + } + catch (FailureMechanismSectionAssemblyCalculatorException e) + { + throw new AssemblyFactoryException(e.Message, e); + } + } } } \ No newline at end of file