Index: Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.1_17.2.sql =================================================================== diff -u -r638081278e33e132e3ffedd52fff0d6c00ab4728 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.1_17.2.sql (.../Migration_17.1_17.2.sql) (revision 638081278e33e132e3ffedd52fff0d6c00ab4728) +++ Application/Ringtoets/src/Application.Ringtoets.Migration.Core/EmbeddedResources/Migration_17.1_17.2.sql (.../Migration_17.1_17.2.sql) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -391,12 +391,14 @@ [StabilityPointStructuresFailureMechanismMetaEntityId], [FailureMechanismEntityId], [N], - [ForeshoreProfileCollectionSourcePath]) + [ForeshoreProfileCollectionSourcePath], + [StabilityPointStructureCollectionSourcePath]) SELECT [StrengthStabilityPointConstructionFailureMechanismMetaEntityId], [FailureMechanismEntityId], [N], CASE WHEN COUNT([ForeshoreProfileEntityId]) THEN "Onbekend" ELSE NULL END + CASE WHEN COUNT([StabilityPointStructureEntityId]) THEN "Onbekend" ELSE NULL END FROM [SOURCEPROJECT].StabilityPointStructuresFailureMechanismMetaEntity LEFT JOIN [SOURCEPROJECT].ForeshoreProfileEntity USING (FailureMechanismEntityId) GROUP BY FailureMechanismEntityId; Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensions.cs =================================================================== diff -u -r638081278e33e132e3ffedd52fff0d6c00ab4728 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensions.cs (.../StabilityPointStructuresFailureMechanismCreateExtensions.cs) (revision 638081278e33e132e3ffedd52fff0d6c00ab4728) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensions.cs (.../StabilityPointStructuresFailureMechanismCreateExtensions.cs) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -89,12 +89,15 @@ } } - private static void AddEntitiesForFailureMechanismMeta(StabilityPointStructuresFailureMechanism generalInput, FailureMechanismEntity entity) + private static void AddEntitiesForFailureMechanismMeta( + StabilityPointStructuresFailureMechanism failureMechanism, + FailureMechanismEntity entity) { var metaEntity = new StabilityPointStructuresFailureMechanismMetaEntity { - ForeshoreProfileCollectionSourcePath = generalInput.ForeshoreProfiles.SourcePath.DeepClone(), - N = generalInput.GeneralInput.N + ForeshoreProfileCollectionSourcePath = failureMechanism.ForeshoreProfiles.SourcePath.DeepClone(), + StabilityPointStructureCollectionSourcePath = failureMechanism.StabilityPointStructures.SourcePath.DeepClone(), + N = failureMechanism.GeneralInput.N }; entity.StabilityPointStructuresFailureMechanismMetaEntities.Add(metaEntity); } Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs =================================================================== diff -u -r638081278e33e132e3ffedd52fff0d6c00ab4728 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision 638081278e33e132e3ffedd52fff0d6c00ab4728) +++ Application/Ringtoets/src/Application.Ringtoets.Storage/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -914,7 +914,9 @@ metaEntity.ForeshoreProfileCollectionSourcePath, collector); - entity.ReadStabilityPointStructures(failureMechanism.StabilityPointStructures, collector); + entity.ReadStabilityPointStructures(failureMechanism.StabilityPointStructures, + metaEntity.StabilityPointStructureCollectionSourcePath, + collector); entity.ReadGeneralInput(failureMechanism.GeneralInput); ReadStabilityPointStructuresRootCalculationGroup(entity.CalculationGroupEntity, failureMechanism.CalculationsGroup, collector); } @@ -934,13 +936,16 @@ private static void ReadStabilityPointStructures(this FailureMechanismEntity entity, StructureCollection stabilityPointStructures, + string stabilityPointStructuresSourcePath, ReadConversionCollector collector) { - // TODO: WTI 1183 Add storage functionality - stabilityPointStructures.AddRange(entity.StabilityPointStructureEntities - .OrderBy(fpe => fpe.Order) - .Select(structureEntity => structureEntity.Read(collector)), - "path"); + if (stabilityPointStructuresSourcePath != null) + { + stabilityPointStructures.AddRange(entity.StabilityPointStructureEntities + .OrderBy(fpe => fpe.Order) + .Select(structureEntity => structureEntity.Read(collector)), + stabilityPointStructuresSourcePath); + } } private static void ReadGeneralInput(this FailureMechanismEntity entity, GeneralStabilityPointStructuresInput generalInput) Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/ClosingStructures/ClosingStructuresFailureMechanismCreateExtensionsTest.cs =================================================================== diff -u -ra7f920661887773056c051edc7872d27f724c840 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/ClosingStructures/ClosingStructuresFailureMechanismCreateExtensionsTest.cs (.../ClosingStructuresFailureMechanismCreateExtensionsTest.cs) (revision a7f920661887773056c051edc7872d27f724c840) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/ClosingStructures/ClosingStructuresFailureMechanismCreateExtensionsTest.cs (.../ClosingStructuresFailureMechanismCreateExtensionsTest.cs) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; using System.Linq; using Application.Ringtoets.Storage.Create; using Application.Ringtoets.Storage.Create.ClosingStructures; Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensionsTest.cs =================================================================== diff -u -r638081278e33e132e3ffedd52fff0d6c00ab4728 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensionsTest.cs (.../StabilityPointStructuresFailureMechanismCreateExtensionsTest.cs) (revision 638081278e33e132e3ffedd52fff0d6c00ab4728) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/StabilityPointStructures/StabilityPointStructuresFailureMechanismCreateExtensionsTest.cs (.../StabilityPointStructuresFailureMechanismCreateExtensionsTest.cs) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -27,6 +27,7 @@ using Application.Ringtoets.Storage.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Data.TestUtil; using Ringtoets.StabilityPointStructures.Data; @@ -90,7 +91,7 @@ Assert.AreEqual(failureMechanism.OutputComments.Body, entity.OutputComments); Assert.AreEqual(failureMechanism.NotRelevantComments.Body, entity.NotRelevantComments); - StabilityPointStructuresFailureMechanismMetaEntity metaEntity = entity.StabilityPointStructuresFailureMechanismMetaEntities.First(); + StabilityPointStructuresFailureMechanismMetaEntity metaEntity = entity.StabilityPointStructuresFailureMechanismMetaEntities.Single(); Assert.AreEqual(failureMechanism.GeneralInput.N, metaEntity.N); } @@ -101,6 +102,8 @@ const string originalInput = "Some input text"; const string originalOutput = "Some output text"; const string originalNotRelevantText = "Really not relevant"; + const string originalForeshoreProfilesSourcePath = "some/foreshoreProfile/sourcePath"; + const string originalStructuresSourcePath = "some/structures/sourcePath"; var failureMechanism = new StabilityPointStructuresFailureMechanism { InputComments = @@ -116,6 +119,11 @@ Body = originalNotRelevantText } }; + failureMechanism.ForeshoreProfiles.AddRange(Enumerable.Empty(), + originalForeshoreProfilesSourcePath); + failureMechanism.StabilityPointStructures.AddRange(Enumerable.Empty(), + originalStructuresSourcePath); + var registry = new PersistenceRegistry(); // Call @@ -131,6 +139,15 @@ Assert.AreNotSame(originalNotRelevantText, entity.NotRelevantComments, "To create stable binary representations/fingerprints, it's really important that strings are not shared."); Assert.AreEqual(failureMechanism.NotRelevantComments.Body, entity.NotRelevantComments); + + StabilityPointStructuresFailureMechanismMetaEntity metaEntity = entity.StabilityPointStructuresFailureMechanismMetaEntities.Single(); + Assert.AreNotSame(originalForeshoreProfilesSourcePath, metaEntity.ForeshoreProfileCollectionSourcePath, + "To create stable binary representations/fingerprints, it's really important that strings are not shared."); + Assert.AreEqual(originalForeshoreProfilesSourcePath, metaEntity.ForeshoreProfileCollectionSourcePath); + + Assert.AreNotSame(originalStructuresSourcePath, metaEntity.StabilityPointStructureCollectionSourcePath, + "To create stable binary representations/fingerprints, it's really important that strings are not shared."); + Assert.AreEqual(originalStructuresSourcePath, metaEntity.StabilityPointStructureCollectionSourcePath); } [Test] @@ -208,16 +225,34 @@ } [Test] + public void Create_WithoutStabilityPointStructures_EmptyStabilityPointStructuresEntities() + { + // Setup + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + + // Call + FailureMechanismEntity entity = failureMechanism.Create(new PersistenceRegistry()); + + // Assert + Assert.IsEmpty(entity.StabilityPointStructureEntities); + + StabilityPointStructuresFailureMechanismMetaEntity metaEntity = + entity.StabilityPointStructuresFailureMechanismMetaEntities.Single(); + Assert.IsNull(metaEntity.StabilityPointStructureCollectionSourcePath); + } + + [Test] public void Create_WithStabilityPointStructures_StabilityPointStructureEntitiesCreated() { // Setup StabilityPointStructure structure = new TestStabilityPointStructure(); + const string sourcePath = "path/to/structures"; var failureMechanism = new StabilityPointStructuresFailureMechanism(); failureMechanism.StabilityPointStructures.AddRange(new[] { structure - }, "path"); + }, sourcePath); var persistenceRegistry = new PersistenceRegistry(); @@ -227,6 +262,10 @@ // Assert Assert.AreEqual(1, entity.StabilityPointStructureEntities.Count); Assert.IsTrue(persistenceRegistry.Contains(structure)); + + StabilityPointStructuresFailureMechanismMetaEntity metaEntity = + entity.StabilityPointStructuresFailureMechanismMetaEntities.Single(); + Assert.AreEqual(sourcePath, metaEntity.StabilityPointStructureCollectionSourcePath); } [Test] Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs =================================================================== diff -u -r2f41eb6eb560911cd4ebe2d4d6924c26df911c40 -r99f60b3252ff2b7e79b482f4c0ac0099914b9928 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision 2f41eb6eb560911cd4ebe2d4d6924c26df911c40) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Read/FailureMechanismEntityReadExtensionsTest.cs (.../FailureMechanismEntityReadExtensionsTest.cs) (revision 99f60b3252ff2b7e79b482f4c0ac0099914b9928) @@ -1825,9 +1825,40 @@ } [Test] + public void ReadAsStabilityPointStructuresFailureMechanism_WithoutStabilityPointStructuresWithSourcePath_ReturnsFailureMechanismWithSourcePathSet() + { + // Setup + const string path = "path/to/stabilityPointStructues"; + var entity = new FailureMechanismEntity + { + CalculationGroupEntity = new CalculationGroupEntity(), + StabilityPointStructuresFailureMechanismMetaEntities = + { + new StabilityPointStructuresFailureMechanismMetaEntity + { + N = 7, + StabilityPointStructureCollectionSourcePath = path + } + } + }; + var collector = new ReadConversionCollector(); + var failureMechanism = new StabilityPointStructuresFailureMechanism(); + + // Call + entity.ReadAsStabilityPointStructuresFailureMechanism(failureMechanism, collector); + + // Assert + StructureCollection stabilityPointStructures = + failureMechanism.StabilityPointStructures; + Assert.AreEqual(0, stabilityPointStructures.Count); + Assert.AreEqual(path, stabilityPointStructures.SourcePath); + } + + [Test] public void ReadAsStabilityPointStructuresFailureMechanism_WithStabilityPointStructures_ReturnFailureMechanismWithStabilityPointStructuresSet() { // Setup + const string path = "path/to/stabilityPointStructures"; var entity = new FailureMechanismEntity { CalculationGroupEntity = new CalculationGroupEntity(), @@ -1850,7 +1881,8 @@ { new StabilityPointStructuresFailureMechanismMetaEntity { - N = 7 + N = 7, + StabilityPointStructureCollectionSourcePath = path } } }; @@ -1861,12 +1893,15 @@ entity.ReadAsStabilityPointStructuresFailureMechanism(failureMechanism, collector); // Assert - Assert.AreEqual(2, failureMechanism.StabilityPointStructures.Count); + StructureCollection stabilityPointStructures = + failureMechanism.StabilityPointStructures; + Assert.AreEqual(2, stabilityPointStructures.Count); + Assert.AreEqual(path, stabilityPointStructures.SourcePath); - StabilityPointStructure child1 = failureMechanism.StabilityPointStructures[0]; + StabilityPointStructure child1 = stabilityPointStructures[0]; Assert.AreEqual("Child2", child1.Name); - StabilityPointStructure child2 = failureMechanism.StabilityPointStructures[1]; + StabilityPointStructure child2 = stabilityPointStructures[1]; Assert.AreEqual("Child1", child2.Name); }