Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs
===================================================================
diff -u -rd0996c2eb38e607698ffe7f57e6e1847f8550a8f -rce9e1d476f00cfb42ce2a8ab6c762baf5abfd97b
--- Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision d0996c2eb38e607698ffe7f57e6e1847f8550a8f)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Service/RingtoetsDataSynchronizationService.cs (.../RingtoetsDataSynchronizationService.cs) (revision ce9e1d476f00cfb42ce2a8ab6c762baf5abfd97b)
@@ -213,71 +213,38 @@
/// Clears the reference line and all data that depends on it, either directly or indirectly.
///
/// The assessment section.
- /// All observable objects affected by this method.
+ /// The results of the clear action.
/// Thrown when
/// is null .
- public static IEnumerable ClearReferenceLine(IAssessmentSection assessmentSection)
+ public static ClearResults ClearReferenceLine(IAssessmentSection assessmentSection)
{
if (assessmentSection == null)
{
throw new ArgumentNullException("assessmentSection");
}
- var list = new List();
+ var changedObjects = new List();
+ var removedObjects = new List();
foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms())
{
- var pipingFailureMechanism = failureMechanism as PipingFailureMechanism;
- var grassCoverErosionInwardsFailureMechanism = failureMechanism as GrassCoverErosionInwardsFailureMechanism;
- var stabilityStoneCoverFailureMechanism = failureMechanism as StabilityStoneCoverFailureMechanism;
- var heightStructuresFailureMechanism = failureMechanism as HeightStructuresFailureMechanism;
- var closingStructuresFailureMechanism = failureMechanism as ClosingStructuresFailureMechanism;
- var stabilityPointStructuresFailureMechanism = failureMechanism as StabilityPointStructuresFailureMechanism;
- var grassCoverErosionOutwardsFailureMechanism = failureMechanism as GrassCoverErosionOutwardsFailureMechanism;
- var waveImpactAsphaltCoverFailureMechanism = failureMechanism as WaveImpactAsphaltCoverFailureMechanism;
+ Func clearAction = GetClearMethodForFailureMechanism(failureMechanism);
- if (pipingFailureMechanism != null)
- {
- list.AddRange(PipingDataSynchronizationService.ClearReferenceLineDependentData(pipingFailureMechanism));
- }
- else if (grassCoverErosionInwardsFailureMechanism != null)
- {
- list.AddRange(GrassCoverErosionInwardsDataSynchronizationService.ClearReferenceLineDependentData(grassCoverErosionInwardsFailureMechanism));
- }
- else if (stabilityStoneCoverFailureMechanism != null)
- {
- list.AddRange(StabilityStoneCoverDataSynchronizationService.ClearReferenceLineDependentData(stabilityStoneCoverFailureMechanism));
- }
- else if (waveImpactAsphaltCoverFailureMechanism != null)
- {
- list.AddRange(WaveImpactAsphaltCoverDataSynchronizationService.ClearReferenceLineDependentData(waveImpactAsphaltCoverFailureMechanism));
- }
- else if (grassCoverErosionOutwardsFailureMechanism != null)
- {
- list.AddRange(GrassCoverErosionOutwardsDataSynchronizationService.ClearReferenceLineDependentData(grassCoverErosionOutwardsFailureMechanism));
- }
- else if (heightStructuresFailureMechanism != null)
- {
- list.AddRange(HeightStructuresDataSynchronizationService.ClearReferenceLineDependentData(heightStructuresFailureMechanism));
- }
- else if (closingStructuresFailureMechanism != null)
- {
- list.AddRange(ClosingStructuresDataSynchronizationService.ClearReferenceLineDependentData(closingStructuresFailureMechanism));
- }
- else if (stabilityPointStructuresFailureMechanism != null)
- {
- list.AddRange(StabilityPointStructuresDataSynchronizationService.ClearReferenceLineDependentData(stabilityPointStructuresFailureMechanism));
- }
- else
- {
- list.AddRange(ClearReferenceLineDependentData(failureMechanism));
- }
+ ClearResults results = clearAction();
+
+ changedObjects.AddRange(results.ChangedObjects);
+ removedObjects.AddRange(results.DeletedObjects);
}
- assessmentSection.ReferenceLine = null;
- list.Add(assessmentSection);
+ if (assessmentSection.ReferenceLine != null)
+ {
+ removedObjects.Add(assessmentSection.ReferenceLine);
+ assessmentSection.ReferenceLine = null;
+ }
- return list;
+ changedObjects.Add(assessmentSection);
+
+ return new ClearResults(changedObjects, removedObjects);
}
///
@@ -521,13 +488,74 @@
return changedObservables;
}
- private static IEnumerable ClearReferenceLineDependentData(IFailureMechanism failureMechanism)
+ private static Func GetClearMethodForFailureMechanism(IFailureMechanism failureMechanism)
{
+ var pipingFailureMechanism = failureMechanism as PipingFailureMechanism;
+ if (pipingFailureMechanism != null)
+ {
+ return () => PipingDataSynchronizationService.ClearReferenceLineDependentData(pipingFailureMechanism);
+ }
+
+ var grassCoverErosionInwardsFailureMechanism = failureMechanism as GrassCoverErosionInwardsFailureMechanism;
+ if (grassCoverErosionInwardsFailureMechanism != null)
+ {
+ return () => GrassCoverErosionInwardsDataSynchronizationService.ClearReferenceLineDependentData(grassCoverErosionInwardsFailureMechanism);
+ }
+
+ var stabilityStoneCoverFailureMechanism = failureMechanism as StabilityStoneCoverFailureMechanism;
+ if (stabilityStoneCoverFailureMechanism != null)
+ {
+ return () => StabilityStoneCoverDataSynchronizationService.ClearReferenceLineDependentData(stabilityStoneCoverFailureMechanism);
+ }
+
+ var waveImpactAsphaltCoverFailureMechanism = failureMechanism as WaveImpactAsphaltCoverFailureMechanism;
+ if (waveImpactAsphaltCoverFailureMechanism != null)
+ {
+ return () => WaveImpactAsphaltCoverDataSynchronizationService.ClearReferenceLineDependentData(waveImpactAsphaltCoverFailureMechanism);
+ }
+
+ var grassCoverErosionOutwardsFailureMechanism = failureMechanism as GrassCoverErosionOutwardsFailureMechanism;
+ if (grassCoverErosionOutwardsFailureMechanism != null)
+ {
+ return () => GrassCoverErosionOutwardsDataSynchronizationService.ClearReferenceLineDependentData(grassCoverErosionOutwardsFailureMechanism);
+ }
+
+ var heightStructuresFailureMechanism = failureMechanism as HeightStructuresFailureMechanism;
+ if (heightStructuresFailureMechanism != null)
+ {
+ return () => HeightStructuresDataSynchronizationService.ClearReferenceLineDependentData(heightStructuresFailureMechanism);
+ }
+
+ var closingStructuresFailureMechanism = failureMechanism as ClosingStructuresFailureMechanism;
+ if (closingStructuresFailureMechanism != null)
+ {
+ return () => ClosingStructuresDataSynchronizationService.ClearReferenceLineDependentData(closingStructuresFailureMechanism);
+ }
+
+ var stabilityPointStructuresFailureMechanism = failureMechanism as StabilityPointStructuresFailureMechanism;
+ if (stabilityPointStructuresFailureMechanism != null)
+ {
+ return () => StabilityPointStructuresDataSynchronizationService.ClearReferenceLineDependentData(stabilityPointStructuresFailureMechanism);
+ }
+ return () => ClearReferenceLineDependentData(failureMechanism);
+ }
+
+ private static ClearResults ClearReferenceLineDependentData(IFailureMechanism failureMechanism)
+ {
+ var removedObjects = new List();
+ removedObjects.AddRange(failureMechanism.Sections);
+ var failureMechanismWithSectionResults = failureMechanism as IHasSectionResults;
+ if (failureMechanismWithSectionResults != null)
+ {
+ removedObjects.AddRange(failureMechanismWithSectionResults.SectionResults);
+ }
+
failureMechanism.ClearAllSections();
- return new[]
+
+ return new ClearResults(new[]
{
failureMechanism
- };
+ }, removedObjects);
}
private static IEnumerable OnWaveConditionsInputForeshoreProfileRemoved(ForeshoreProfile profile, WaveConditionsInput[] calculationInputs)