Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResultAssemblyFactory.cs =================================================================== diff -u -r3cb5cd49de86f4379c54d71949a76e23c42f228a -r00168da71b7ca2b94166ca16179535ed6d2131b4 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResultAssemblyFactory.cs (.../HeightStructuresFailureMechanismSectionResultAssemblyFactory.cs) (revision 3cb5cd49de86f4379c54d71949a76e23c42f228a) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResultAssemblyFactory.cs (.../HeightStructuresFailureMechanismSectionResultAssemblyFactory.cs) (revision 00168da71b7ca2b94166ca16179535ed6d2131b4) @@ -178,5 +178,56 @@ throw new AssemblyException(e.Message, e); } } + + /// + /// Assembles the combined assembly. + /// + /// The failure mechanism section result to + /// combine the assemblies for. + /// The failure mechanism belonging to this section. + /// The belonging to this section. + /// A . + /// Thrown when any parameter is null. + /// Thrown when the + /// could not be created. + public static FailureMechanismSectionAssembly AssembleCombinedAssembly( + HeightStructuresFailureMechanismSectionResult failureMechanismSectionResult, + HeightStructuresFailureMechanism 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)); + } + + FailureMechanismSectionAssembly simpleAssembly = AssembleSimpleAssessment(failureMechanismSectionResult); + FailureMechanismSectionAssembly detailedAssembly = AssembleDetailedAssembly( + failureMechanismSectionResult, failureMechanism, assessmentSection); + FailureMechanismSectionAssembly tailorMadeAssembly = AssembleTailorMadeAssembly( + failureMechanismSectionResult, failureMechanism, assessmentSection); + + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IFailureMechanismSectionAssemblyCalculator calculator = + calculatorFactory.CreateFailureMechanismSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); + + try + { + return calculator.AssembleCombined(simpleAssembly, detailedAssembly, tailorMadeAssembly); + } + catch (FailureMechanismSectionAssemblyCalculatorException e) + { + throw new AssemblyException(e.Message, e); + } + } } } \ No newline at end of file