Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/FileImporters/HeightStructureUpdateDataStrategy.cs =================================================================== diff -u -r4954f3a3c5eab3aff1b2d4c5a58364f06fe4bbd2 -rf21dfc68719af2540c7c07392fdd3d045907098d --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/FileImporters/HeightStructureUpdateDataStrategy.cs (.../HeightStructureUpdateDataStrategy.cs) (revision 4954f3a3c5eab3aff1b2d4c5a58364f06fe4bbd2) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/FileImporters/HeightStructureUpdateDataStrategy.cs (.../HeightStructureUpdateDataStrategy.cs) (revision f21dfc68719af2540c7c07392fdd3d045907098d) @@ -21,13 +21,16 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base; using Ringtoets.Common.Data; using Ringtoets.Common.Data.Exceptions; +using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Data.UpdateDataStrategies; using Ringtoets.Common.IO.Exceptions; using Ringtoets.Common.IO.Properties; using Ringtoets.Common.IO.Structures; +using Ringtoets.Common.Utils; using Ringtoets.HeightStructures.Data; using Ringtoets.HeightStructures.Service; @@ -74,6 +77,22 @@ #endregion + /// + /// Class for comparing by only the id. + /// + private class StructureIdEqualityComparer : IEqualityComparer + { + public bool Equals(HeightStructure x, HeightStructure y) + { + return x.Id.Equals(y.Id); + } + + public int GetHashCode(HeightStructure obj) + { + return obj.Id.GetHashCode(); + } + } + #region Updating Data Functions protected override IEnumerable UpdateObjectAndDependentData(HeightStructure objectToUpdate, @@ -84,27 +103,43 @@ if (!objectToUpdate.Equals(objectToUpdateFrom)) { objectToUpdate.CopyProperties(objectToUpdateFrom); + + affectedObjects.AddRange(UpdateHeightStructureDependentData(objectToUpdate)); } return affectedObjects; } - #endregion - - /// - /// Class for comparing by only the id. - /// - private class StructureIdEqualityComparer : IEqualityComparer + private IEnumerable UpdateHeightStructureDependentData(HeightStructure structure) { - public bool Equals(HeightStructure x, HeightStructure y) - { - return x.Id.Equals(y.Id); - } + var affectedObjects = new List(); - public int GetHashCode(HeightStructure obj) + foreach (StructuresCalculation affectedCalculation in GetAffectedCalculationsWithHeightStructure(structure)) { - return obj.Id.GetHashCode(); + affectedObjects.Add(affectedCalculation.InputParameters); + if (affectedCalculation.HasOutput) + { + affectedObjects.Add(affectedCalculation); + } } + + affectedObjects.AddRange(StructuresHelper.UpdateCalculationToSectionResultAssignments( + FailureMechanism.SectionResults, + FailureMechanism.Calculations.Cast>()) + ); + + return affectedObjects; } + + private IEnumerable> GetAffectedCalculationsWithHeightStructure(HeightStructure structure) + { + IEnumerable> affectedCalculations = + FailureMechanism.Calculations + .Cast>() + .Where(calc => ReferenceEquals(calc.InputParameters.Structure, structure)); + return affectedCalculations; + } + + #endregion } } \ No newline at end of file