Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.cs =================================================================== diff -u -r16e112e326a41572a9f111a3c82bd88d668b713e -rde0177971a815f299038a2157baeaacf7be61b50 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.cs (.../WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.cs) (revision 16e112e326a41572a9f111a3c82bd88d668b713e) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Data/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.cs (.../WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.cs) (revision de0177971a815f299038a2157baeaacf7be61b50) @@ -43,7 +43,7 @@ /// is null. /// Thrown when the /// could not be created. - public static FailureMechanismSectionAssembly AssembleSimpleAssessment( + public static FailureMechanismSectionAssemblyCategoryGroup AssembleSimpleAssessment( WaveImpactAsphaltCoverFailureMechanismSectionResult failureMechanismSectionResult) { if (failureMechanismSectionResult == null) @@ -57,12 +57,116 @@ try { - return calculator.AssembleSimpleAssessment(failureMechanismSectionResult.SimpleAssessmentResult); + return calculator.AssembleSimpleAssessment(failureMechanismSectionResult.SimpleAssessmentResult).Group; } catch (FailureMechanismSectionAssemblyCalculatorException e) { throw new AssemblyException(e.Message, e); } } + + /// + /// Assembles the detailed assessment results. + /// + /// The failure mechanism section result to assemble the + /// detailed assembly results for. + /// A based on the . + /// Thrown when + /// is null. + /// Thrown when the + /// could not be created. + public static FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment( + WaveImpactAsphaltCoverFailureMechanismSectionResult failureMechanismSectionResult) + { + if (failureMechanismSectionResult == null) + { + throw new ArgumentNullException(nameof(failureMechanismSectionResult)); + } + + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IFailureMechanismSectionAssemblyCalculator calculator = + calculatorFactory.CreateFailureMechanismSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); + + try + { + return calculator.AssembleDetailedAssessment(failureMechanismSectionResult.DetailedAssessmentResultForFactorizedSignalingNorm, + failureMechanismSectionResult.DetailedAssessmentResultForSignalingNorm, + failureMechanismSectionResult.DetailedAssessmentResultForMechanismSpecificLowerLimitNorm, + failureMechanismSectionResult.DetailedAssessmentResultForLowerLimitNorm, + failureMechanismSectionResult.DetailedAssessmentResultForFactorizedLowerLimitNorm); + } + catch (FailureMechanismSectionAssemblyCalculatorException e) + { + throw new AssemblyException(e.Message, e); + } + } + + /// + /// Assembles the tailor made assessment results. + /// + /// The failure mechanism section result to assemble the + /// tailor made assembly results for. + /// A based on the . + /// Thrown when + /// is null. + /// Thrown when the + /// could not be created. + public static FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment( + WaveImpactAsphaltCoverFailureMechanismSectionResult failureMechanismSectionResult) + { + if (failureMechanismSectionResult == null) + { + throw new ArgumentNullException(nameof(failureMechanismSectionResult)); + } + + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IFailureMechanismSectionAssemblyCalculator calculator = + calculatorFactory.CreateFailureMechanismSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); + + try + { + return calculator.AssembleTailorMadeAssessment(failureMechanismSectionResult.TailorMadeAssessmentResult); + } + catch (FailureMechanismSectionAssemblyCalculatorException e) + { + throw new AssemblyException(e.Message, e); + } + } + + /// + /// Assembles the combined assessment results. + /// + /// The failure mechanism section result to assemble the + /// combined assembly results for. + /// A based on the . + /// Thrown when + /// is null. + /// Thrown when the + /// could not be created. + public static FailureMechanismSectionAssemblyCategoryGroup AssembleCombinedAssessment( + WaveImpactAsphaltCoverFailureMechanismSectionResult failureMechanismSectionResult) + { + if (failureMechanismSectionResult == null) + { + throw new ArgumentNullException(nameof(failureMechanismSectionResult)); + } + + FailureMechanismSectionAssemblyCategoryGroup simpleAssembly = AssembleSimpleAssessment(failureMechanismSectionResult); + FailureMechanismSectionAssemblyCategoryGroup detailedAssembly = AssembleDetailedAssessment(failureMechanismSectionResult); + FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssembly = AssembleTailorMadeAssessment(failureMechanismSectionResult); + + 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