Index: Ringtoets/Common/src/Ringtoets.Common.Utils/AssignUnassignCalculations.cs
===================================================================
diff -u -re60dbf2fd41434270cad4efba20446e19ede0d2e -r2a0fbe6ec22928831305671ecd4f41030b827250
--- Ringtoets/Common/src/Ringtoets.Common.Utils/AssignUnassignCalculations.cs (.../AssignUnassignCalculations.cs) (revision e60dbf2fd41434270cad4efba20446e19ede0d2e)
+++ Ringtoets/Common/src/Ringtoets.Common.Utils/AssignUnassignCalculations.cs (.../AssignUnassignCalculations.cs) (revision 2a0fbe6ec22928831305671ecd4f41030b827250)
@@ -36,55 +36,30 @@
public static class AssignUnassignCalculations
{
///
- /// Update objects which used or can use the .
+ /// Update objects with the .
///
/// The objects which contain the
/// information about assigning calculations to sections.
- /// The which's location is used to match with the
- /// location of the section.
+ /// All the currently known calculations to try and match with section results.
+ /// All affected objects by the update.
/// Thrown when any input parameter is null.
- /// Thrown when contains a null element.
- public static void Update(IEnumerable sectionResults, CalculationWithLocation calculation)
- {
- ValidateSectionResults(sectionResults);
- ValidateCalculationWithLocation(calculation);
-
- var sectionResultsArray = sectionResults.ToArray();
-
- FailureMechanismSection failureMechanismSectionContainingCalculation =
- FailureMechanismSectionForCalculation(sectionResultsArray.Select(sr => sr.Result.Section), calculation);
-
- UnassignCalculationInSectionResultsNotContainingCalculation(calculation, sectionResultsArray, failureMechanismSectionContainingCalculation);
-
- AssignCalculationIfContainingSectionResultHasNoCalculationAssigned(calculation, sectionResultsArray, failureMechanismSectionContainingCalculation);
- }
-
- ///
- /// Update objects which use the deleted .
- ///
- /// The objects which contain the
- /// information about assigning calculations to sections.
- /// The that was removed.
- /// All the remaining calculations after deletion of the .
- /// All affected objects by the deletion.
- /// Thrown when any input parameter is null.
/// Thrown when or
/// contains a null element.
- public static IEnumerable Delete(
+ public static IEnumerable Update(
IEnumerable sectionResults,
- ICalculation calculation,
IEnumerable calculations)
{
ValidateSectionResults(sectionResults);
ValidateCalculations(calculations);
- ValidateCalculation(calculation);
var sectionResultsArray = sectionResults.ToArray();
Dictionary> calculationsPerSegmentName =
CollectCalculationsPerSection(sectionResultsArray.Select(sr => sr.Result.Section), calculations);
- return UnassignCalculationInAllSectionResultsAndAssignSingleRemainingCalculation(sectionResultsArray, calculation, calculationsPerSegmentName);
+ return UnassignCalculationInAllSectionResultsAndAssignSingleRemainingCalculation(
+ sectionResultsArray,
+ calculationsPerSegmentName);
}
///
@@ -147,56 +122,38 @@
private static IEnumerable UnassignCalculationInAllSectionResultsAndAssignSingleRemainingCalculation(
IEnumerable sectionResults,
- ICalculation calculation, Dictionary> calculationsPerSegmentName)
+ Dictionary> calculationsPerSegmentName)
{
- IEnumerable sectionResultsUsingCalculation =
- sectionResults.Where(sr => sr.Calculation != null && ReferenceEquals(sr.Calculation, calculation));
-
var affectedObjects = new Collection();
- foreach (SectionResultWithCalculationAssignment sectionResult in sectionResultsUsingCalculation)
+ foreach (SectionResultWithCalculationAssignment sectionResult in sectionResults)
{
string sectionName = sectionResult.Result.Section.Name;
- if (calculationsPerSegmentName.ContainsKey(sectionName) && calculationsPerSegmentName[sectionName].Count == 1)
+ var affected = false;
+ if (!calculationsPerSegmentName.ContainsKey(sectionName))
{
- sectionResult.Calculation = calculationsPerSegmentName[sectionName].Single();
- }
- else
- {
sectionResult.Calculation = null;
+ affected = true;
}
- affectedObjects.Add(sectionResult.Result);
- }
- return affectedObjects;
- }
-
- private static void AssignCalculationIfContainingSectionResultHasNoCalculationAssigned(
- CalculationWithLocation calculationWithLocation,
- IEnumerable sectionResults,
- FailureMechanismSection failureMechanismSection)
- {
- foreach (var sectionResult in sectionResults)
- {
- if (ReferenceEquals(sectionResult.Result.Section, failureMechanismSection) && sectionResult.Calculation == null)
+ if (calculationsPerSegmentName.ContainsKey(sectionName))
{
- sectionResult.Calculation = calculationWithLocation.Calculation;
+ var calculationsInCurrentSection = calculationsPerSegmentName[sectionName];
+ if (!calculationsInCurrentSection.Contains(sectionResult.Calculation))
+ {
+ sectionResult.Calculation = null;
+ affected = true;
+ }
+ if (sectionResult.Calculation == null && calculationsInCurrentSection.Count == 1)
+ {
+ sectionResult.Calculation = calculationsInCurrentSection.Single();
+ affected = true;
+ }
}
- }
- }
-
- private static void UnassignCalculationInSectionResultsNotContainingCalculation(
- CalculationWithLocation calculationWithLocation,
- IEnumerable sectionResults,
- FailureMechanismSection failureMechanismSection)
- {
- IEnumerable sectionResultsUsingCalculation =
- sectionResults.Where(sr => sr.Calculation != null && ReferenceEquals(sr.Calculation, calculationWithLocation.Calculation));
- foreach (var sectionResult in sectionResultsUsingCalculation)
- {
- if (!ReferenceEquals(sectionResult.Result.Section, failureMechanismSection))
+ if (affected)
{
- sectionResult.Calculation = null;
+ affectedObjects.Add(sectionResult.Result);
}
}
+ return affectedObjects;
}
private static FailureMechanismSection FindSectionAtLocation(IEnumerable sectionSegmentsCollection,
@@ -229,14 +186,6 @@
}
}
- private static void ValidateCalculation(ICalculation calculation)
- {
- if (calculation == null)
- {
- throw new ArgumentNullException("calculation");
- }
- }
-
private static void ValidateCalculationWithLocation(CalculationWithLocation calculation)
{
if (calculation == null)