Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs
===================================================================
diff -u -r5f1c70d7eea83fca2ef6305a87a8098820ded1d9 -r02bec66c8cb3d6e26100d11cb842428144f91965
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision 5f1c70d7eea83fca2ef6305a87a8098820ded1d9)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Parsers/IllustrationPoints/IllustrationPointsParser.cs (.../IllustrationPointsParser.cs) (revision 02bec66c8cb3d6e26100d11cb842428144f91965)
@@ -112,6 +112,11 @@
}
}
+ ///
+ /// Proceeds to the next result in the data set.
+ ///
+ /// The database reader.
+ /// Thrown there was no other result in the data set.
private static void ProceedOrThrow(HydraRingDatabaseReader reader)
{
if (!reader.NextResult())
@@ -147,8 +152,10 @@
int windDirectionId = Convert.ToInt32(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.WindDirectionId]);
int closingSituationid = Convert.ToInt32(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.ClosingSituationId]);
string name = Convert.ToString(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.StochastName]);
- double duration = Convert.ToDouble(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.Duration]);
- double alpha = Convert.ToDouble(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.AlphaValue]);
+ double duration = ConvertToDouble(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.Duration],
+ IllustrationPointsDatabaseConstants.Duration);
+ double alpha = ConvertToDouble(readFaultTreeAlphaValue[IllustrationPointsDatabaseConstants.AlphaValue],
+ IllustrationPointsDatabaseConstants.AlphaValue);
var key = new ThreeKeyIndex(windDirectionId, closingSituationid, faultTreeId);
if (!faultTreeStochasts.ContainsKey(key))
@@ -172,8 +179,8 @@
int faultTreeId = Convert.ToInt32(readFaultTreeBetaValue[IllustrationPointsDatabaseConstants.FaultTreeId]);
int windDirectionId = Convert.ToInt32(readFaultTreeBetaValue[IllustrationPointsDatabaseConstants.WindDirectionId]);
int closingSituationid = Convert.ToInt32(readFaultTreeBetaValue[IllustrationPointsDatabaseConstants.ClosingSituationId]);
- double beta = Convert.ToDouble(readFaultTreeBetaValue[IllustrationPointsDatabaseConstants.BetaValue]);
-
+ double beta = ConvertToDouble(readFaultTreeBetaValue[IllustrationPointsDatabaseConstants.BetaValue],
+ IllustrationPointsDatabaseConstants.BetaValue);
var threeKeyIndex = new ThreeKeyIndex(windDirectionId, closingSituationid, faultTreeId);
if (faultTreeBetaValues.ContainsKey(threeKeyIndex))
{
@@ -191,9 +198,12 @@
int windDirectionId = Convert.ToInt32(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.WindDirectionId]);
int closingSituationid = Convert.ToInt32(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.ClosingSituationId]);
string name = Convert.ToString(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.StochastName]);
- double duration = Convert.ToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.Duration]);
- double alpha = Convert.ToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.AlphaValue]);
- double realization = Convert.ToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.Realization]);
+ double duration = ConvertToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.Duration],
+ IllustrationPointsDatabaseConstants.Duration);
+ double alpha = ConvertToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.AlphaValue],
+ IllustrationPointsDatabaseConstants.AlphaValue);
+ double realization = ConvertToDouble(readSubMechanismAlphaValue[IllustrationPointsDatabaseConstants.Realization],
+ IllustrationPointsDatabaseConstants.Realization);
var key = new ThreeKeyIndex(windDirectionId, closingSituationid, subMechanismId);
if (!subMechanismStochasts.ContainsKey(key))
@@ -237,7 +247,8 @@
int windDirectionId = Convert.ToInt32(readSubMechanismResult[IllustrationPointsDatabaseConstants.WindDirectionId]);
int closingSituationid = Convert.ToInt32(readSubMechanismResult[IllustrationPointsDatabaseConstants.ClosingSituationId]);
string description = Convert.ToString(readSubMechanismResult[IllustrationPointsDatabaseConstants.IllustrationPointResultDescription]);
- double value = Convert.ToDouble(readSubMechanismResult[IllustrationPointsDatabaseConstants.IllustrationPointResultValue]);
+ double value = ConvertToDouble(readSubMechanismResult[IllustrationPointsDatabaseConstants.IllustrationPointResultValue],
+ IllustrationPointsDatabaseConstants.IllustrationPointResultValue);
var key = new ThreeKeyIndex(windDirectionId, closingSituationid, subMechanismId);
if (!subMechanismResults.ContainsKey(key))
@@ -367,16 +378,35 @@
{
throw new HydraRingFileParserException(Resources.IllustrationPointsParser_Parse_Multiple_values_for_beta_of_illustration_point_found);
}
- Output.Beta = Convert.ToDouble(betaValues[0][IllustrationPointsDatabaseConstants.BetaValue]);
+ Output.Beta = ConvertToDouble(betaValues[0][IllustrationPointsDatabaseConstants.BetaValue],
+ IllustrationPointsDatabaseConstants.BetaValue);
}
+ ///
+ /// Converts to .
+ ///
+ ///
+ /// The identifier.
+ /// The converted double.
+ /// Throw when
+ /// is .
+ ///
+ private static double ConvertToDouble(object doubleValue, string identifier)
+ {
+ if (doubleValue.Equals(DBNull.Value))
+ {
+ throw new HydraRingFileParserException(string.Format(Resources.IllustrationPointsParser_Parse_Column_0_is_Null, identifier));
+ }
+ return Convert.ToDouble(doubleValue);
+ }
+
private void ParseGeneralAlphaValues(HydraRingDatabaseReader reader)
{
Output.Stochasts = GetIterator(reader).Select(a => new Stochast
{
Name = Convert.ToString(a[IllustrationPointsDatabaseConstants.StochastName]),
- Duration = Convert.ToDouble(a[IllustrationPointsDatabaseConstants.Duration]),
- Alpha = Convert.ToDouble(a[IllustrationPointsDatabaseConstants.AlphaValue])
+ Duration = ConvertToDouble(a[IllustrationPointsDatabaseConstants.Duration], IllustrationPointsDatabaseConstants.Duration),
+ Alpha = ConvertToDouble(a[IllustrationPointsDatabaseConstants.AlphaValue], IllustrationPointsDatabaseConstants.AlphaValue)
}).ToArray();
}
@@ -395,7 +425,8 @@
{
int key = Convert.ToInt32(readWindDirection[IllustrationPointsDatabaseConstants.WindDirectionId]);
string name = Convert.ToString(readWindDirection[IllustrationPointsDatabaseConstants.WindDirectionName]);
- double angle = Convert.ToDouble(readWindDirection[IllustrationPointsDatabaseConstants.WindDirectionAngle]);
+ double angle = ConvertToDouble(readWindDirection[IllustrationPointsDatabaseConstants.WindDirectionAngle],
+ IllustrationPointsDatabaseConstants.WindDirectionAngle);
bool isGoverning = Convert.ToBoolean(readWindDirection[IllustrationPointsDatabaseConstants.IsGoverning]);
var windDirection = new WindDirection(name, angle);
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs
===================================================================
diff -u -rb75888ac4a86ce24369ba0dad93cfe5bcd3fc794 -r02bec66c8cb3d6e26100d11cb842428144f91965
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision b75888ac4a86ce24369ba0dad93cfe5bcd3fc794)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 02bec66c8cb3d6e26100d11cb842428144f91965)
@@ -129,6 +129,15 @@
}
///
+ /// Looks up a localized string similar to Er is geen waarde gevonden voor kolom '{0}' tijdens het uitlezen van de illustratiepunten in de uitvoer database..
+ ///
+ internal static string IllustrationPointsParser_Parse_Column_0_is_Null {
+ get {
+ return ResourceManager.GetString("IllustrationPointsParser_Parse_Column_0_is_Null", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to Er konden geen illustratiepunten worden uitgelezen..
///
internal static string IllustrationPointsParser_Parse_Could_not_read_illustration_point_data {
Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx
===================================================================
diff -u -rb75888ac4a86ce24369ba0dad93cfe5bcd3fc794 -r02bec66c8cb3d6e26100d11cb842428144f91965
--- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision b75888ac4a86ce24369ba0dad93cfe5bcd3fc794)
+++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Properties/Resources.resx (.../Resources.resx) (revision 02bec66c8cb3d6e26100d11cb842428144f91965)
@@ -153,4 +153,7 @@
Meerdere waarden 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.
+
\ No newline at end of file
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs
===================================================================
diff -u -r0fd23ff8e68b5f0d18d344d104bc68216cb49b51 -r02bec66c8cb3d6e26100d11cb842428144f91965
--- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs (.../IllustrationPointsParserTest.cs) (revision 0fd23ff8e68b5f0d18d344d104bc68216cb49b51)
+++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Parsers/IllustrationPoints/IllustrationPointsParserTest.cs (.../IllustrationPointsParserTest.cs) (revision 02bec66c8cb3d6e26100d11cb842428144f91965)
@@ -129,6 +129,28 @@
}
[Test]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.AlphaValue), IllustrationPointsDatabaseConstants.AlphaValue)]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.BetaValue), IllustrationPointsDatabaseConstants.BetaValue)]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.Duration), IllustrationPointsDatabaseConstants.Duration)]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.IllustrationPointResultValue), IllustrationPointsDatabaseConstants.IllustrationPointResultValue)]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.Realization), IllustrationPointsDatabaseConstants.Realization)]
+ [TestCase(nameof(IllustrationPointsDatabaseConstants.WindDirectionAngle), IllustrationPointsDatabaseConstants.WindDirectionAngle)]
+ public void Parse_ValueNullInDatabase_ThrowsHydraRingFileParserException(string directoryIdentifier, string identifier)
+ {
+ // Setup
+ string path = Path.Combine(testDirectory, $"Null{directoryIdentifier}");
+ var parser = new IllustrationPointsParser();
+
+ // Call
+ TestDelegate test = () => parser.Parse(path, 1);
+
+ // Assert
+ var exception = Assert.Throws(test);
+ Assert.AreEqual($"Er is geen waarde gevonden voor kolom '{identifier}' tijdens het " +
+ "uitlezen van de illustratiepunten in de uitvoer database.", exception.Message);
+ }
+
+ [Test]
public void Parse_ValidStructuresStabilityData_SetsOutputAsExpected()
{
// Setup
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullAlphaValue/1-output.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullBetaValue/1-output.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullDuration/1-output.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullIllustrationPointResultValue/1-output.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullRealization/1-output.sqlite
===================================================================
diff -u
Binary files differ
Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/test-data/Parsers/IllustrationPointsParser/NullWindDirectionAngle/1-output.sqlite
===================================================================
diff -u
Binary files differ