Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilProfile1DReader.cs =================================================================== diff -u -ra6ba313236d0ff8d2f219fc8249b700b1eade338 -rd2b5b334c49948fa49297a1d24c13bc98aa6ee1e --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilProfile1DReader.cs (.../SoilProfile1DReader.cs) (revision a6ba313236d0ff8d2f219fc8249b700b1eade338) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilProfile1DReader.cs (.../SoilProfile1DReader.cs) (revision d2b5b334c49948fa49297a1d24c13bc98aa6ee1e) @@ -16,25 +16,27 @@ /// /// Reads a 1D profile from the given . /// - /// A which is used to read row values from. + /// A which is used to read row values from. /// A new , which is based on the information from the database. /// Thrown when reading the profile encountered an unrecoverable error. /// Thrown when reading the profile encountered a recoverable error. - internal static PipingSoilProfile ReadFrom(IRowBasedReader reader) + internal static PipingSoilProfile ReadFrom(IRowBasedDatabaseReader reader) { var criticalProperties = new CriticalProfileProperties(reader); - var requiredProperties = new RequiredProfileProperties(reader, criticalProperties.ProfileName); - var soilProfileBuilder = new SoilProfileBuilder1D(criticalProperties.ProfileName, requiredProperties.Bottom); + var profileName = criticalProperties.ProfileName; + var requiredProperties = new RequiredProfileProperties(reader, profileName); + var soilProfileBuilder = new SoilProfileBuilder1D(profileName, requiredProperties.Bottom); + for (var i = 1; i <= criticalProperties.LayerCount; i++) { - SoilLayer1D soilLayer = ReadSoilLayerFrom(reader, criticalProperties.ProfileName); + SoilLayer1D soilLayer = ReadSoilLayerFrom(reader, profileName); soilProfileBuilder.Add(soilLayer.AsPipingSoilLayer()); reader.MoveNext(); } - return Build(soilProfileBuilder, criticalProperties.ProfileName); + return Build(soilProfileBuilder, profileName); } /// @@ -47,7 +49,7 @@ { return soilProfileBuilder.Build(); } - catch (ArgumentException e) + catch (SoilProfileBuilderException e) { throw new PipingSoilProfileReadException(profileName, e.Message, e); } @@ -57,7 +59,7 @@ /// Reads a from the given . /// /// Thrown when reading properties of the layers failed. - private static SoilLayer1D ReadSoilLayerFrom(IRowBasedReader reader, string profileName) + private static SoilLayer1D ReadSoilLayerFrom(IRowBasedDatabaseReader reader, string profileName) { var properties = new LayerProperties(reader, profileName); @@ -84,7 +86,7 @@ /// The profile name used in generating exceptions messages if casting failed. /// Thrown when the values in the database could not be /// casted to the expected column types. - internal RequiredProfileProperties(IRowBasedReader reader, string profileName) + internal RequiredProfileProperties(IRowBasedDatabaseReader reader, string profileName) { string readColumn = SoilProfileDatabaseColumns.Bottom; try @@ -116,7 +118,7 @@ /// The profile name used in generating exceptions messages if casting failed. /// Thrown when the values in the database could not be /// casted to the expected column types. - internal LayerProperties(IRowBasedReader reader, string profileName) + internal LayerProperties(IRowBasedDatabaseReader reader, string profileName) { string readColumn = SoilProfileDatabaseColumns.Top; try