Index: Core/Common/src/Core.Common.IO/Readers/SqLiteDatabaseReaderBase.cs =================================================================== diff -u -r261d8e56f76b7bb4f5c5be7082bc3dfcb281657c -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Core/Common/src/Core.Common.IO/Readers/SqLiteDatabaseReaderBase.cs (.../SqLiteDatabaseReaderBase.cs) (revision 261d8e56f76b7bb4f5c5be7082bc3dfcb281657c) +++ Core/Common/src/Core.Common.IO/Readers/SqLiteDatabaseReaderBase.cs (.../SqLiteDatabaseReaderBase.cs) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -111,7 +111,7 @@ /// Moves to and reads the next result set in multiple row-returning SQL command. /// /// The to process. - /// True if the command was successful and a new result set is available, false otherwise. + /// true if the command was successful and a new result set is available, false otherwise. protected static bool MoveNext(IDataReader sqliteDataReader) { return sqliteDataReader.Read() || sqliteDataReader.NextResult() && sqliteDataReader.Read(); Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs =================================================================== diff -u -ree2ed070a1327bf82c07adb56df4f58185b9ce98 -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ee2ed070a1327bf82c07adb56df4f58185b9ce98) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -1685,15 +1685,6 @@ } /// - /// Looks up a localized string similar to Het uitlezen van de ondergrondschematisatie is mislukt.. - /// - public static string SoilProfile1DReader_ReadSoilProfile_Failed_to_construct_profile_from_read_data { - get { - return ResourceManager.GetString("SoilProfile1DReader_ReadSoilProfile_Failed_to_construct_profile_from_read_data", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database.. /// public static string SoilProfileReader_Critical_Unexpected_value_on_column { Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx =================================================================== diff -u -ree2ed070a1327bf82c07adb56df4f58185b9ce98 -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision ee2ed070a1327bf82c07adb56df4f58185b9ce98) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -844,9 +844,6 @@ Er zijn geen stochastische ondergrondmodellen gevonden die horen bij het faalmechanisme. - - Het uitlezen van de ondergrondschematisatie is mislukt. - Het stochastische ondergrondmodel met '{0}' als faalmechanisme type is niet ondersteund. Alleen stochastische ondergrondmodellen met '{1}' als faalmechanisme type zijn ondersteund. Index: Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile1DReader.cs =================================================================== diff -u -rd0d3ed3067ec66c52283bd4d1c44011b1a412492 -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile1DReader.cs (.../SoilProfile1DReader.cs) (revision d0d3ed3067ec66c52283bd4d1c44011b1a412492) +++ Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile1DReader.cs (.../SoilProfile1DReader.cs) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -165,22 +165,11 @@ throw; } - try - { - MoveToNextProfile(criticalProperties.ProfileId); - return new SoilProfile1D(criticalProperties.ProfileId, - criticalProperties.ProfileName, - properties.Bottom, - soilLayers); - } - catch (ArgumentException exception) - { - MoveToNextProfile(criticalProperties.ProfileId); - throw new SoilProfileReadException( - Resources.SoilProfile1DReader_ReadSoilProfile_Failed_to_construct_profile_from_read_data, - criticalProperties.ProfileName, - exception); - } + MoveToNextProfile(criticalProperties.ProfileId); + return new SoilProfile1D(criticalProperties.ProfileId, + criticalProperties.ProfileName, + properties.Bottom, + soilLayers); } private void PrepareReader() Index: Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs =================================================================== diff -u -r6ef5e439a6d9f40ebd9926251945e0935fbbc314 -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs (.../SoilProfile2DReader.cs) (revision 6ef5e439a6d9f40ebd9926251945e0935fbbc314) +++ Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs (.../SoilProfile2DReader.cs) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -174,39 +174,31 @@ var soilLayerGeometryLookup = new Dictionary(); long soilProfileId = criticalProperties.ProfileId; + var properties = new RequiredProfileProperties(this, criticalProperties.ProfileName); try { - var properties = new RequiredProfileProperties(this, criticalProperties.ProfileName); - var geometryReader = new SoilLayer2DGeometryReader(); for (var i = 1; i <= criticalProperties.LayerCount; i++) { ReadSoilLayerGeometryFrom(this, geometryReader, criticalProperties.ProfileName, soilLayerGeometryLookup); MoveNext(); } - - return new SoilProfile2D(soilProfileId, - criticalProperties.ProfileName, - GetHierarchicallyOrderedSoilLayers(soilLayerGeometryLookup).ToArray(), - GetPreconsolidationStresses(soilProfileId).ToArray()) - { - IntersectionX = properties.IntersectionX - }; } catch (SoilProfileReadException) { MoveToNextProfile(soilProfileId); throw; } - catch (ArgumentException exception) + + MoveToNextProfile(soilProfileId); + return new SoilProfile2D(soilProfileId, + criticalProperties.ProfileName, + GetHierarchicallyOrderedSoilLayers(soilLayerGeometryLookup).ToArray(), + GetPreconsolidationStresses(soilProfileId).ToArray()) { - MoveToNextProfile(soilProfileId); - throw new SoilProfileReadException( - Resources.SoilProfile1DReader_ReadSoilProfile_Failed_to_construct_profile_from_read_data, - criticalProperties.ProfileName, - exception); - } + IntersectionX = properties.IntersectionX + }; } /// Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs =================================================================== diff -u -r30baf70ea42def18e66d1ec3c71aa0e54a89229a -ra557c00f0de18bc9636711c7dbb0c3ab428c21b6 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs (.../StochasticSoilModelReaderTest.cs) (revision 30baf70ea42def18e66d1ec3c71aa0e54a89229a) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilModelReaderTest.cs (.../StochasticSoilModelReaderTest.cs) (revision a557c00f0de18bc9636711c7dbb0c3ab428c21b6) @@ -462,6 +462,32 @@ } [Test] + public void ReadStochasticSoilModel_ModelWithStochasticProfilesWith1DProfilesLastProfileEmpty_ReturnsModelWithStochasticProfiles() + { + // Setup + string dbFile = Path.Combine(testDataPath, "modelWith1dProfilesLastProfileEmpty.soil"); + + using (var reader = new StochasticSoilModelReader(dbFile)) + { + reader.Validate(); + + // Call + StochasticSoilModel model = reader.ReadStochasticSoilModel(); + + // Assert + Assert.AreEqual("43003_Piping", model.Name); + Assert.AreEqual(FailureMechanismType.Piping, model.FailureMechanismType); + Assert.AreEqual(2, model.StochasticSoilProfiles.Count); + var emptyProfile = (SoilProfile1D) model.StochasticSoilProfiles.First().SoilProfile; + var profileWithLayers = (SoilProfile1D) model.StochasticSoilProfiles.Last().SoilProfile; + CollectionAssert.IsEmpty(emptyProfile.Layers); + CollectionAssert.IsNotEmpty(profileWithLayers.Layers); + } + + Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); + } + + [Test] public void ReadStochasticSoilModel_ModelWithStochasticProfilesWith2DProfiles_ReturnsModelWithStochasticProfiles() { // Setup @@ -497,6 +523,32 @@ } [Test] + public void ReadStochasticSoilModel_ModelWithStochasticProfilesWith2DProfilesLastProfileEmpty_ReturnsModelWithStochasticProfiles() + { + // Setup + string dbFile = Path.Combine(testDataPath, "modelWith2dProfilesLastProfileEmpty.soil"); + + using (var reader = new StochasticSoilModelReader(dbFile)) + { + reader.Validate(); + + // Call + StochasticSoilModel model = reader.ReadStochasticSoilModel(); + + // Assert + Assert.AreEqual("43003_Stability", model.Name); + Assert.AreEqual(FailureMechanismType.Stability, model.FailureMechanismType); + Assert.AreEqual(2, model.StochasticSoilProfiles.Count); + var emptyProfile = (SoilProfile2D) model.StochasticSoilProfiles.First().SoilProfile; + var profileWithLayers = (SoilProfile2D) model.StochasticSoilProfiles.Last().SoilProfile; + CollectionAssert.IsEmpty(emptyProfile.Layers); + CollectionAssert.IsNotEmpty(profileWithLayers.Layers); + } + + Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); + } + + [Test] public void ReadStochasticSoilModel_OtherFailureMechanism_ThrowsStochasticSoilModelException() { // Setup Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/StochasticSoilModelReader/modelWith1dProfilesLastProfileEmpty.soil =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/StochasticSoilModelReader/modelWith2dProfilesLastProfileEmpty.soil =================================================================== diff -u Binary files differ