Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/Assembly/CombinedAssemblyFailureMechanismInputFactory.cs =================================================================== diff -u -r260eeac10d6b7fc5fe49c11a8659283a00d5e603 -r1046921a24c7d047235317c67656befadef30cf9 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/Assembly/CombinedAssemblyFailureMechanismInputFactory.cs (.../CombinedAssemblyFailureMechanismInputFactory.cs) (revision 260eeac10d6b7fc5fe49c11a8659283a00d5e603) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/Assembly/CombinedAssemblyFailureMechanismInputFactory.cs (.../CombinedAssemblyFailureMechanismInputFactory.cs) (revision 1046921a24c7d047235317c67656befadef30cf9) @@ -21,8 +21,13 @@ using System; using System.Collections.Generic; +using System.Linq; +using Core.Common.Base.Geometry; using Ringtoets.AssemblyTool.Data; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.Probability; +using Ringtoets.Piping.Data; namespace Ringtoets.Integration.Data.Assembly { @@ -51,7 +56,61 @@ throw new ArgumentNullException(nameof(failureMechanisms)); } - return new List(); + var inputs = new List(); + PipingFailureMechanism pipingFailureMechanism = assessmentSection.Piping; + + if (failureMechanisms.Contains(pipingFailureMechanism)) + { + inputs.Add(CreateCombinedAssemblyFailureMechanismInputItem(fm => fm.PipingProbabilityAssessmentInput.GetN( + fm.PipingProbabilityAssessmentInput.SectionLength), + pipingFailureMechanism, + CreateCombinedSections(pipingFailureMechanism.SectionResults, + assessmentSection, PipingAssemblyFunc) + .ToArray())); + } + + return inputs; } + + private static Func PipingAssemblyFunc + { + get + { + return (sectionResult, assessmentSection) => PipingFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup( + sectionResult, assessmentSection.Piping, assessmentSection); + } + } + + private static CombinedAssemblyFailureMechanismInput CreateCombinedAssemblyFailureMechanismInputItem( + Func getLengthEffectFunc, TFailureMechanism failureMechanism, + IEnumerable combinedAssemblyFailureMechanismSections) + where TFailureMechanism : IFailureMechanism + { + return new CombinedAssemblyFailureMechanismInput(getLengthEffectFunc(failureMechanism), + failureMechanism.Contribution, + combinedAssemblyFailureMechanismSections); + } + + private static IEnumerable CreateCombinedSections( + IEnumerable sectionResults, + AssessmentSection assessmentSection, + Func getAssemblyFunc) + where TFailureMechanismSectionResult : FailureMechanismSectionResult + { + double totalSectionsLength = 0; + + var combinedSections = new List(); + foreach (TFailureMechanismSectionResult sectionResult in sectionResults) + { + double endPoint = sectionResult.Section.Length + totalSectionsLength; + combinedSections.Add(new CombinedAssemblyFailureMechanismSection(totalSectionsLength, + endPoint, + getAssemblyFunc(sectionResult, assessmentSection))); + + totalSectionsLength = endPoint; + } + + return combinedSections.ToArray(); + } } } \ No newline at end of file