Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs =================================================================== diff -u -r8cdbb1c76ccda6f711ec3bb02339896e7eb660c0 -rc71efcd328d420bd869028dd35d035ff02d98ec2 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 8cdbb1c76ccda6f711ec3bb02339896e7eb660c0) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c71efcd328d420bd869028dd35d035ff02d98ec2) @@ -2545,6 +2545,15 @@ } /// + /// Looks up a localized string similar to Er is een fout opgetreden bij het inlezen van grondlaag '{0}': {1}. + /// + public static string Transform_Error_occurred_when_transforming_SoilLayer_0_errorMessage_1 { + get { + return ResourceManager.GetString("Transform_Error_occurred_when_transforming_SoilLayer_0_errorMessage_1", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Ongeldige waarde voor parameter '{0}'.. /// public static string Transform_Invalid_value_ParameterName_0 { Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx =================================================================== diff -u -r8cdbb1c76ccda6f711ec3bb02339896e7eb660c0 -rc71efcd328d420bd869028dd35d035ff02d98ec2 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision 8cdbb1c76ccda6f711ec3bb02339896e7eb660c0) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision c71efcd328d420bd869028dd35d035ff02d98ec2) @@ -880,4 +880,7 @@ Parameter '{0}' moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0. + + Er is een fout opgetreden bij het inlezen van grondlaag '{0}': {1} + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingSoilLayerTransformer.cs =================================================================== diff -u -r8cdbb1c76ccda6f711ec3bb02339896e7eb660c0 -rc71efcd328d420bd869028dd35d035ff02d98ec2 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingSoilLayerTransformer.cs (.../PipingSoilLayerTransformer.cs) (revision 8cdbb1c76ccda6f711ec3bb02339896e7eb660c0) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingSoilLayerTransformer.cs (.../PipingSoilLayerTransformer.cs) (revision c71efcd328d420bd869028dd35d035ff02d98ec2) @@ -52,18 +52,28 @@ throw new ArgumentNullException(nameof(soilLayer)); } - ValidateStochasticParameters(soilLayer); - - var pipingSoilLayer = new PipingSoilLayer(soilLayer.Top) + try { - IsAquifer = TransformIsAquifer(soilLayer.IsAquifer), - MaterialName = soilLayer.MaterialName, - Color = SoilLayerColorConverter.Convert(soilLayer.Color) - }; + ValidateStochasticParameters(soilLayer); - SetStochasticParameters(pipingSoilLayer, soilLayer); + var pipingSoilLayer = new PipingSoilLayer(soilLayer.Top) + { + IsAquifer = TransformIsAquifer(soilLayer.IsAquifer), + MaterialName = soilLayer.MaterialName, + Color = SoilLayerColorConverter.Convert(soilLayer.Color) + }; - return pipingSoilLayer; + SetStochasticParameters(pipingSoilLayer, soilLayer); + + return pipingSoilLayer; + } + catch (ImportedDataTransformException e) + { + string errorMessage = string.Format(RingtoetsCommonIOResources.Transform_Error_occurred_when_transforming_SoilLayer_0_errorMessage_1, + soilLayer.MaterialName, + e.Message); + throw new ImportedDataTransformException(errorMessage, e); + } } /// @@ -78,11 +88,20 @@ /// in a valid transformed instance. public static IEnumerable Transform(SoilLayer2D soilLayer, double atX, out double bottom) { - bottom = double.MaxValue; - - var soilLayers = new Collection(); - Transform(soilLayer, atX, soilLayers, ref bottom); - return soilLayers; + try + { + bottom = double.MaxValue; + var soilLayers = new Collection(); + Transform(soilLayer, atX, soilLayers, ref bottom); + return soilLayers; + } + catch (ImportedDataTransformException e) + { + string errorMessage = string.Format(RingtoetsCommonIOResources.Transform_Error_occurred_when_transforming_SoilLayer_0_errorMessage_1, + soilLayer.MaterialName, + e.Message); + throw new ImportedDataTransformException(errorMessage, e); + } } /// @@ -173,18 +192,18 @@ /// Sets the values of the stochastic parameters for the given . /// /// The to set the property values for. - /// The to get the properties from. + /// The to get the properties from. /// This method does not perform validation. Use to /// verify whether the distributions for the stochastic parameters are correctly defined. - private static void SetStochasticParameters(PipingSoilLayer pipingSoilLayer, SoilLayerBase soilLayer1D) + private static void SetStochasticParameters(PipingSoilLayer pipingSoilLayer, SoilLayerBase soilLayer) { - pipingSoilLayer.BelowPhreaticLevelMean = soilLayer1D.BelowPhreaticLevelMean; - pipingSoilLayer.BelowPhreaticLevelDeviation = soilLayer1D.BelowPhreaticLevelDeviation; - pipingSoilLayer.BelowPhreaticLevelShift = soilLayer1D.BelowPhreaticLevelShift; - pipingSoilLayer.DiameterD70Mean = soilLayer1D.DiameterD70Mean; - pipingSoilLayer.DiameterD70CoefficientOfVariation = soilLayer1D.DiameterD70CoefficientOfVariation; - pipingSoilLayer.PermeabilityMean = soilLayer1D.PermeabilityMean; - pipingSoilLayer.PermeabilityCoefficientOfVariation = soilLayer1D.PermeabilityCoefficientOfVariation; + pipingSoilLayer.BelowPhreaticLevelMean = soilLayer.BelowPhreaticLevelMean; + pipingSoilLayer.BelowPhreaticLevelDeviation = soilLayer.BelowPhreaticLevelDeviation; + pipingSoilLayer.BelowPhreaticLevelShift = soilLayer.BelowPhreaticLevelShift; + pipingSoilLayer.DiameterD70Mean = soilLayer.DiameterD70Mean; + pipingSoilLayer.DiameterD70CoefficientOfVariation = soilLayer.DiameterD70CoefficientOfVariation; + pipingSoilLayer.PermeabilityMean = soilLayer.PermeabilityMean; + pipingSoilLayer.PermeabilityCoefficientOfVariation = soilLayer.PermeabilityCoefficientOfVariation; } private static bool HeightInInnerLoop(Tuple tuple, double height) Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilLayerTransformerTest.cs =================================================================== diff -u -r8cdbb1c76ccda6f711ec3bb02339896e7eb660c0 -rc71efcd328d420bd869028dd35d035ff02d98ec2 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilLayerTransformerTest.cs (.../PipingSoilLayerTransformerTest.cs) (revision 8cdbb1c76ccda6f711ec3bb02339896e7eb660c0) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilLayerTransformerTest.cs (.../PipingSoilLayerTransformerTest.cs) (revision c71efcd328d420bd869028dd35d035ff02d98ec2) @@ -95,7 +95,9 @@ // Assert var exception = Assert.Throws(call); - Assert.AreEqual("Ongeldige waarde voor parameter 'Is aquifer'.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + "Ongeldige waarde voor parameter 'Is aquifer'."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -195,15 +197,18 @@ // Setup var layer = new SoilLayer1D(0.0) { - BelowPhreaticLevelDistributionType = -1 + BelowPhreaticLevelDistributionType = -1, + MaterialName = nameof(SoilLayer1D) }; // Call TestDelegate test = () => PipingSoilLayerTransformer.Transform(layer); // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual("Parameter 'Verzadigd gewicht' moet verschoven lognormaal verdeeld zijn.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + "Parameter 'Verzadigd gewicht' moet verschoven lognormaal verdeeld zijn."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -215,7 +220,9 @@ // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual($"Parameter '{parameter}' moet lognormaal verdeeld zijn.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Parameter '{parameter}' moet lognormaal verdeeld zijn."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -227,7 +234,9 @@ // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual($"Parameter '{parameter}' moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Parameter '{parameter}' moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -385,7 +394,9 @@ // Assert var exception = Assert.Throws(call); - Assert.AreEqual("Ongeldige waarde voor parameter 'Is aquifer'.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + "Ongeldige waarde voor parameter 'Is aquifer'."); + Assert.AreEqual(expectedMessage, exception.Message); Assert.IsNull(pipingSoilLayers); } @@ -930,7 +941,9 @@ // Assert var exception = Assert.Throws(test); - Assert.AreEqual($"Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {atX}.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {atX}."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -963,7 +976,9 @@ // Assert var exception = Assert.Throws(test); - Assert.AreEqual($"Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {atX}.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D laag verticaal lopen op de gekozen positie: x = {atX}."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -981,7 +996,9 @@ // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual("Parameter 'Verzadigd gewicht' moet verschoven lognormaal verdeeld zijn.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + "Parameter 'Verzadigd gewicht' moet verschoven lognormaal verdeeld zijn."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -996,7 +1013,9 @@ // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual($"Parameter '{parameter}' moet lognormaal verdeeld zijn.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Parameter '{parameter}' moet lognormaal verdeeld zijn."); + Assert.AreEqual(expectedMessage, exception.Message); } [Test] @@ -1011,7 +1030,9 @@ // Assert Exception exception = Assert.Throws(test); - Assert.AreEqual($"Parameter '{parameter}' moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0.", exception.Message); + string expectedMessage = CreateExpectedErrorMessage(layer.MaterialName, + $"Parameter '{parameter}' moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0."); + Assert.AreEqual(expectedMessage, exception.Message); } private static SoilLayer2D CreateValidConfiguredSoilLayer2D(double x1, double x3) @@ -1108,6 +1129,11 @@ ).SetName(string.Format(testNameFormat, typeName)); } + private static string CreateExpectedErrorMessage(string materialName, string errorMessage) + { + return $"Er is een fout opgetreden bij het inlezen van grondlaag '{materialName}': {errorMessage}"; + } + private static IEnumerable GetColorCases() { yield return new TestCaseData(null, Color.Empty) Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilProfileTransformerTest.cs =================================================================== diff -u -r94cb41fb18a59fc737dd3bcaf0e1898a3fadcaa5 -rc71efcd328d420bd869028dd35d035ff02d98ec2 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilProfileTransformerTest.cs (.../PipingSoilProfileTransformerTest.cs) (revision 94cb41fb18a59fc737dd3bcaf0e1898a3fadcaa5) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingSoilProfileTransformerTest.cs (.../PipingSoilProfileTransformerTest.cs) (revision c71efcd328d420bd869028dd35d035ff02d98ec2) @@ -153,7 +153,8 @@ // Assert var exception = Assert.Throws(test); - string message = "Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D " + + string message = $"Er is een fout opgetreden bij het inlezen van grondlaag '{layer.MaterialName}': " + + "Er kan geen 1D-profiel bepaald worden wanneer segmenten in een 2D " + $"laag verticaal lopen op de gekozen positie: x = {atX}."; Assert.AreEqual(message, exception.Message); }