Index: Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs =================================================================== diff -u -reb6d3b69267f3ae2870b25679793bbc0099338cd -r228ee54da56eded41bf81bba88cf54371f11d2bb --- Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs (.../SoilProfile2DReader.cs) (revision eb6d3b69267f3ae2870b25679793bbc0099338cd) +++ Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilProfile2DReader.cs (.../SoilProfile2DReader.cs) (revision 228ee54da56eded41bf81bba88cf54371f11d2bb) @@ -181,9 +181,10 @@ { properties = new RequiredProfileProperties(this, criticalProperties.ProfileName); + var geometryReader = new SoilLayer2DGeometryReader(); for (var i = 1; i <= criticalProperties.LayerCount; i++) { - ReadSoilLayerGeometryFrom(this, criticalProperties.ProfileName, soilLayerGeometryLookup); + ReadSoilLayerGeometryFrom(this, geometryReader, criticalProperties.ProfileName, soilLayerGeometryLookup); MoveNext(); } @@ -222,7 +223,7 @@ /// A collection of the read . /// Thrown when the preconsolidation /// stresses could not be read. - private PreconsolidationStress[] GetPreconsolidationStresses(long currentSoilProfileId) + private IEnumerable GetPreconsolidationStresses(long currentSoilProfileId) { if (!preconsolidationStressReader.HasNext || preconsolidationStressReader.ReadSoilProfileId() != currentSoilProfileId) { @@ -239,14 +240,12 @@ foreach (SoilLayer2DGeometry soilLayerGeometry in soilLayerGeometries) { - if (IsNestedLayer(innerLoops, soilLayerGeometry)) + if (!IsNestedLayer(innerLoops, soilLayerGeometry)) { - continue; + yield return CreateSoilLayer2D(soilLayerGeometry, + soilLayerGeometryLookup[soilLayerGeometry], + CreateNestedSoilLayersRecursively(soilLayerGeometryLookup, soilLayerGeometry)); } - - yield return CreateSoilLayer2D(soilLayerGeometry, - soilLayerGeometryLookup[soilLayerGeometry], - CreateNestedSoilLayersRecursively(soilLayerGeometryLookup, soilLayerGeometry)); } } @@ -309,23 +308,25 @@ } /// - /// Reads a from the given . + /// Reads a from the given . /// - /// The reader to read a geometry from. + /// The reader to read a geometry from. + /// The geometry reader to use. /// The name of the profile to read a geometry for. /// The lookup to add the read data to. /// Thrown when reading properties of the geometry failed. - private static void ReadSoilLayerGeometryFrom(IRowBasedDatabaseReader reader, string profileName, Dictionary soilLayerGeometriesLookup) + private static void ReadSoilLayerGeometryFrom(IRowBasedDatabaseReader databaseReader, SoilLayer2DGeometryReader geometryReader, string profileName, + IDictionary soilLayerGeometriesLookup) { - var properties = new Layer2DProperties(reader, profileName); + var properties = new Layer2DProperties(databaseReader, profileName); try { - soilLayerGeometriesLookup[new SoilLayer2DGeometryReader().Read(properties.GeometryValue)] = properties; + soilLayerGeometriesLookup[geometryReader.Read(properties.GeometryValue)] = properties; } catch (SoilLayerConversionException e) { - throw CreateSoilProfileReadException(reader.Path, profileName, e); + throw CreateSoilProfileReadException(databaseReader.Path, profileName, e); } }