Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointQueries.cs =================================================================== diff -u -r0fd23ff8e68b5f0d18d344d104bc68216cb49b51 -r2cfb421b8f27d648e22b13453ae1f2d9deb54f65 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointQueries.cs (.../IllustrationPointQueries.cs) (revision 0fd23ff8e68b5f0d18d344d104bc68216cb49b51) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointQueries.cs (.../IllustrationPointQueries.cs) (revision 2cfb421b8f27d648e22b13453ae1f2d9deb54f65) @@ -26,8 +26,8 @@ /// internal static class IllustrationPointQueries { - private const string firstPeriod = "PeriodId = (SELECT MIN(PeriodId) FROM DesignPointResults)"; - private const string lastIteration = "OuterIterationId = (SELECT MAX(OuterIterationId) FROM DesignPointResults)"; + private const string firstPeriod = "PeriodId = (SELECT MIN(PeriodId) FROM GoverningWind)"; + private const string lastIteration = "OuterIterationId = (SELECT MAX(OuterIterationId) FROM GoverningWind)"; /// /// Selects all the closing situations. @@ -47,7 +47,8 @@ $"WindDirections.WindDirectionId = GoverningWind.WindDirectionId as {IllustrationPointsDatabaseConstants.IsGoverning} " + "FROM WindDirections " + "JOIN GoverningWind " + - $"WHERE {lastIteration};"; + $"WHERE {lastIteration}" + + $"AND {firstPeriod};"; /// /// Selects all the sub mechanisms. @@ -77,8 +78,7 @@ "FROM DesignAlpha " + "JOIN Stochasts USING(StochastId) " + "WHERE LevelTypeId = 4 " + - $"AND {lastIteration} " + - $"AND {firstPeriod};"; + $"AND {lastIteration};"; /// /// Selects the beta values for a general result. @@ -87,8 +87,7 @@ $"SELECT {IllustrationPointsDatabaseConstants.BetaValue} " + "FROM DesignBeta " + "WHERE LevelTypeId = 4 " + - $"AND {lastIteration} " + - $"AND {firstPeriod};"; + $"AND {lastIteration};"; /// /// Selects the alpha values for each fault tree illustration point. Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs =================================================================== diff -u -rc2c7e9621863d470ddd3a1d5c0e4913844066aae -r2cfb421b8f27d648e22b13453ae1f2d9deb54f65 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision c2c7e9621863d470ddd3a1d5c0e4913844066aae) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision 2cfb421b8f27d648e22b13453ae1f2d9deb54f65) @@ -374,6 +374,11 @@ ICollection> results) { var dataKey = new ThreeKeyIndex(windDirectionClosingSituation.Item1, windDirectionClosingSituation.Item3, faultTreeId); + + if (!faultTreeBetaValues.ContainsKey(dataKey)) + { + throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_No_values_for_beta_of_illustration_point_found); + } var illustrationPoint = new FaultTreeIllustrationPoint(faultTrees[faultTreeId], faultTreeBetaValues[dataKey], combinationType); if (faultTreeStochasts.ContainsKey(dataKey)) { @@ -406,8 +411,13 @@ AddRange(illustrationPointResults, subMechanismResults[dataKey]); } - string submechanismIllustrationPointName = subMechanisms[subMechanismId]; + if (!subMechanismBetaValues.ContainsKey(dataKey)) + { + throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_No_values_for_beta_of_illustration_point_found); + } double subMechanismIllustrationPointBeta = subMechanismBetaValues[dataKey]; + + string submechanismIllustrationPointName = subMechanisms[subMechanismId]; var illustrationPoint = new SubMechanismIllustrationPoint(submechanismIllustrationPointName, illustrationPointStochasts, illustrationPointResults, @@ -437,10 +447,14 @@ private void ParseGeneralBetaValue(HydraRingDatabaseReader reader) { Dictionary[] betaValues = GetIterator(reader).ToArray(); - if (betaValues.Length != 1) + if (betaValues.Length > 1) { throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_Multiple_values_for_beta_of_illustration_point_found); } + if (betaValues.Length == 0) + { + throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_No_values_for_beta_of_illustration_point_found); + } beta = ConvertToDouble(betaValues[0][IllustrationPointsDatabaseConstants.BetaValue], IllustrationPointsDatabaseConstants.BetaValue); } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs =================================================================== diff -u -r6c058f12138b8a73a78eacd10357d9caa81ed67d -r2cfb421b8f27d648e22b13453ae1f2d9deb54f65 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6c058f12138b8a73a78eacd10357d9caa81ed67d) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 2cfb421b8f27d648e22b13453ae1f2d9deb54f65) @@ -158,6 +158,15 @@ } /// + /// Looks up a localized string similar to Geen waarde voor de betrouwbaarheidsindex voor 1 illustratiepunt gevonden in de uitvoer database.. + /// + internal static string IllustrationPointsParser_Parse_No_values_for_beta_of_illustration_point_found { + get { + return ResourceManager.GetString("IllustrationPointsParser_Parse_No_values_for_beta_of_illustration_point_found", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Er is geen resultaat voor overslag en overloop gevonden in de Hydra-Ring uitvoerdatabase.. /// internal static string OvertoppingCalculationWaveHeightParser_No_overtopping_found_in_output_file { Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx =================================================================== diff -u -r6c058f12138b8a73a78eacd10357d9caa81ed67d -r2cfb421b8f27d648e22b13453ae1f2d9deb54f65 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision 6c058f12138b8a73a78eacd10357d9caa81ed67d) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision 2cfb421b8f27d648e22b13453ae1f2d9deb54f65) @@ -150,6 +150,9 @@ Meerdere waarden voor de betrouwbaarheidsindex voor 1 illustratiepunt gevonden in de uitvoer database. + + Geen waarde voor de betrouwbaarheidsindex voor 1 illustratiepunt gevonden in de uitvoer database. + Er is geen waarde gevonden voor kolom '{0}' tijdens het uitlezen van de illustratiepunten in de uitvoer database. Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs =================================================================== diff -u -rc2c7e9621863d470ddd3a1d5c0e4913844066aae -r2cfb421b8f27d648e22b13453ae1f2d9deb54f65 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs (.../IllustrationPointsParserTest.cs) (revision c2c7e9621863d470ddd3a1d5c0e4913844066aae) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs (.../IllustrationPointsParserTest.cs) (revision 2cfb421b8f27d648e22b13453ae1f2d9deb54f65) @@ -129,6 +129,24 @@ } [Test] + [TestCase("NoBetaSubMechanism")] + [TestCase("NoBetaFaultTree")] + [TestCase("NoBetaGeneralResult")] + public void Parse_NoBetaValues_ThrowsHydraRingFileParserException(string workingDirectory) + { + // Setup + string path = Path.Combine(testDirectory, workingDirectory); + var parser = new IllustrationPointsParser(); + + // Call + TestDelegate test = () => parser.Parse(path, 1); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Geen waarde voor de betrouwbaarheidsindex voor 1 illustratiepunt gevonden in de uitvoer database.", exception.Message); + } + + [Test] [TestCase(nameof(IllustrationPointsDatabaseConstants.AlphaValue), IllustrationPointsDatabaseConstants.AlphaValue)] [TestCase(nameof(IllustrationPointsDatabaseConstants.BetaValue), IllustrationPointsDatabaseConstants.BetaValue)] [TestCase(nameof(IllustrationPointsDatabaseConstants.Duration), IllustrationPointsDatabaseConstants.Duration)]