Index: Ringtoets/Common/src/Ringtoets.Common.Data/UpdateDataStrategies/UpdateDataStrategyBase.cs
===================================================================
diff -u -rdd4e75e27880fc06f6823cca424a010ab19adb33 -r85b53922d59e2d43ef299322b89e0de7ea085c63
--- Ringtoets/Common/src/Ringtoets.Common.Data/UpdateDataStrategies/UpdateDataStrategyBase.cs (.../UpdateDataStrategyBase.cs) (revision dd4e75e27880fc06f6823cca424a010ab19adb33)
+++ Ringtoets/Common/src/Ringtoets.Common.Data/UpdateDataStrategies/UpdateDataStrategyBase.cs (.../UpdateDataStrategyBase.cs) (revision 85b53922d59e2d43ef299322b89e0de7ea085c63)
@@ -67,21 +67,21 @@
}
///
- /// Updates the (dependent) objects with new data from the imported data.
+ /// Updates the object and its dependent data with data from the imported data.
///
- /// Objects that need to be updated.
- /// The data that was imported.
+ /// Object that needs to be updated.
+ /// The object to update from.
/// An with affected objects.
/// Thrown when duplicate items are found.
- protected abstract IEnumerable UpdateData(IEnumerable objectsToUpdate,
- IEnumerable importedDataCollection);
+ protected abstract IEnumerable UpdateObjectAndDependentData(TTargetData objectToUpdate,
+ TTargetData objectToUpdateFrom);
///
/// Removes the objects and their dependent data.
///
- /// The objects that are removed.
+ /// The object that is removed.
/// An with affected objects.
- protected abstract IEnumerable RemoveData(IEnumerable removedObjects);
+ protected abstract IEnumerable RemoveObjectAndDependentData(TTargetData removedObject);
///
/// Updates the items and their associated data within the target collection with the data contained
@@ -141,7 +141,7 @@
TTargetData[] objectsToBeUpdated = GetObjectsToBeUpdated(targetDataCollection, importedObjects).ToArray();
var affectedObjects = new List();
- if (objectsToBeAdded.Any())
+ if (objectsToBeAdded.Any() || objectsToBeRemoved.Any())
{
affectedObjects.Add(targetDataCollection);
}
@@ -167,5 +167,42 @@
{
return importedDataObjects.Where(source => !existingCollection.Contains(source, equalityComparer));
}
+
+ ///
+ /// Updates all the objects and their dependent data that needs to be updated with data from the imported data collection.
+ ///
+ /// The objects that need to be updated.
+ /// The data to update from.
+ /// A of affected items.
+ private IEnumerable UpdateData(IEnumerable objectsToUpdate,
+ IEnumerable importedDataCollection)
+ {
+ var affectedObjects = new List();
+
+ foreach (TTargetData objectToUpdate in objectsToUpdate)
+ {
+ TTargetData objectToUpdateFrom = importedDataCollection.Single(importedObject =>
+ equalityComparer.Equals(importedObject, objectToUpdate));
+ affectedObjects.AddRange(UpdateObjectAndDependentData(objectToUpdate, objectToUpdateFrom));
+ }
+
+ return affectedObjects;
+ }
+
+ ///
+ /// Removes all the objects and their dependent data.
+ ///
+ /// The objects that need to be removed.
+ /// A of affected items.
+ private IEnumerable RemoveData(IEnumerable objectsToRemove)
+ {
+ var affectedObjects = new List();
+
+ foreach (TTargetData objectToRemove in objectsToRemove)
+ {
+ affectedObjects.AddRange(RemoveObjectAndDependentData(objectToRemove));
+ }
+ return affectedObjects;
+ }
}
}
\ No newline at end of file