Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs =================================================================== diff -u -rbe6a13ac1251d94b796612190233ac7a380b328e -r66a40e718fdf95596f8897d81af4a1a0144cfae4 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision be6a13ac1251d94b796612190233ac7a380b328e) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision 66a40e718fdf95596f8897d81af4a1a0144cfae4) @@ -35,23 +35,28 @@ /// public class IllustrationPointsParser : IHydraRingFileParser { - /// - /// The result of parsing the illustration points in the Hydra-Ring database. - /// - public readonly GeneralResult Output = new GeneralResult(); - private readonly Dictionary> faultTreeStochasts = new Dictionary>(); private readonly Dictionary faultTreeBetaValues = new Dictionary(); private readonly Dictionary> subMechanismStochasts = new Dictionary>(); private readonly Dictionary subMechanismBetaValues = new Dictionary(); private readonly Dictionary> subMechanismResults = new Dictionary>(); + private double beta = double.NaN; + private WindDirection governingWindDirection; + private IEnumerable stochasts; + private Dictionary rootIllustrationPoints; + private IDictionary windDirections; private IDictionary closingSituations; private IDictionary subMechanisms; private IDictionary faultTrees; + /// + /// The result of parsing the illustration points in the Hydra-Ring database. + /// + public GeneralResult Output { get; private set; } + public void Parse(string workingDirectory, int sectionId) { string query = string.Concat( @@ -106,10 +111,15 @@ ParseSubMechanismResults(reader); ProceedOrThrow(reader); ParseFaultTree(reader); - if (Output.IllustrationPoints == null) + if (rootIllustrationPoints == null) { SetSubMechanismAsRootIllustrationPoint(); } + + if (governingWindDirection != null && stochasts != null && rootIllustrationPoints != null) + { + Output = new GeneralResult(beta, governingWindDirection, stochasts, rootIllustrationPoints); + } } /// @@ -127,7 +137,7 @@ private void SetSubMechanismAsRootIllustrationPoint() { - var rootIllustrationPoints = new Dictionary(); + rootIllustrationPoints = new Dictionary(); foreach (Tuple windDirectionClosingSituation in GetAllWindDirectionClosingSituationCombinations()) { string submechanismIllustrationPointName = subMechanisms.First().Value; @@ -147,7 +157,6 @@ rootIllustrationPoints[CreateFaultTreeKey(windDirectionClosingSituation)] = new IllustrationPointTreeNode(illustrationPoint); } - Output.IllustrationPoints = rootIllustrationPoints; } private void ParseFaultTreeAlphaValues(HydraRingDatabaseReader reader) @@ -265,16 +274,14 @@ { List> results = CreateResultTuples(readFaultTrees); - var rootIllustrationPoints = new Dictionary(); + rootIllustrationPoints = new Dictionary(); foreach (Tuple windDirectionClosingSituation in windDirectionClosingSituations) { Tuple root = results.Single(r => !r.Item1.HasValue); rootIllustrationPoints[CreateFaultTreeKey(windDirectionClosingSituation)] = BuildFaultTree(windDirectionClosingSituation, root.Item2, root.Item4, results); } - - Output.IllustrationPoints = rootIllustrationPoints; } } @@ -375,8 +382,8 @@ { throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_Multiple_values_for_beta_of_illustration_point_found); } - Output.Beta = ConvertToDouble(betaValues[0][IllustrationPointsDatabaseConstants.BetaValue], - IllustrationPointsDatabaseConstants.BetaValue); + beta = ConvertToDouble(betaValues[0][IllustrationPointsDatabaseConstants.BetaValue], + IllustrationPointsDatabaseConstants.BetaValue); } /// @@ -399,7 +406,7 @@ private void ParseGeneralAlphaValues(HydraRingDatabaseReader reader) { - Output.Stochasts = GetIterator(reader).Select(a => + stochasts = GetIterator(reader).Select(a => { string name = Convert.ToString(a[IllustrationPointsDatabaseConstants.StochastName]); double duration = ConvertToDouble(a[IllustrationPointsDatabaseConstants.Duration], IllustrationPointsDatabaseConstants.Duration); @@ -432,7 +439,7 @@ if (isGoverning) { - Output.GoverningWind = windDirection; + governingWindDirection = windDirection; } } }