Index: Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs =================================================================== diff -u -rc77ccbb8b26516270f36ef53110be573839f3470 -rcf5fa63f05c1018cdb14d5c664fa21f26026150c --- Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs (.../IllustrationPointNodeConverter.cs) (revision c77ccbb8b26516270f36ef53110be573839f3470) +++ Ringtoets/Common/src/Ringtoets.Common.Service/IllustrationPoints/IllustrationPointNodeConverter.cs (.../IllustrationPointNodeConverter.cs) (revision cf5fa63f05c1018cdb14d5c664fa21f26026150c) @@ -23,7 +23,7 @@ using System.Linq; using Ringtoets.Common.Data.Exceptions; using Ringtoets.Common.Data.IllustrationPoints; -using Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints; +using HydraRingIIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IIllustrationPoint; using HydraRingFaultTreeIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.FaultTreeIllustrationPoint; using HydraRingSubMechanismIllustrationPoint = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.SubMechanismIllustrationPoint; using HydraRingIllustrationPointTreeNode = Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints.IllustrationPointTreeNode; @@ -56,13 +56,17 @@ throw new ArgumentNullException(nameof(hydraRingIllustrationPointTreeNode)); } - IllustrationPointBase data = ConvertIllustrationPointTreeNodeData(hydraRingIllustrationPointTreeNode.Data); + IllustrationPointBase data; - if (data == null) + try { + data = ConvertIllustrationPointTreeNodeData(hydraRingIllustrationPointTreeNode.Data); + } + catch (NotSupportedException e) + { string errorMessage = "An illustration point containing a Hydra ring data type of " + $"{hydraRingIllustrationPointTreeNode.Data.GetType()} is not supported."; - throw new IllustrationPointConversionException(errorMessage); + throw new IllustrationPointConversionException(errorMessage, e); } var illustrationPointNode = new IllustrationPointNode(data); @@ -71,15 +75,33 @@ return illustrationPointNode; } - private static IllustrationPointBase ConvertIllustrationPointTreeNodeData(IIllustrationPoint data) + /// + /// Creates a new instance of a based on the + /// . + /// + /// The to base the + /// to create on. + /// A , null when no appropriate + /// conversion was found. + /// Thrown when + /// could not be converted. + /// Thrown when no suitable conversion for + /// was found. + private static IllustrationPointBase ConvertIllustrationPointTreeNodeData(HydraRingIIllustrationPoint data) { var faultTreeIllustrationPoint = data as HydraRingFaultTreeIllustrationPoint; + if (faultTreeIllustrationPoint != null) + { + return FaultTreeIllustrationPointConverter.Convert(faultTreeIllustrationPoint); + } + var subMechanismIllustrationPoint = data as HydraRingSubMechanismIllustrationPoint; - return faultTreeIllustrationPoint != null - ? (IllustrationPointBase) FaultTreeIllustrationPointConverter.Convert(faultTreeIllustrationPoint) - : (subMechanismIllustrationPoint != null - ? SubMechanismIllustrationPointConverter.Convert(subMechanismIllustrationPoint) - : null); + if (subMechanismIllustrationPoint != null) + { + return SubMechanismIllustrationPointConverter.Convert(subMechanismIllustrationPoint); + } + + throw new NotSupportedException($"Cannot convert {data.GetType()}."); } } } \ No newline at end of file