Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/Piping/PipingProbabilityAssessmentInputCreateExtensions.cs =================================================================== diff -u -ra294987551b0b2d8a27b6e1bc6235b0e2351b6f4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/Piping/PipingProbabilityAssessmentInputCreateExtensions.cs (.../PipingProbabilityAssessmentInputCreateExtensions.cs) (revision a294987551b0b2d8a27b6e1bc6235b0e2351b6f4) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/Piping/PipingProbabilityAssessmentInputCreateExtensions.cs (.../PipingProbabilityAssessmentInputCreateExtensions.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -48,7 +48,8 @@ var entity = new PipingFailureMechanismMetaEntity { - A = assessmentInput.A + A = assessmentInput.A, + UpliftCriticalSafetyFactor = assessmentInput.UpliftCriticalSafetyFactor }; registry.Register(entity, assessmentInput); Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql =================================================================== diff -u -r4f92f7d10dc5db623169cf9ff52f506ce0238e9f -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision 4f92f7d10dc5db623169cf9ff52f506ce0238e9f) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/DatabaseStructure.sql (.../DatabaseStructure.sql) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -1,6 +1,6 @@ /* ---------------------------------------------------- */ /* Generated by Enterprise Architect Version 12.0 */ -/* Created On : 04-aug-2016 11:21:18 */ +/* Created On : 05-aug-2016 09:03:36 */ /* DBMS : SQLite */ /* ---------------------------------------------------- */ @@ -142,6 +142,7 @@ 'PipingFailureMechanismMetaEntityId' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 'FailureMechanismEntityId' INTEGER, 'A' REAL NOT NULL, + 'UpliftCriticalSafetyFactor' REAL NOT NULL, CONSTRAINT 'FK_PipingFailureMechanismMetaEntity_FailureMechanismEntity' FOREIGN KEY ('FailureMechanismEntityId') REFERENCES 'FailureMechanismEntity' ('FailureMechanismEntityId') ON DELETE Cascade ON UPDATE Cascade ) ; Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PipingFailureMechanismMetaEntity.cs =================================================================== diff -u -ra294987551b0b2d8a27b6e1bc6235b0e2351b6f4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PipingFailureMechanismMetaEntity.cs (.../PipingFailureMechanismMetaEntity.cs) (revision a294987551b0b2d8a27b6e1bc6235b0e2351b6f4) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/PipingFailureMechanismMetaEntity.cs (.../PipingFailureMechanismMetaEntity.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -38,6 +38,7 @@ public long PipingFailureMechanismMetaEntityId { get; set; } public Nullable FailureMechanismEntityId { get; set; } public double A { get; set; } + public double UpliftCriticalSafetyFactor { get; set; } public virtual FailureMechanismEntity FailureMechanismEntity { get; set; } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx =================================================================== diff -u -r4f92f7d10dc5db623169cf9ff52f506ce0238e9f -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision 4f92f7d10dc5db623169cf9ff52f506ce0238e9f) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx (.../RingtoetsEntities.edmx) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -271,6 +271,7 @@ + @@ -1770,6 +1771,7 @@ + @@ -2801,6 +2803,7 @@ + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram =================================================================== diff -u -r4f92f7d10dc5db623169cf9ff52f506ce0238e9f -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision 4f92f7d10dc5db623169cf9ff52f506ce0238e9f) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/DbContext/RingtoetsEntities.edmx.diagram (.../RingtoetsEntities.edmx.diagram) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -5,46 +5,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/Piping/PipingFailureMechanismMetaEntityReadExtensions.cs =================================================================== diff -u -ra294987551b0b2d8a27b6e1bc6235b0e2351b6f4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/Piping/PipingFailureMechanismMetaEntityReadExtensions.cs (.../PipingFailureMechanismMetaEntityReadExtensions.cs) (revision a294987551b0b2d8a27b6e1bc6235b0e2351b6f4) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/Piping/PipingFailureMechanismMetaEntityReadExtensions.cs (.../PipingFailureMechanismMetaEntityReadExtensions.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -19,10 +19,8 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System; - using Application.Ringtoets.Storage.DbContext; - +using Core.Common.Base.Data; using Ringtoets.Piping.Data; namespace Application.Ringtoets.Storage.Read.Piping @@ -43,7 +41,8 @@ return new PipingProbabilityAssessmentInput { StorageId = entity.PipingFailureMechanismMetaEntityId, - A = entity.A + A = entity.A, + UpliftCriticalSafetyFactor = (RoundedDouble) entity.UpliftCriticalSafetyFactor }; } } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensions.cs =================================================================== diff -u -rbb04ea61be6e4ce94cb1453c4578b0e9256168c4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensions.cs (.../PipingProbabilityAssessmentInputUpdateExtensions.cs) (revision bb04ea61be6e4ce94cb1453c4578b0e9256168c4) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensions.cs (.../PipingProbabilityAssessmentInputUpdateExtensions.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -64,6 +64,7 @@ context); entity.A = probabilityAssessmentInput.A; + entity.UpliftCriticalSafetyFactor = probabilityAssessmentInput.UpliftCriticalSafetyFactor; registry.Register(entity, probabilityAssessmentInput); } Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/Piping/PipingProbabilityAssessmentInputCreateExtensionsTest.cs =================================================================== diff -u -r01ff2c58c13df8f42661ae3e446dc2caaa94247e -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/Piping/PipingProbabilityAssessmentInputCreateExtensionsTest.cs (.../PipingProbabilityAssessmentInputCreateExtensionsTest.cs) (revision 01ff2c58c13df8f42661ae3e446dc2caaa94247e) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/Piping/PipingProbabilityAssessmentInputCreateExtensionsTest.cs (.../PipingProbabilityAssessmentInputCreateExtensionsTest.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -61,6 +61,7 @@ // Assert Assert.IsNotNull(entity); Assert.AreEqual(failureMechanism.PipingProbabilityAssessmentInput.A, entity.A); + Assert.AreEqual(failureMechanism.PipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor.Value, entity.UpliftCriticalSafetyFactor); } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/Piping/PipingFailureMechanismMetaEntityReadExtensionsTest.cs =================================================================== diff -u -ra294987551b0b2d8a27b6e1bc6235b0e2351b6f4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/Piping/PipingFailureMechanismMetaEntityReadExtensionsTest.cs (.../PipingFailureMechanismMetaEntityReadExtensionsTest.cs) (revision a294987551b0b2d8a27b6e1bc6235b0e2351b6f4) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/Piping/PipingFailureMechanismMetaEntityReadExtensionsTest.cs (.../PipingFailureMechanismMetaEntityReadExtensionsTest.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -25,7 +25,7 @@ using Application.Ringtoets.Storage.Read.Piping; using NUnit.Framework; - +using Ringtoets.Common.Data.TestUtil; using Ringtoets.Piping.Data; namespace Application.Ringtoets.Storage.Test.Read.Piping @@ -41,7 +41,8 @@ var entity = new PipingFailureMechanismMetaEntity { PipingFailureMechanismMetaEntityId = entityId, - A = 0.95 + A = 0.95, + UpliftCriticalSafetyFactor = 2.6 }; // Call @@ -50,6 +51,8 @@ // Assert Assert.IsNotNull(pipingProbabilityAssessmentInput); Assert.AreEqual(entityId, pipingProbabilityAssessmentInput.StorageId); + Assert.AreEqual(entity.A, pipingProbabilityAssessmentInput.A); + Assert.AreEqual(entity.UpliftCriticalSafetyFactor, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor.GetAccuracy()); } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs =================================================================== diff -u -ra294987551b0b2d8a27b6e1bc6235b0e2351b6f4 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs (.../PipingProbabilityAssessmentInputUpdateExtensionsTest.cs) (revision a294987551b0b2d8a27b6e1bc6235b0e2351b6f4) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Update/Piping/PipingProbabilityAssessmentInputUpdateExtensionsTest.cs (.../PipingProbabilityAssessmentInputUpdateExtensionsTest.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -26,7 +26,7 @@ using Application.Ringtoets.Storage.Exceptions; using Application.Ringtoets.Storage.TestUtil; using Application.Ringtoets.Storage.Update.Piping; - +using Core.Common.Base.Data; using NUnit.Framework; using Rhino.Mocks; @@ -130,26 +130,30 @@ var ringtoetsEntities = RingtoetsEntitiesHelper.CreateStub(mocks); mocks.ReplayAll(); - double value = 0.64; + double aValue = 0.64; + double upliftValue = 2.9; var probabilityAssessmentInput = new PipingProbabilityAssessmentInput { StorageId = 1, - A = value + A = aValue, + UpliftCriticalSafetyFactor = (RoundedDouble) upliftValue }; var pipingFailureMechanismMetaEntity = new PipingFailureMechanismMetaEntity { PipingFailureMechanismMetaEntityId = probabilityAssessmentInput.StorageId, - A = 0.3 + A = 0.3, + UpliftCriticalSafetyFactor = 1.2 }; ringtoetsEntities.PipingFailureMechanismMetaEntities.Add(pipingFailureMechanismMetaEntity); // Call probabilityAssessmentInput.Update(new PersistenceRegistry(), ringtoetsEntities); // Assert - Assert.AreEqual(value, pipingFailureMechanismMetaEntity.A); + Assert.AreEqual(aValue, pipingFailureMechanismMetaEntity.A); + Assert.AreEqual(upliftValue, pipingFailureMechanismMetaEntity.UpliftCriticalSafetyFactor); mocks.VerifyAll(); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingProbabilityAssessmentInput.cs =================================================================== diff -u -rbcc1d59b72f2928780e1512a7e4c10a6e1ce68ab -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingProbabilityAssessmentInput.cs (.../PipingProbabilityAssessmentInput.cs) (revision bcc1d59b72f2928780e1512a7e4c10a6e1ce68ab) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingProbabilityAssessmentInput.cs (.../PipingProbabilityAssessmentInput.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using Core.Common.Base.Data; using Core.Common.Base.Storage; using Ringtoets.Piping.Data.Properties; @@ -31,6 +32,7 @@ public class PipingProbabilityAssessmentInput : IStorable { private double a; + private RoundedDouble upliftCriticalSafetyFactor; /// /// Creates a new instance of . @@ -40,7 +42,8 @@ A = 0.4; B = 300.0; SectionLength = double.NaN; - UpliftCriticalSafetyFactor = 1.2; + + upliftCriticalSafetyFactor = new RoundedDouble(1, 1.2); } /// @@ -67,7 +70,22 @@ /// /// Gets the critical safety factor to which the calculated uplift stability factor is compared. /// - public double UpliftCriticalSafetyFactor { get; set; } + public RoundedDouble UpliftCriticalSafetyFactor + { + get + { + return upliftCriticalSafetyFactor; + } + set + { + var roundedValue = new RoundedDouble(upliftCriticalSafetyFactor.NumberOfDecimalPlaces, value); + if (roundedValue <= 0 || roundedValue > 50) + { + throw new ArgumentException(Resources.PipingProbabilityAssessmentInput_UpliftCriticalSafetyFactor_Value_must_be_in_range_zero_and_fifty); + } + upliftCriticalSafetyFactor = roundedValue; + } + } /// /// Gets 'b' parameter used to factor in the 'length effect' when determining the Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r775077965de8db55e76ff3ef1f050d7007a8b4e7 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 775077965de8db55e76ff3ef1f050d7007a8b4e7) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -188,6 +188,16 @@ } /// + /// Looks up a localized string similar to Kritieke veiligheidsfactor voor opbarsten moet in het bereik (0, 50] liggen.. + /// + public static string PipingProbabilityAssessmentInput_UpliftCriticalSafetyFactor_Value_must_be_in_range_zero_and_fifty { + get { + return ResourceManager.GetString("PipingProbabilityAssessmentInput_UpliftCriticalSafetyFactor_Value_must_be_in_rang" + + "e_zero_and_fifty", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Level {0} is below the bottom of the soil profile {1}.. /// public static string PipingSoilProfile_GetTopAquiferLayerThicknessBelowLevel_Level_0_below_Bottom_1_ { Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx =================================================================== diff -u -r775077965de8db55e76ff3ef1f050d7007a8b4e7 -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision 775077965de8db55e76ff3ef1f050d7007a8b4e7) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -165,4 +165,7 @@ Het gespecificeerde punt moet op het profiel liggen (bereik [{0}, {1}]). + + Kritieke veiligheidsfactor voor opbarsten moet in het bereik (0, 50] liggen. + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingFailureMechanismContextProperties.cs =================================================================== diff -u -rbcc1d59b72f2928780e1512a7e4c10a6e1ce68ab -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingFailureMechanismContextProperties.cs (.../PipingFailureMechanismContextProperties.cs) (revision bcc1d59b72f2928780e1512a7e4c10a6e1ce68ab) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingFailureMechanismContextProperties.cs (.../PipingFailureMechanismContextProperties.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -1,4 +1,5 @@ -using Core.Common.Gui.Attributes; +using Core.Common.Base.Data; +using Core.Common.Gui.Attributes; using Core.Common.Gui.PropertyBag; using Core.Common.Utils.Attributes; @@ -143,7 +144,7 @@ } set { - data.WrappedData.PipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor = value; + data.WrappedData.PipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor = (RoundedDouble) value; data.WrappedData.NotifyObservers(); } } Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingProbabilityAssessmentInputTest.cs =================================================================== diff -u -rbcc1d59b72f2928780e1512a7e4c10a6e1ce68ab -rf4718385197b407ba9df173dfc6f4df74b75f4e1 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingProbabilityAssessmentInputTest.cs (.../PipingProbabilityAssessmentInputTest.cs) (revision bcc1d59b72f2928780e1512a7e4c10a6e1ce68ab) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingProbabilityAssessmentInputTest.cs (.../PipingProbabilityAssessmentInputTest.cs) (revision f4718385197b407ba9df173dfc6f4df74b75f4e1) @@ -20,7 +20,9 @@ // All rights reserved. using System; +using Core.Common.Base.Data; using NUnit.Framework; +using Ringtoets.Common.Data.TestUtil; namespace Ringtoets.Piping.Data.Test { @@ -37,7 +39,8 @@ Assert.AreEqual(0.4, pipingProbabilityAssessmentInput.A); Assert.AreEqual(300, pipingProbabilityAssessmentInput.B); - Assert.AreEqual(1.2, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor); + Assert.AreEqual(1.2, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor.Value); + Assert.AreEqual(1, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor.NumberOfDecimalPlaces); Assert.IsNaN(pipingProbabilityAssessmentInput.SectionLength); } @@ -77,5 +80,40 @@ // Assert Assert.AreEqual(value, pipingProbabilityAssessmentInput.A); } + + [Test] + [TestCase(-0.05)] + [TestCase(0.0)] + [TestCase(0.04)] + [TestCase(50.05)] + [TestCase(50.1)] + public void UpliftCriticalSafetyFactor_InvalidValue_ThrowsArgumentException(double value) + { + // Setup + var pipingProbabilityAssessmentInput = new PipingProbabilityAssessmentInput(); + + // Call + TestDelegate call = () => pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor = (RoundedDouble) value; + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("Kritieke veiligheidsfactor voor opbarsten moet in het bereik (0, 50] liggen.", exception.Message); + } + + [Test] + [TestCase(0.05)] + [TestCase(50.04)] + [TestCase(50.0)] + public void UpliftCriticalSafetyFactor_ValidValue_SetsValue(double value) + { + // Setup + var pipingProbabilityAssessmentInput = new PipingProbabilityAssessmentInput(); + + // Call + pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor = (RoundedDouble) value; + + // Assert + Assert.AreEqual(value, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor, pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor.GetAccuracy()); + } } } \ No newline at end of file