Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs
===================================================================
diff -u -rb2b9fdf365e70928a05c57966eeed30d9050e528 -r89d34600d1408c8b1f4240020e841ba64cc26622
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision b2b9fdf365e70928a05c57966eeed30d9050e528)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingDataSynchronizationService.cs (.../PipingDataSynchronizationService.cs) (revision 89d34600d1408c8b1f4240020e841ba64cc26622)
@@ -220,6 +220,43 @@
return changedObservables;
}
+ ///
+ /// Removes a given from calculations in the
+ /// and clears all data that depends on it, either directly or indirectly.
+ ///
+ /// The failure mechanism containing .
+ /// The soil profile residing in
+ /// that should be removed.
+ /// All observable objects affected by this method.
+ /// Thrown when
+ /// or is null.
+ public static IEnumerable RemoveStochasticSoilProfileFromInput(PipingFailureMechanism failureMechanism, StochasticSoilProfile soilProfile)
+ {
+ if (failureMechanism == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanism));
+ }
+ if (soilProfile == null)
+ {
+ throw new ArgumentNullException(nameof(soilProfile));
+ }
+
+ var changedObservables = new List();
+
+ IEnumerable pipingCalculationScenarios =
+ failureMechanism.Calculations
+ .Cast()
+ .Where(pcs => ReferenceEquals(pcs.InputParameters.StochasticSoilProfile, soilProfile));
+
+ foreach (PipingCalculation pipingCalculationScenario in pipingCalculationScenarios)
+ {
+ changedObservables.AddRange(RingtoetsCommonDataSynchronizationService.ClearCalculationOutput(pipingCalculationScenario));
+ changedObservables.AddRange(ClearStochasticSoilProfile(pipingCalculationScenario.InputParameters));
+ }
+
+ return changedObservables;
+ }
+
private static IEnumerable ClearSurfaceLine(PipingInput input)
{
input.SurfaceLine = null;
@@ -240,6 +277,16 @@
};
}
+ private static IEnumerable ClearStochasticSoilProfile(PipingInput input)
+ {
+ input.StochasticSoilProfile = null;
+
+ return new[]
+ {
+ input
+ };
+ }
+
private static IEnumerable ClearHydraulicBoundaryLocation(PipingInput input)
{
if (input.HydraulicBoundaryLocation != null)