Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Settings/SubMechanismSettingsProvider.cs =================================================================== diff -u -rdd33f3b9d039c570742b8233da23326538c848cf -rfe9af51d0ecee9dc64884d9370cf951fe787a8bc --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Settings/SubMechanismSettingsProvider.cs (.../SubMechanismSettingsProvider.cs) (revision dd33f3b9d039c570742b8233da23326538c848cf) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Settings/SubMechanismSettingsProvider.cs (.../SubMechanismSettingsProvider.cs) (revision fe9af51d0ecee9dc64884d9370cf951fe787a8bc) @@ -21,6 +21,8 @@ using System.Collections.Generic; using Ringtoets.HydraRing.Calculation.Data; +using Ringtoets.HydraRing.Calculation.IO; +using Ringtoets.HydraRing.Calculation.Properties; namespace Ringtoets.HydraRing.Calculation.Settings { @@ -29,13 +31,45 @@ /// public class SubMechanismSettingsProvider { - private readonly IDictionary> defaultSubMechanismSettings; + private readonly IDictionary>> fileSubMechanismSettings; + private readonly FailureMechanismDefaultsProvider failureMechanismDefaultsProvider; + private IDictionary> defaultSubMechanismSettings; /// /// Creates a new instance of the class. /// public SubMechanismSettingsProvider() { + failureMechanismDefaultsProvider = new FailureMechanismDefaultsProvider(); + + InitializeDefaultSubMechanismSettings(); + + fileSubMechanismSettings = new HydraRingSettingsCsvReader(Resources.HydraRingSettings).ReadSettings(); + } + + /// + /// Returns based on the provided and sub mechanism id. + /// + /// The to obtain the for. + /// The sub mechanism id to obtain the for. + /// The ring id to obtain the for. + /// The corresponding to the provided and sub mechanism id. + public SubMechanismSettings GetSubMechanismSettings(HydraRingFailureMechanismType failureMechanismType, int subMechanismId, string ringId) + { + var mechanismId = failureMechanismDefaultsProvider.GetFailureMechanismDefaults(failureMechanismType).MechanismId; + + if (fileSubMechanismSettings.ContainsKey(mechanismId) && + fileSubMechanismSettings[mechanismId].ContainsKey(subMechanismId) && + fileSubMechanismSettings[mechanismId][subMechanismId].ContainsKey(ringId)) + { + return fileSubMechanismSettings[mechanismId][subMechanismId][ringId]; + } + + return defaultSubMechanismSettings[failureMechanismType][subMechanismId]; + } + + private void InitializeDefaultSubMechanismSettings() + { defaultSubMechanismSettings = new Dictionary> { { @@ -177,16 +211,5 @@ } }; } - - /// - /// Returns based on the provided and sub mechanism id. - /// - /// The to obtain the for. - /// The sub mechanism id to obtain the for. - /// The corresponding to the provided and sub mechanism id. - public SubMechanismSettings GetSubMechanismSettings(HydraRingFailureMechanismType failureMechanismType, int subMechanismId) - { - return defaultSubMechanismSettings[failureMechanismType][subMechanismId]; - } } } \ No newline at end of file