Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj =================================================================== diff -u -r826 -r865 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 826) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 865) @@ -92,6 +92,7 @@ + Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs =================================================================== diff -u -r816 -r865 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 816) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 865) @@ -20,7 +20,7 @@ /// /// Interface to implement external failure mechanisms /// - interface IKernelWrapper + public interface IKernelWrapper { /// /// Prepares the failure mechanism input based on general dam kernel input. Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs =================================================================== diff -u -r843 -r865 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 843) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 865) @@ -47,7 +47,8 @@ /// public List Execute(DamProjectData damProjectData) { - IKernelWrapper kernelWrapper = CreateKernelWrapper(damProjectData.DamProjectCalculationSpecification.CurrentSpecification); + IKernelWrapper kernelWrapper = KernelWrapperHelper.CreateKernelWrapper(damProjectData.DamProjectCalculationSpecification.CurrentSpecification); + if (kernelWrapper == null) { throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented); @@ -118,40 +119,5 @@ return calculationMessages; } - private IKernelWrapper CreateKernelWrapper(DamFailureMechanismeCalculationSpecification currentSpecification) - { - IKernelWrapper kernelWrapper = null; - switch (currentSpecification.FailureMechanismSystemType) - { - case FailureMechanismSystemType.HorizontalBalance: - throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented); - case FailureMechanismSystemType.StabilityOutside: - kernelWrapper = new DamMacroStabilityOutwardsKernelWrapper(); - var damMacroStabilityOutwardsKernelWrapper = (DamMacroStabilityOutwardsKernelWrapper) kernelWrapper; - damMacroStabilityOutwardsKernelWrapper.FailureMechanismParametersMStab = currentSpecification.FailureMechanismParametersMStab; - break; - case FailureMechanismSystemType.StabilityInside: - kernelWrapper = new DamMacroStabilityInwardsKernelWrapper(); - var damMacroStabilityKernelWrapper = (DamMacroStabilityInwardsKernelWrapper) kernelWrapper; - damMacroStabilityKernelWrapper.FailureMechanismParametersMStab = currentSpecification.FailureMechanismParametersMStab; - break; - case FailureMechanismSystemType.Piping: - switch (currentSpecification.PipingModelType) - { - case PipingModelType.SellmeijerVnk: - case PipingModelType.Wti2017: - throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented); - case PipingModelType.Bligh: - kernelWrapper = new DamPipingBlighKernelWrapper(); - break; - case PipingModelType.Sellmeijer4Forces: - kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); - break; - } - break; - } - return kernelWrapper; - } - } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/KernelWrapperHelper.cs =================================================================== diff -u --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/KernelWrapperHelper.cs (revision 0) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/KernelWrapperHelper.cs (revision 865) @@ -0,0 +1,57 @@ +using System; +using Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStabilityInwards; +using Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStabilityOutwards; +using Deltares.DamEngine.Calculators.KernelWrappers.DamPipingBligh; +using Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijer4Forces; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; +using Deltares.DamEngine.Calculators.Properties; +using Deltares.DamEngine.Data.General; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.Common +{ + public class KernelWrapperHelper + { + /// + /// Creates the kernel wrapper. + /// Everything that is non-generic and failure mechanism specific should be put here + /// + /// The current failure mechanism specification. + /// + /// + /// + public static IKernelWrapper CreateKernelWrapper(DamFailureMechanismeCalculationSpecification currentSpecification) + { + IKernelWrapper kernelWrapper = null; + switch (currentSpecification.FailureMechanismSystemType) + { + case FailureMechanismSystemType.HorizontalBalance: + throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented); + case FailureMechanismSystemType.StabilityOutside: + kernelWrapper = new DamMacroStabilityOutwardsKernelWrapper(); + var damMacroStabilityOutwardsKernelWrapper = (DamMacroStabilityOutwardsKernelWrapper)kernelWrapper; + damMacroStabilityOutwardsKernelWrapper.FailureMechanismParametersMStab = currentSpecification.FailureMechanismParametersMStab; + break; + case FailureMechanismSystemType.StabilityInside: + kernelWrapper = new DamMacroStabilityInwardsKernelWrapper(); + var damMacroStabilityKernelWrapper = (DamMacroStabilityInwardsKernelWrapper)kernelWrapper; + damMacroStabilityKernelWrapper.FailureMechanismParametersMStab = currentSpecification.FailureMechanismParametersMStab; + break; + case FailureMechanismSystemType.Piping: + switch (currentSpecification.PipingModelType) + { + case PipingModelType.SellmeijerVnk: + case PipingModelType.Wti2017: + throw new NotImplementedException(Resources.DesignCalculatorKernelNotImplemented); + case PipingModelType.Bligh: + kernelWrapper = new DamPipingBlighKernelWrapper(); + break; + case PipingModelType.Sellmeijer4Forces: + kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); + break; + } + break; + } + return kernelWrapper; + } + } +}