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