Index: Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismExtensions.cs =================================================================== diff -u --- Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismExtensions.cs (revision 0) +++ Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismExtensions.cs (revision 4fa486586ff8fc89759e91d6b4ca09833e5a4b94) @@ -0,0 +1,46 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Linq; +using Riskeer.Common.Data.FailureMechanism; + +namespace Riskeer.Piping.Data +{ + public static class PipingFailureMechanismExtensions + { + public static bool ScenarioConfigurationTypeIsSemiProbabilistic( + this PipingFailureMechanism failureMechanism, PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection) + { + return failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic + || failureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.PerFailureMechanismSection + && scenarioConfigurationForSection.ScenarioConfigurationType == PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic; + } + + public static PipingScenarioConfigurationPerFailureMechanismSection GetScenarioConfigurationForSection( + this PipingFailureMechanism failureMechanism, + FailureMechanismSectionResult sectionResult) + { + return failureMechanism.ScenarioConfigurationsPerFailureMechanismSection + .Single(sc => sc.Section.StartPoint.Equals(sectionResult.Section.StartPoint) + && sc.Section.EndPoint.Equals(sectionResult.Section.EndPoint)); + } + } +} \ No newline at end of file Index: Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultCalculateProbabilityStrategyFactory.cs =================================================================== diff -u --- Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultCalculateProbabilityStrategyFactory.cs (revision 0) +++ Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultCalculateProbabilityStrategyFactory.cs (revision 4fa486586ff8fc89759e91d6b4ca09833e5a4b94) @@ -0,0 +1,63 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Linq; +using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Data.SemiProbabilistic; + +namespace Riskeer.Piping.Data +{ + public static class PipingFailureMechanismSectionResultCalculateProbabilityStrategyFactory + { + public static IFailureMechanismSectionResultCalculateProbabilityStrategy CreateCalculateStrategy( + PipingFailureMechanism failureMechanism, + AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult, + PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection, + IAssessmentSection assessmentSection) + { + bool scenarioConfigurationTypeIsSemiProbabilistic = failureMechanism.ScenarioConfigurationTypeIsSemiProbabilistic(scenarioConfigurationForSection); + + return scenarioConfigurationTypeIsSemiProbabilistic + ? (IFailureMechanismSectionResultCalculateProbabilityStrategy) CreateSemiProbabilisticCalculateStrategy(failureMechanism, sectionResult, assessmentSection) + : CreateProbabilisticCalculateStrategy(failureMechanism, sectionResult); + } + + private static ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateProbabilisticCalculateStrategy( + PipingFailureMechanism failureMechanism, + AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult) + { + return new ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( + sectionResult, failureMechanism.Calculations.OfType()); + } + + private static SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateSemiProbabilisticCalculateStrategy( + PipingFailureMechanism failureMechanism, + AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult, + IAssessmentSection assessmentSection) + { + return new SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( + sectionResult, failureMechanism.Calculations.OfType(), + failureMechanism, assessmentSection); + } + } +} \ No newline at end of file Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs =================================================================== diff -u -r0f258c9a05ea883ecca0e68724e9cd39c7cc5987 -r4fa486586ff8fc89759e91d6b4ca09833e5a4b94 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 0f258c9a05ea883ecca0e68724e9cd39c7cc5987) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingFailureMechanismResultView.cs (.../PipingFailureMechanismResultView.cs) (revision 4fa486586ff8fc89759e91d6b4ca09833e5a4b94) @@ -120,11 +120,12 @@ protected override AdoptableWithProfileProbabilityFailureMechanismSectionResultRow CreateFailureMechanismSectionResultRow(AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult) { - PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection = GetScenarioConfigurationForSection(sectionResult); + PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection = FailureMechanism.GetScenarioConfigurationForSection(sectionResult); return new AdoptableWithProfileProbabilityFailureMechanismSectionResultRow( sectionResult, - CreateCalculateStrategy(sectionResult, scenarioConfigurationForSection), + PipingFailureMechanismSectionResultCalculateProbabilityStrategyFactory.CreateCalculateStrategy( + FailureMechanism, sectionResult, scenarioConfigurationForSection, assessmentSection), CreateErrorProvider(sectionResult, scenarioConfigurationForSection), CreateLengthEffectProvider(sectionResult), assessmentSection, @@ -202,7 +203,7 @@ private IFailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider CreateErrorProvider( FailureMechanismSectionResult sectionResult, PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection) { - IEnumerable> calculationScenarios = ScenarioConfigurationTypeIsSemiProbabilistic(scenarioConfigurationForSection) + IEnumerable> calculationScenarios = FailureMechanism.ScenarioConfigurationTypeIsSemiProbabilistic(scenarioConfigurationForSection) ? (IEnumerable>) FailureMechanism.Calculations.OfType() : FailureMechanism.Calculations.OfType(); @@ -211,41 +212,6 @@ (scenario, lineSegments) => scenario.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)); } - private IFailureMechanismSectionResultCalculateProbabilityStrategy CreateCalculateStrategy(AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult, - PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection) - { - return ScenarioConfigurationTypeIsSemiProbabilistic(scenarioConfigurationForSection) - ? (IFailureMechanismSectionResultCalculateProbabilityStrategy) CreateSemiProbabilisticCalculateStrategy(sectionResult) - : CreateProbabilisticCalculateStrategy(sectionResult); - } - - private ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateProbabilisticCalculateStrategy(AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult) - { - return new ProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( - sectionResult, FailureMechanism.Calculations.OfType()); - } - - private SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy CreateSemiProbabilisticCalculateStrategy(AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult) - { - return new SemiProbabilisticPipingFailureMechanismSectionResultCalculateProbabilityStrategy( - sectionResult, FailureMechanism.Calculations.OfType(), - FailureMechanism, assessmentSection); - } - - private PipingScenarioConfigurationPerFailureMechanismSection GetScenarioConfigurationForSection(FailureMechanismSectionResult sectionResult) - { - return FailureMechanism.ScenarioConfigurationsPerFailureMechanismSection - .Single(sc => sc.Section.StartPoint.Equals(sectionResult.Section.StartPoint) - && sc.Section.EndPoint.Equals(sectionResult.Section.EndPoint)); - } - - private bool ScenarioConfigurationTypeIsSemiProbabilistic(PipingScenarioConfigurationPerFailureMechanismSection scenarioConfigurationForSection) - { - return FailureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.SemiProbabilistic - || FailureMechanism.ScenarioConfigurationType == PipingScenarioConfigurationType.PerFailureMechanismSection - && scenarioConfigurationForSection.ScenarioConfigurationType == PipingScenarioConfigurationPerFailureMechanismSectionType.SemiProbabilistic; - } - private ILengthEffectProvider CreateLengthEffectProvider(FailureMechanismSectionResult sectionResult) { return new LengthEffectProvider(