Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs
===================================================================
diff -u -r15d97cb9dc7d76f8c8f89261d7ea8a46b9643b01 -r6ed40142f26dda106581e03da03fcf411fc0514d
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 15d97cb9dc7d76f8c8f89261d7ea8a46b9643b01)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 6ed40142f26dda106581e03da03fcf411fc0514d)
@@ -22,6 +22,7 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Schema;
@@ -70,7 +71,7 @@
/// A collection of read .
public IEnumerable Read()
{
- return ParseReadPipingCalculationItems(xmlDocument.Root.Elements()); // Note: root element is always present due to XSD validation
+ return ParseReadPipingCalculationItems(xmlDocument.Root?.Elements());
}
///
@@ -148,18 +149,62 @@
private static ReadPipingCalculationGroup ParseReadPipingCalculationGroup(XElement folderElement)
{
- return new ReadPipingCalculationGroup(folderElement.Attribute("naam").Value,
+ return new ReadPipingCalculationGroup(folderElement.Attribute("naam")?.Value,
ParseReadPipingCalculationItems(folderElement.Elements()));
}
- private static ReadPipingCalculation ParseReadPipingCalculation(XElement element)
+ private static ReadPipingCalculation ParseReadPipingCalculation(XElement calculationElement)
{
- return new ReadPipingCalculation(new ReadPipingCalculation.ConstructionProperties
+ var constructionProperties = new ReadPipingCalculation.ConstructionProperties
{
- Name = element.Attribute("naam").Value
- });
+ Name = calculationElement.Attribute("naam")?.Value,
+ AssessmentLevel = GetDoubleValueFromChildElement(calculationElement, "toetspeil"),
+ HydraulicBoundaryLocation = GetStringValueFromChildElement(calculationElement, "hrlocatie"),
+ SurfaceLine = GetStringValueFromChildElement(calculationElement, "profielschematisatie"),
+ EntryPointL = GetDoubleValueFromChildElement(calculationElement, "intredepunt"),
+ ExitPointL = GetDoubleValueFromChildElement(calculationElement, "uittredepunt"),
+ StochasticSoilModel = GetStringValueFromChildElement(calculationElement, "ondergrondmodel"),
+ StochasticSoilProfile = GetStringValueFromChildElement(calculationElement, "ondergrondschematisatie")
+ };
+
+ XElement phreaticLevelExitElement = GetStochastChildElement(calculationElement, "polderpeil");
+ if (phreaticLevelExitElement != null)
+ {
+ constructionProperties.PhreaticLevelExitMean = GetDoubleValueFromChildElement(phreaticLevelExitElement, "verwachtingswaarde");
+ constructionProperties.PhreaticLevelExitStandardDeviation = GetDoubleValueFromChildElement(phreaticLevelExitElement, "standaardafwijking");
+ }
+
+ XElement dampingFactorExitElement = GetStochastChildElement(calculationElement, "dempingsfactor");
+ if (dampingFactorExitElement != null)
+ {
+ constructionProperties.DampingFactorExitMean = GetDoubleValueFromChildElement(dampingFactorExitElement, "verwachtingswaarde");
+ constructionProperties.DampingFactorExitStandardDeviation = GetDoubleValueFromChildElement(dampingFactorExitElement, "standaardafwijking");
+ }
+
+ return new ReadPipingCalculation(constructionProperties);
}
+ private static double? GetDoubleValueFromChildElement(XElement parentElement, string childElementName)
+ {
+ XElement childElement = parentElement.Elements(childElementName).FirstOrDefault();
+
+ return childElement != null
+ ? (double?) Convert.ToDouble(childElement.Value)
+ : null;
+ }
+
+ private static string GetStringValueFromChildElement(XElement parentElement, string childElementName)
+ {
+ XElement childElement = parentElement.Elements(childElementName).FirstOrDefault();
+
+ return childElement?.Value;
+ }
+
+ private static XElement GetStochastChildElement(XElement parentElement, string stochastName)
+ {
+ return parentElement.Elements("stochast").FirstOrDefault(e => e.Attribute("naam")?.Value == stochastName);
+ }
+
private static XmlSchemaSet LoadXmlSchema()
{
Stream schemaFile = AssemblyUtils.GetAssemblyResourceStream(typeof(PipingConfigurationReader).Assembly,