Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanism.cs =================================================================== diff -u -rc78b88ec37a68ed8b9b26920034c277caad1d643 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanism.cs (.../HeightStructuresFailureMechanism.cs) (revision c78b88ec37a68ed8b9b26920034c277caad1d643) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanism.cs (.../HeightStructuresFailureMechanism.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -90,11 +90,13 @@ { base.AddSectionDependentData(section); sectionResultsOld.Add(new HeightStructuresFailureMechanismSectionResultOld(section)); + sectionResults.Add(new FailureMechanismSectionResult(section)); } protected override void ClearSectionDependentData() { sectionResultsOld.Clear(); + sectionResults.Clear(); } } } \ No newline at end of file Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategy.cs =================================================================== diff -u -r5f375656595d8fee8727648409e202f67f441daa -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategy.cs (.../HeightStructuresFailureMechanismSectionResultUpdateStrategy.cs) (revision 5f375656595d8fee8727648409e202f67f441daa) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategy.cs (.../HeightStructuresFailureMechanismSectionResultUpdateStrategy.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -20,17 +20,18 @@ // All rights reserved. using System; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.IO.FileImporters; using Riskeer.HeightStructures.Data; namespace Riskeer.HeightStructures.Plugin.FileImporters { /// - /// An update strategy that can be used to update a instance with data - /// from an old instance. - /// + /// An update strategy that can be used to update either a + /// or a instance with data from an old instance; + /// /// public class HeightStructuresFailureMechanismSectionResultUpdateStrategy - : IFailureMechanismSectionResultUpdateStrategy + : IFailureMechanismSectionResultUpdateStrategy { public void UpdateSectionResultOld(HeightStructuresFailureMechanismSectionResultOld origin, HeightStructuresFailureMechanismSectionResultOld target) { @@ -51,5 +52,24 @@ target.UseManualAssembly = origin.UseManualAssembly; target.ManualAssemblyProbability = origin.ManualAssemblyProbability; } + + public void UpdateSectionResult(FailureMechanismSectionResult origin, FailureMechanismSectionResult target) + { + if (origin == null) + { + throw new ArgumentNullException(nameof(origin)); + } + + if (target == null) + { + throw new ArgumentNullException(nameof(target)); + } + + target.IsRelevant = origin.IsRelevant; + target.InitialFailureMechanismResult = origin.InitialFailureMechanismResult; + target.ManualInitialFailureMechanismResultSectionProbability = origin.ManualInitialFailureMechanismResultSectionProbability; + target.FurtherAnalysisNeeded = origin.FurtherAnalysisNeeded; + target.RefinedSectionProbability = origin.RefinedSectionProbability; + } } } \ No newline at end of file Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs =================================================================== diff -u -rdfd2e82406d3cafb83004a065b3ea1f943ced729 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision dfd2e82406d3cafb83004a065b3ea1f943ced729) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Plugin/HeightStructuresPlugin.cs (.../HeightStructuresPlugin.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -138,7 +138,7 @@ }; yield return RiskeerUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo< - HeightStructuresFailureMechanismSectionsContext, HeightStructuresFailureMechanism, HeightStructuresFailureMechanismSectionResultOld>( + HeightStructuresFailureMechanismSectionsContext, HeightStructuresFailureMechanism, HeightStructuresFailureMechanismSectionResultOld, FailureMechanismSectionResult>( new HeightStructuresFailureMechanismSectionResultUpdateStrategy()); } @@ -853,10 +853,10 @@ { string message = RiskeerCommonFormsResources.VerifyUpdate_Confirm_calculation_output_cleared; if (StructureDependentDataShouldUpdate(new[] + { + calculation + }, message)) { - calculation - }, message)) - { UpdateStructureDerivedCalculationInput(calculation); } } Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Service/HeightStructuresDataSynchronizationService.cs =================================================================== diff -u -rdfd2e82406d3cafb83004a065b3ea1f943ced729 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Service/HeightStructuresDataSynchronizationService.cs (.../HeightStructuresDataSynchronizationService.cs) (revision dfd2e82406d3cafb83004a065b3ea1f943ced729) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Service/HeightStructuresDataSynchronizationService.cs (.../HeightStructuresDataSynchronizationService.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -168,6 +168,7 @@ var changedObjects = new List(); object[] removedObjects = failureMechanism.Sections.OfType() .Concat(failureMechanism.SectionResultsOld) + .Concat(failureMechanism.SectionResults) .Concat(failureMechanism.CalculationsGroup.GetAllChildrenRecursive()) .Concat(failureMechanism.ForeshoreProfiles) .Concat(failureMechanism.HeightStructures) @@ -176,6 +177,7 @@ failureMechanism.ClearAllSections(); changedObjects.Add(failureMechanism); changedObjects.Add(failureMechanism.SectionResultsOld); + changedObjects.Add(failureMechanism.SectionResults); failureMechanism.CalculationsGroup.Children.Clear(); changedObjects.Add(failureMechanism.CalculationsGroup); Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismTest.cs =================================================================== diff -u -rc78b88ec37a68ed8b9b26920034c277caad1d643 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismTest.cs (.../HeightStructuresFailureMechanismTest.cs) (revision c78b88ec37a68ed8b9b26920034c277caad1d643) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismTest.cs (.../HeightStructuresFailureMechanismTest.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -77,6 +77,9 @@ Assert.AreEqual(1, failureMechanism.Sections.Count()); Assert.AreEqual(1, failureMechanism.SectionResultsOld.Count()); Assert.AreSame(section, failureMechanism.SectionResultsOld.First().Section); + + Assert.AreEqual(1, failureMechanism.SectionResults.Count()); + Assert.AreSame(section, failureMechanism.SectionResults.First().Section); } [Test] Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategyTest.cs =================================================================== diff -u -r570ba782656147a3d242852a1c273132175f1bc3 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategyTest.cs (.../HeightStructuresFailureMechanismSectionResultUpdateStrategyTest.cs) (revision 570ba782656147a3d242852a1c273132175f1bc3) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Plugin.Test/FileImporters/HeightStructuresFailureMechanismSectionResultUpdateStrategyTest.cs (.../HeightStructuresFailureMechanismSectionResultUpdateStrategyTest.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -21,6 +21,7 @@ using System; using NUnit.Framework; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Plugin.TestUtil.FileImporters; using Riskeer.Common.Primitives; @@ -31,7 +32,7 @@ { [TestFixture] public class HeightStructuresFailureMechanismSectionResultUpdateStrategyTest : FailureMechanismSectionResultUpdateStrategyTestFixture< - HeightStructuresFailureMechanismSectionResultUpdateStrategy, HeightStructuresFailureMechanismSectionResultOld> + HeightStructuresFailureMechanismSectionResultUpdateStrategy, HeightStructuresFailureMechanismSectionResultOld, FailureMechanismSectionResult> { protected override HeightStructuresFailureMechanismSectionResultOld CreateEmptySectionResultOld() { @@ -62,5 +63,32 @@ Assert.AreEqual(originResult.UseManualAssembly, targetResult.UseManualAssembly); Assert.AreEqual(originResult.ManualAssemblyProbability, targetResult.ManualAssemblyProbability); } + + protected override FailureMechanismSectionResult CreateEmptySectionResult() + { + return new FailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + } + + protected override FailureMechanismSectionResult CreateConfiguredSectionResult() + { + var random = new Random(39); + return new FailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) + { + IsRelevant = true, + InitialFailureMechanismResult = InitialFailureMechanismResultType.Manual, + ManualInitialFailureMechanismResultSectionProbability = random.NextDouble(), + FurtherAnalysisNeeded = true, + RefinedSectionProbability = random.NextDouble() + }; + } + + protected override void AssertSectionResult(FailureMechanismSectionResult originResult, FailureMechanismSectionResult targetResult) + { + Assert.AreEqual(originResult.IsRelevant, targetResult.IsRelevant); + Assert.AreEqual(originResult.InitialFailureMechanismResult, targetResult.InitialFailureMechanismResult); + Assert.AreEqual(originResult.ManualInitialFailureMechanismResultSectionProbability, targetResult.ManualInitialFailureMechanismResultSectionProbability); + Assert.AreEqual(originResult.FurtherAnalysisNeeded, targetResult.FurtherAnalysisNeeded); + Assert.AreEqual(originResult.RefinedSectionProbability, targetResult.RefinedSectionProbability); + } } } \ No newline at end of file Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs =================================================================== diff -u -rdfd2e82406d3cafb83004a065b3ea1f943ced729 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs (.../HeightStructuresDataSynchronizationServiceTest.cs) (revision dfd2e82406d3cafb83004a065b3ea1f943ced729) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Service.Test/HeightStructuresDataSynchronizationServiceTest.cs (.../HeightStructuresDataSynchronizationServiceTest.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -463,6 +463,7 @@ object[] expectedRemovedObjects = failureMechanism.Sections.OfType() .Concat(failureMechanism.SectionResultsOld) + .Concat(failureMechanism.SectionResults) .Concat(failureMechanism.CalculationsGroup.GetAllChildrenRecursive()) .Concat(failureMechanism.ForeshoreProfiles) .Concat(failureMechanism.HeightStructures) @@ -476,14 +477,16 @@ // the return result, no ToArray() should be called before these assertions: CollectionAssert.IsEmpty(failureMechanism.Sections); CollectionAssert.IsEmpty(failureMechanism.SectionResultsOld); + CollectionAssert.IsEmpty(failureMechanism.SectionResults); CollectionAssert.IsEmpty(failureMechanism.CalculationsGroup.Children); CollectionAssert.IsEmpty(failureMechanism.ForeshoreProfiles); CollectionAssert.IsEmpty(failureMechanism.HeightStructures); IObservable[] array = results.ChangedObjects.ToArray(); - Assert.AreEqual(5, array.Length); + Assert.AreEqual(6, array.Length); CollectionAssert.Contains(array, failureMechanism); CollectionAssert.Contains(array, failureMechanism.SectionResultsOld); + CollectionAssert.Contains(array, failureMechanism.SectionResults); CollectionAssert.Contains(array, failureMechanism.CalculationsGroup); CollectionAssert.Contains(array, failureMechanism.ForeshoreProfiles); CollectionAssert.Contains(array, failureMechanism.HeightStructures); Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/ReferenceLineUpdateHandlerTest.cs =================================================================== diff -u -r9abaebce4083cd3f36cbe67a0d9bc90cdb26be82 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/ReferenceLineUpdateHandlerTest.cs (.../ReferenceLineUpdateHandlerTest.cs) (revision 9abaebce4083cd3f36cbe67a0d9bc90cdb26be82) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/Handlers/ReferenceLineUpdateHandlerTest.cs (.../ReferenceLineUpdateHandlerTest.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -49,7 +49,7 @@ [TestFixture] public class ReferenceLineUpdateHandlerTest : NUnitFormTest { - private const int expectedNumberOfRemovedInstances = 201; + private const int expectedNumberOfRemovedInstances = 203; [Test] public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() @@ -206,7 +206,7 @@ IObservable[] observables = handler.Update(assessmentSection.ReferenceLine, referenceLine).ToArray(); // Assert - Assert.AreEqual(62, observables.Length); + Assert.AreEqual(63, observables.Length); PipingFailureMechanism pipingFailureMechanism = assessmentSection.Piping; CollectionAssert.IsEmpty(pipingFailureMechanism.Sections); @@ -215,6 +215,7 @@ CollectionAssert.IsEmpty(pipingFailureMechanism.ScenarioConfigurationsPerFailureMechanismSection); CollectionAssert.Contains(observables, pipingFailureMechanism); CollectionAssert.Contains(observables, pipingFailureMechanism.SectionResultsOld); + CollectionAssert.Contains(observables, pipingFailureMechanism.SectionResults); CollectionAssert.Contains(observables, pipingFailureMechanism.ScenarioConfigurationsPerFailureMechanismSection); CollectionAssert.IsEmpty(pipingFailureMechanism.CalculationsGroup.Children); CollectionAssert.Contains(observables, pipingFailureMechanism.CalculationsGroup); @@ -278,8 +279,10 @@ HeightStructuresFailureMechanism heightStructuresFailureMechanism = assessmentSection.HeightStructures; CollectionAssert.IsEmpty(heightStructuresFailureMechanism.Sections); CollectionAssert.IsEmpty(heightStructuresFailureMechanism.SectionResultsOld); + CollectionAssert.IsEmpty(heightStructuresFailureMechanism.SectionResults); CollectionAssert.Contains(observables, heightStructuresFailureMechanism); CollectionAssert.Contains(observables, heightStructuresFailureMechanism.SectionResultsOld); + CollectionAssert.Contains(observables, heightStructuresFailureMechanism.SectionResults); CollectionAssert.IsEmpty(heightStructuresFailureMechanism.CalculationsGroup.Children); CollectionAssert.Contains(observables, heightStructuresFailureMechanism.CalculationsGroup); CollectionAssert.IsEmpty(heightStructuresFailureMechanism.ForeshoreProfiles); @@ -311,6 +314,7 @@ CollectionAssert.IsEmpty(macroStabilityInwardsFailureMechanism.SectionResults); CollectionAssert.Contains(observables, macroStabilityInwardsFailureMechanism); CollectionAssert.Contains(observables, macroStabilityInwardsFailureMechanism.SectionResultsOld); + CollectionAssert.Contains(observables, macroStabilityInwardsFailureMechanism.SectionResults); CollectionAssert.IsEmpty(macroStabilityInwardsFailureMechanism.CalculationsGroup.Children); CollectionAssert.Contains(observables, macroStabilityInwardsFailureMechanism.CalculationsGroup); CollectionAssert.IsEmpty(macroStabilityInwardsFailureMechanism.StochasticSoilModels); Index: Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs =================================================================== diff -u -r9abaebce4083cd3f36cbe67a0d9bc90cdb26be82 -r4d69c4f4cd06f391026d5dc4f385dd3fba7703fc --- Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs (.../RiskeerDataSynchronizationServiceTest.cs) (revision 9abaebce4083cd3f36cbe67a0d9bc90cdb26be82) +++ Riskeer/Integration/test/Riskeer.Integration.Service.Test/RiskeerDataSynchronizationServiceTest.cs (.../RiskeerDataSynchronizationServiceTest.cs) (revision 4d69c4f4cd06f391026d5dc4f385dd3fba7703fc) @@ -1669,7 +1669,7 @@ private static void AssertChangedObjects(ClearResults results, AssessmentSection assessmentSection) { IObservable[] changedObjects = results.ChangedObjects.ToArray(); - Assert.AreEqual(62, changedObjects.Length); + Assert.AreEqual(63, changedObjects.Length); PipingFailureMechanism pipingFailureMechanism = assessmentSection.Piping; CollectionAssert.Contains(changedObjects, pipingFailureMechanism); @@ -1714,6 +1714,7 @@ HeightStructuresFailureMechanism heightStructuresFailureMechanism = assessmentSection.HeightStructures; CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism); CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism.SectionResultsOld); + CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism.SectionResults); CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism.CalculationsGroup); CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism.ForeshoreProfiles); CollectionAssert.Contains(changedObjects, heightStructuresFailureMechanism.HeightStructures); @@ -1919,7 +1920,7 @@ private static IEnumerable GetExpectedRemovedObjectsWhenClearingReferenceLine(HeightStructuresFailureMechanism failureMechanism) { - foreach (object failureMechanismObject in GetExpectedRemovedObjectsWhenClearingReferenceLineOld(failureMechanism)) + foreach (object failureMechanismObject in GetExpectedRemovedObjectsWhenClearingReferenceLine(failureMechanism)) { yield return failureMechanismObject; }