Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs
===================================================================
diff -u -r1fb8afd636f36c169e0e4ac3fa87472f372eb915 -ra4e95638762a7a1af29dd63dec477120c4faf249
--- Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision 1fb8afd636f36c169e0e4ac3fa87472f372eb915)
+++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Creators/AggregatedSerializableFailureMechanismCreator.cs (.../AggregatedSerializableFailureMechanismCreator.cs) (revision a4e95638762a7a1af29dd63dec477120c4faf249)
@@ -20,7 +20,6 @@
// All rights reserved.
using System;
-using System.Collections.Generic;
using System.Linq;
using Ringtoets.AssemblyTool.IO.Model;
using Ringtoets.Integration.IO.Assembly;
@@ -33,31 +32,67 @@
///
public static class AggregatedSerializableFailureMechanismCreator
{
+ ///
+ /// Creates an instance of an based on its input parameters.
+ ///
+ /// The id generator to generate an id for the serializable components.
+ /// The the serializable components belong to.
+ /// The with a probability to
+ /// create a for.
+ /// A .
+ /// Thrown when any parameter is null.
+ /// Thrown when the
+ /// contains unsupported items in the failure mechanism section assembly results.
public static AggregatedSerializableFailureMechanism Create(UniqueIdentifierGenerator idGenerator,
- SerializableTotalAssemblyResult serializableTotalAssembly,
+ SerializableTotalAssemblyResult serializableTotalAssemblyResult,
ExportableFailureMechanism failureMechanism)
{
- SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssembly, failureMechanism);
- var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId("Vi"), serializableFailureMechanism);
+ if (idGenerator == null)
+ {
+ throw new ArgumentNullException(nameof(idGenerator));
+ }
- var serializableFailureMechanismSectionAssemblyResults = new List();
- foreach (ExportableAggregatedFailureMechanismSectionAssemblyResultBase sectionAssemblyResult in failureMechanism.SectionAssemblyResults)
+ if (serializableTotalAssemblyResult == null)
{
- serializableFailureMechanismSectionAssemblyResults.Add(CreateFailureMechanismSectionAssembly(idGenerator,
- serializableFailureMechanism,
- serializableCollection,
- sectionAssemblyResult));
+ throw new ArgumentNullException(nameof(serializableTotalAssemblyResult));
}
+ if (failureMechanism == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanism));
+ }
+
+ SerializableFailureMechanism serializableFailureMechanism = SerializableFailureMechanismCreator.Create(idGenerator, serializableTotalAssemblyResult, failureMechanism);
+ var serializableCollection = new SerializableFailureMechanismSectionCollection(idGenerator.GetNewId("Vi"), serializableFailureMechanism);
+
+ AggregatedSerializableFailureMechanismSectionAssembly[] serializableFailureMechanismSectionAssemblyResults =
+ failureMechanism.SectionAssemblyResults
+ .Select(sectionAssemblyResult => CreateFailureMechanismSectionAssembly(idGenerator,
+ serializableFailureMechanism,
+ serializableCollection,
+ sectionAssemblyResult))
+ .ToArray();
+
return new AggregatedSerializableFailureMechanism(serializableFailureMechanism,
serializableCollection,
serializableFailureMechanismSectionAssemblyResults.Select(fmr => fmr.FailureMechanismSection),
serializableFailureMechanismSectionAssemblyResults.Select(fmr => fmr.FailureMechanismSectionAssembly));
}
+ ///
+ /// Creates an instance of based on its input parameters.
+ ///
+ /// The id generator to generate the id for the serializable components.
+ /// The the section assembly belongs to.
+ /// The the section assembly belongs to.
+ /// An aggregated failure mechanism section assembly result to
+ /// create a for.
+ /// An .
+ /// Thrown when an
+ /// cannot be created for .
private static AggregatedSerializableFailureMechanismSectionAssembly CreateFailureMechanismSectionAssembly(
UniqueIdentifierGenerator idGenerator,
- SerializableFailureMechanism serializableFailureMechanism,
+ SerializableFailureMechanism serializableFailureMechanism,
SerializableFailureMechanismSectionCollection serializableCollection,
ExportableAggregatedFailureMechanismSectionAssemblyResultBase failureMechanismSectionAssemblyResult)
{
@@ -67,7 +102,19 @@
return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithProbability);
}
- throw new NotSupportedException();
+ var resultWithoutProbability = failureMechanismSectionAssemblyResult as ExportableAggregatedFailureMechanismSectionAssemblyResult;
+ if (resultWithoutProbability != null)
+ {
+ return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithoutProbability);
+ }
+
+ var resultWithoutDetailedAssembly = failureMechanismSectionAssemblyResult as ExportableAggregatedFailureMechanismSectionAssemblyResultWithoutDetailedAssembly;
+ if (resultWithoutDetailedAssembly != null)
+ {
+ return AggregatedSerializableFailureMechanismSectionAssemblyCreator.Create(idGenerator, serializableCollection, serializableFailureMechanism, resultWithoutDetailedAssembly);
+ }
+
+ throw new NotSupportedException($"{failureMechanismSectionAssemblyResult.GetType().Name} is not supported.");
}
}
}
\ No newline at end of file