Index: Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs =================================================================== diff -u -rdd5ae117c10d97b388757d9d2a865c0860a64448 -r239ea628125c5ec4004a843abce2d269af93c431 --- Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs (.../ReferenceLinesMetaReader.cs) (revision dd5ae117c10d97b388757d9d2a865c0860a64448) +++ Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLinesMetaReader.cs (.../ReferenceLinesMetaReader.cs) (revision 239ea628125c5ec4004a843abce2d269af93c431) @@ -57,7 +57,6 @@ /// The shape file does not contain the mandatory attributes. /// Has an empty attribute. /// The shape file has non-line geometries in it. - /// Contains multiple poly lines. /// public static List ReadReferenceLinesMetas(string shapeFilePath) { @@ -177,16 +176,13 @@ /// /// The to create a from. /// The newly created . - /// Thrown when the shape file contains multiple poly lines. private static ReferenceLineMeta CreateReferenceLineMeta(MapLineData lineData) { - var features = lineData.Features.ToArray(); + var feature = lineData.Features.First(); - var feature = features[0]; - string assessmentSectionId = GetAssessmentSectionId(feature); - int? signalingValue = GetSignalingValueAttributeKey(feature); - int? lowerLimitValue = GetLowerLimitValueAttribute(feature); + int? signalingValue = ParseNormValue(feature.MetaData[signalingValueAttributeKey]); + int? lowerLimitValue = ParseNormValue(feature.MetaData[lowerLimitValueAttributeKey]); IEnumerable geometryPoints = GetSectionGeometry(feature); var referenceLineMeta = new ReferenceLineMeta @@ -211,13 +207,12 @@ /// /// The to get the geometry from. /// A collection that represents the 's geometry. - /// Thrown when the shape file contains multiple poly lines. private static IEnumerable GetSectionGeometry(MapFeature lineFeature) { var mapGeometries = lineFeature.MapGeometries.ToArray(); if (mapGeometries.Length > 1) { - throw new CriticalFileReadException(RingtoetsCommonIOResources.ReferenceLineReader_File_contains_unsupported_multi_polyline); + return Enumerable.Empty(); } return mapGeometries[0].PointCollections.First().Select(p => new Point2D(p.X, p.Y)); @@ -228,14 +223,20 @@ return Convert.ToString(lineFeature.MetaData[assessmentsectionIdAttributeKey]); } - private static int? GetSignalingValueAttributeKey(MapFeature lineFeature) + private static int? ParseNormValue(object readObject) { - return lineFeature.MetaData[signalingValueAttributeKey] as int?; + try + { + return Convert.ToInt32(readObject); + } + catch (Exception exception) + { + if (exception is InvalidCastException || exception is FormatException || exception is OverflowException) + { + return null; + } + throw; + } } - - private static int? GetLowerLimitValueAttribute(MapFeature lineFeature) - { - return lineFeature.MetaData[lowerLimitValueAttributeKey] as int?; - } } } \ No newline at end of file