Index: Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs
===================================================================
diff -u -rc71f15ef23debdc4df0719145291de37aea66c97 -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c71f15ef23debdc4df0719145291de37aea66c97)
+++ Core/Common/src/Core.Common.Base/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -281,15 +281,5 @@
return ResourceManager.GetString("Segment2D_Constructor_Segment_must_be_created_with_two_points", resourceCulture);
}
}
-
- ///
- /// Looks up a localized string similar to Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld..
- ///
- public static string StochasticSoilProfileHelper_GetValidatedStochasticProfilesToTransform_StochasticSoilProfile_0_has_multiple_occurences_in_SoilModel_1_Probability_Summed {
- get {
- return ResourceManager.GetString("StochasticSoilProfileHelper_GetValidatedStochasticProfilesToTransform_StochasticS" +
- "oilProfile_0_has_multiple_occurences_in_SoilModel_1_Probability_Summed", resourceCulture);
- }
- }
}
}
Index: Core/Common/src/Core.Common.Base/Properties/Resources.resx
===================================================================
diff -u -r76aba900dac58a4328145a2946b774ebd4a37aa5 -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Core/Common/src/Core.Common.Base/Properties/Resources.resx (.../Resources.resx) (revision 76aba900dac58a4328145a2946b774ebd4a37aa5)
+++ Core/Common/src/Core.Common.Base/Properties/Resources.resx (.../Resources.resx) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -183,7 +183,4 @@
{0} moeten een unieke {1} hebben. Gevonden dubbele elementen: {2}.
-
- Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld.
-
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs
===================================================================
diff -u -rda4a311b2ac60defe1a27a61c8d151f47268a941 -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision da4a311b2ac60defe1a27a61c8d151f47268a941)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -1694,6 +1694,16 @@
}
///
+ /// Looks up a localized string similar to Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld..
+ ///
+ public static string SoilModelTransformer_GetUniqueStochasticSoilProfiles_StochasticSoilProfile_0_has_multiple_occurences_in_SoilModel_1_Probability_Summed {
+ get {
+ return ResourceManager.GetString("SoilModelTransformer_GetUniqueStochasticSoilProfiles_StochasticSoilProfile_0_has_" +
+ "multiple_occurences_in_SoilModel_1_Probability_Summed", resourceCulture);
+ }
+ }
+
+ ///
/// 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 {
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx
===================================================================
diff -u -rda4a311b2ac60defe1a27a61c8d151f47268a941 -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision da4a311b2ac60defe1a27a61c8d151f47268a941)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -892,4 +892,7 @@
Kon geen grensspanningen verkrijgen uit de database.
+
+ Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld.
+
\ No newline at end of file
Index: Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj
===================================================================
diff -u -r604dfe021f6161f8e5d107dd5821ba06390c5ecf -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision 604dfe021f6161f8e5d107dd5821ba06390c5ecf)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -160,7 +160,6 @@
-
Fisheye: Tag c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03 refers to a dead (removed) revision in file `Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/StochasticSoilProfileHelper.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj
===================================================================
diff -u -ra1fa1538918813373bcc864f0bce092bf28fd0ce -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision a1fa1538918813373bcc864f0bce092bf28fd0ce)
+++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -140,7 +140,6 @@
-
Fisheye: Tag c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03 refers to a dead (removed) revision in file `Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/StochasticSoilProfileHelperTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformer.cs
===================================================================
diff -u -r57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformer.cs (.../MacroStabilityInwardsStochasticSoilModelTransformer.cs) (revision 57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff)
+++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.IO/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformer.cs (.../MacroStabilityInwardsStochasticSoilModelTransformer.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -22,6 +22,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using log4net;
using Ringtoets.Common.IO.Exceptions;
using Ringtoets.Common.IO.SoilProfile;
using Ringtoets.Common.IO.SoilProfile.Schema;
@@ -36,6 +37,7 @@
public class MacroStabilityInwardsStochasticSoilModelTransformer : IStochasticSoilModelTransformer
{
private readonly Dictionary soilProfiles = new Dictionary();
+ private static readonly ILog log = LogManager.GetLogger(typeof(MacroStabilityInwardsStochasticSoilModelTransformer));
public MacroStabilityInwardsStochasticSoilModel Transform(StochasticSoilModel stochasticSoilModel)
{
@@ -79,14 +81,12 @@
IEnumerable stochasticSoilProfiles,
string soilModelName)
{
- IEnumerable profilesToTransform =
- StochasticSoilProfileHelper.GetValidatedStochasticSoilProfilesToTransform(stochasticSoilProfiles,
- soilModelName);
-
- return profilesToTransform.Select(
+ MacroStabilityInwardsStochasticSoilProfile[] transformedProfiles = stochasticSoilProfiles.Select(
ssp => MacroStabilityInwardsStochasticSoilProfileTransformer.Transform(
ssp,
GetTransformedSoilProfile(ssp.SoilProfile))).ToArray();
+
+ return GetUniqueStochasticSoilProfiles(transformedProfiles, soilModelName);
}
///
@@ -110,5 +110,47 @@
}
return macroStabilityInwardsSoilProfile;
}
+
+ ///
+ /// Filters a collection of to determine which items
+ /// are unique.
+ ///
+ /// The collection of
+ /// to filter.
+ /// The name of the soil model.
+ /// A collection of unique .
+ /// Thrown when a
+ /// is invalid.
+ private static IEnumerable GetUniqueStochasticSoilProfiles(
+ IEnumerable stochasticSoilProfiles,
+ string soilModelName)
+ {
+ List uniqueStochasticSoilProfiles = stochasticSoilProfiles.ToList();
+ MacroStabilityInwardsStochasticSoilProfile[] allStochasticSoilProfiles = uniqueStochasticSoilProfiles.ToArray();
+
+ try
+ {
+ for (var i = 1; i < allStochasticSoilProfiles.Length; i++)
+ {
+ MacroStabilityInwardsStochasticSoilProfile previousProfile = allStochasticSoilProfiles[i - 1];
+ MacroStabilityInwardsStochasticSoilProfile currentProfile = allStochasticSoilProfiles[i];
+ if (ReferenceEquals(currentProfile.SoilProfile, previousProfile.SoilProfile))
+ {
+ log.Warn(string.Format(RingtoetsCommonIOResources.SoilModelTransformer_GetUniqueStochasticSoilProfiles_StochasticSoilProfile_0_has_multiple_occurences_in_SoilModel_1_Probability_Summed,
+ previousProfile.SoilProfile.Name,
+ soilModelName));
+
+ previousProfile.AddProbability(currentProfile.Probability);
+ uniqueStochasticSoilProfiles.Remove(currentProfile);
+ }
+ }
+ }
+ catch (ArgumentOutOfRangeException e)
+ {
+ throw new ImportedDataTransformException(e.Message, e);
+ }
+
+ return uniqueStochasticSoilProfiles;
+ }
}
}
\ No newline at end of file
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformerTest.cs
===================================================================
diff -u -r57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformerTest.cs (.../MacroStabilityInwardsStochasticSoilModelTransformerTest.cs) (revision 57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.IO.Test/SoilProfiles/MacroStabilityInwardsStochasticSoilModelTransformerTest.cs (.../MacroStabilityInwardsStochasticSoilModelTransformerTest.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -271,15 +271,12 @@
[Test]
[SetCulture("nl-NL")]
- public void Transform_ValidStochasticSoilModelWithSameProfileProbabilitExceedingValidRange_ThrowsImportedDataException()
+ [TestCaseSource(nameof(GetValidConfiguredAndSupportedSoilProfiles))]
+ public void Transform_ValidStochasticSoilModelWithSameProfileProbabilityExceedingValidRange_ThrowsImportedDataException(ISoilProfile profile)
{
// Setup
const string soilModelName = "name";
- var mocks = new MockRepository();
- var profile = mocks.Stub();
- mocks.ReplayAll();
-
StochasticSoilModel soilModel = StochasticSoilModelTestFactory.CreateStochasticSoilModelWithGeometry(soilModelName,
FailureMechanismType.Stability, new[]
{
@@ -296,9 +293,7 @@
var exception = Assert.Throws(call);
const string expectedMessage = "Het aandeel van de ondergrondschematisatie in het stochastische ondergrondmodel " +
"moet in het bereik [0,0, 1,0] liggen.";
- Assert.AreEqual(expectedMessage, exception.Message);
-
- mocks.VerifyAll();
+ StringAssert.StartsWith(expectedMessage, exception.Message);
}
[Test]
@@ -356,5 +351,23 @@
.Cast()
.Where(t => t != FailureMechanismType.Stability);
}
+
+ private static IEnumerable GetValidConfiguredAndSupportedSoilProfiles()
+ {
+ var random = new Random(21);
+
+ const long id = 1;
+ const string name = "test";
+
+ yield return new SoilProfile2D(id, name, new[]
+ {
+ SoilLayer2DTestFactory.CreateSoilLayer2DWithValidAquifer()
+ }, Enumerable.Empty());
+
+ yield return new SoilProfile1D(id, name, random.NextDouble(), new []
+ {
+ SoilLayer1DTestFactory.CreateSoilLayer1DWithValidAquifer()
+ });
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingStochasticSoilModelTransformer.cs
===================================================================
diff -u -r57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingStochasticSoilModelTransformer.cs (.../PipingStochasticSoilModelTransformer.cs) (revision 57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfiles/PipingStochasticSoilModelTransformer.cs (.../PipingStochasticSoilModelTransformer.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -22,6 +22,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using log4net;
using Ringtoets.Common.IO.Exceptions;
using Ringtoets.Common.IO.SoilProfile;
using Ringtoets.Common.IO.SoilProfile.Schema;
@@ -36,6 +37,7 @@
///
public class PipingStochasticSoilModelTransformer : IStochasticSoilModelTransformer
{
+ private static readonly ILog log = LogManager.GetLogger(typeof(PipingStochasticSoilModel));
private readonly Dictionary soilProfiles = new Dictionary();
public PipingStochasticSoilModel Transform(StochasticSoilModel stochasticSoilModel)
@@ -77,13 +79,10 @@
private IEnumerable TransformStochasticSoilProfiles(IEnumerable stochasticSoilProfiles,
string soilModelName)
{
- IEnumerable profilesToTransform =
- StochasticSoilProfileHelper.GetValidatedStochasticSoilProfilesToTransform(stochasticSoilProfiles,
- soilModelName);
-
- return profilesToTransform.Select(ssp => PipingStochasticSoilProfileTransformer.Transform(
- ssp,
- GetTransformedPipingSoilProfile(ssp.SoilProfile))).ToArray();
+ PipingStochasticSoilProfile[] transformedProfiles = stochasticSoilProfiles.Select(ssp => PipingStochasticSoilProfileTransformer.Transform(
+ ssp,
+ GetTransformedPipingSoilProfile(ssp.SoilProfile))).ToArray();
+ return GetUniqueStochasticSoilProfiles(transformedProfiles, soilModelName);
}
///
@@ -107,5 +106,47 @@
}
return pipingSoilProfile;
}
+
+ ///
+ /// Filters a collection of to determine which items
+ /// are unique.
+ ///
+ /// The collection of
+ /// to filter.
+ /// The name of the soil model.
+ /// A collection of unique .
+ /// Thrown when a
+ /// is invalid.
+ private static IEnumerable GetUniqueStochasticSoilProfiles(
+ IEnumerable stochasticSoilProfiles,
+ string soilModelName)
+ {
+ List uniqueStochasticSoilProfiles = stochasticSoilProfiles.ToList();
+ PipingStochasticSoilProfile[] allStochasticSoilProfiles = uniqueStochasticSoilProfiles.ToArray();
+
+ try
+ {
+ for (var i = 1; i < allStochasticSoilProfiles.Length; i++)
+ {
+ PipingStochasticSoilProfile previousProfile = allStochasticSoilProfiles[i - 1];
+ PipingStochasticSoilProfile currentProfile = allStochasticSoilProfiles[i];
+ if (ReferenceEquals(currentProfile.SoilProfile, previousProfile.SoilProfile))
+ {
+ log.Warn(string.Format(RingtoetsCommonIOResources.SoilModelTransformer_GetUniqueStochasticSoilProfiles_StochasticSoilProfile_0_has_multiple_occurences_in_SoilModel_1_Probability_Summed,
+ previousProfile.SoilProfile.Name,
+ soilModelName));
+
+ previousProfile.AddProbability(currentProfile.Probability);
+ uniqueStochasticSoilProfiles.Remove(currentProfile);
+ }
+ }
+ }
+ catch (ArgumentOutOfRangeException e)
+ {
+ throw new ImportedDataTransformException(e.Message, e);
+ }
+
+ return uniqueStochasticSoilProfiles;
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingStochasticSoilModelTransformerTest.cs
===================================================================
diff -u -r57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff -rc5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03
--- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingStochasticSoilModelTransformerTest.cs (.../PipingStochasticSoilModelTransformerTest.cs) (revision 57bc6a475f6cdd57b1a0ebf70cdf533014afd1ff)
+++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfiles/PipingStochasticSoilModelTransformerTest.cs (.../PipingStochasticSoilModelTransformerTest.cs) (revision c5c91f8ca724aef52a6cd9055a2a32bcd6bc0c03)
@@ -25,7 +25,6 @@
using Core.Common.Base.Geometry;
using Core.Common.TestUtil;
using NUnit.Framework;
-using Rhino.Mocks;
using Ringtoets.Common.IO.Exceptions;
using Ringtoets.Common.IO.SoilProfile;
using Ringtoets.Common.IO.SoilProfile.Schema;
@@ -273,15 +272,12 @@
[Test]
[SetCulture("nl-NL")]
- public void Transform_ValidStochasticSoilModelWithSameProfileProbabilityExceedingValidRange_ThrowsImportedDataException()
+ [TestCaseSource(nameof(GetValidConfiguredAndSupportedSoilProfiles))]
+ public void Transform_ValidStochasticSoilModelWithSameProfileProbabilityExceedingValidRange_ThrowsImportedDataException(ISoilProfile profile)
{
// Setup
const string soilModelName = "name";
- var mocks = new MockRepository();
- var profile = mocks.Stub();
- mocks.ReplayAll();
-
StochasticSoilModel soilModel = StochasticSoilModelTestFactory.CreateStochasticSoilModelWithGeometry(soilModelName, FailureMechanismType.Piping, new[]
{
new StochasticSoilProfile(0.9, profile),
@@ -297,9 +293,7 @@
var exception = Assert.Throws(call);
const string expectedMessage = "Het aandeel van de ondergrondschematisatie in het stochastische ondergrondmodel " +
"moet in het bereik [0,0, 1,0] liggen.";
- Assert.AreEqual(expectedMessage, exception.Message);
-
- mocks.VerifyAll();
+ StringAssert.StartsWith(expectedMessage, exception.Message);
}
[Test]
@@ -370,5 +364,26 @@
.Cast()
.Where(t => t != FailureMechanismType.Piping);
}
+
+ private static IEnumerable GetValidConfiguredAndSupportedSoilProfiles()
+ {
+ var random = new Random(21);
+
+ const long id = 1;
+ const string name = "test";
+
+ yield return new SoilProfile2D(id, name, new[]
+ {
+ SoilLayer2DTestFactory.CreateSoilLayer2DWithValidAquifer()
+ }, Enumerable.Empty())
+ {
+ IntersectionX = random.NextDouble()
+ };
+
+ yield return new SoilProfile1D(id, name, random.NextDouble(), new[]
+ {
+ SoilLayer1DTestFactory.CreateSoilLayer1DWithValidAquifer()
+ });
+ }
}
}
\ No newline at end of file