Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Exporters/PipingConfigurationWriter.cs
===================================================================
diff -u -r3aa7e76b08eadd9497740489ed3daad5f2e13b0e -r97c94a903e0fd98edd8cd4120340f91f06d3955c
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Exporters/PipingConfigurationWriter.cs (.../PipingConfigurationWriter.cs) (revision 3aa7e76b08eadd9497740489ed3daad5f2e13b0e)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Exporters/PipingConfigurationWriter.cs (.../PipingConfigurationWriter.cs) (revision 97c94a903e0fd98edd8cd4120340f91f06d3955c)
@@ -20,95 +20,23 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using System.Xml;
-using Core.Common.IO.Exceptions;
-using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.Probabilistics;
using Ringtoets.Common.IO.Schema;
+using Ringtoets.Common.IO.Writers;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.IO.Schema;
-using CoreCommonUtilsResources = Core.Common.Utils.Properties.Resources;
namespace Ringtoets.Piping.IO.Exporters
{
///
/// Writer for writing a piping configuration to XML.
///
- internal static class PipingConfigurationWriter
+ internal class PipingConfigurationWriter : CalculationConfigurationWriter
{
- ///
- /// Writes a piping configuration to an XML file.
- ///
- /// The root calculation group containing the piping configuration to write.
- /// The path to the target XML file.
- /// Thrown when any parameter is null.
- /// Thrown when unable to write to .
- /// The itself will not be part of the written XML, only its children.
- internal static void Write(CalculationGroup rootCalculationGroup, string filePath)
+ protected override void WriteCalculation(PipingCalculation calculation, XmlWriter writer)
{
- if (rootCalculationGroup == null)
- {
- throw new ArgumentNullException(nameof(rootCalculationGroup));
- }
- if (filePath == null)
- {
- throw new ArgumentNullException(nameof(filePath));
- }
-
- try
- {
- var settings = new XmlWriterSettings
- {
- Indent = true
- };
-
- using (XmlWriter writer = XmlWriter.Create(filePath, settings))
- {
- writer.WriteStartDocument();
- writer.WriteStartElement(ConfigurationSchemaIdentifiers.ConfigurationElement);
-
- WriteConfiguration(rootCalculationGroup, writer);
-
- writer.WriteEndElement();
- writer.WriteEndDocument();
- }
- }
- catch (SystemException e)
- {
- throw new CriticalFileWriteException(string.Format(CoreCommonUtilsResources.Error_General_output_error_0, filePath), e);
- }
- }
-
- private static void WriteConfiguration(CalculationGroup calculationGroup, XmlWriter writer)
- {
- foreach (ICalculationBase child in calculationGroup.Children)
- {
- var innerGroup = child as CalculationGroup;
- if (innerGroup != null)
- {
- WriteCalculationGroup(innerGroup, writer);
- }
-
- var calculation = child as PipingCalculation;
- if (calculation != null)
- {
- WriteCalculation(calculation, writer);
- }
- }
- }
-
- private static void WriteCalculationGroup(CalculationGroup calculationGroup, XmlWriter writer)
- {
- writer.WriteStartElement(ConfigurationSchemaIdentifiers.FolderElement);
- writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, calculationGroup.Name);
-
- WriteConfiguration(calculationGroup, writer);
-
- writer.WriteEndElement();
- }
-
- private static void WriteCalculation(PipingCalculation calculation, XmlWriter writer)
- {
writer.WriteStartElement(ConfigurationSchemaIdentifiers.CalculationElement);
writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, calculation.Name);
@@ -147,34 +75,20 @@
}
}
- WriteDistributions(calculationInputParameters, writer);
+ WriteDistributions(CreateInputDistributions(calculationInputParameters), writer);
writer.WriteEndElement();
}
- private static void WriteDistributions(PipingInput calculationInputParameters, XmlWriter writer)
+ private static IEnumerable> CreateInputDistributions(PipingInput calculationInputParameters)
{
- writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement);
+ yield return Tuple.Create(
+ PipingConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName,
+ calculationInputParameters.PhreaticLevelExit);
- WriteDistribution(calculationInputParameters.PhreaticLevelExit,
- PipingConfigurationSchemaIdentifiers.PhreaticLevelExitStochastName, writer);
- WriteDistribution(calculationInputParameters.DampingFactorExit,
- PipingConfigurationSchemaIdentifiers.DampingFactorExitStochastName, writer);
-
- writer.WriteEndElement();
+ yield return Tuple.Create(
+ PipingConfigurationSchemaIdentifiers.DampingFactorExitStochastName,
+ calculationInputParameters.DampingFactorExit);
}
-
- private static void WriteDistribution(IDistribution distribution, string elementName, XmlWriter writer)
- {
- writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastElement);
- writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, elementName);
-
- writer.WriteElementString(ConfigurationSchemaIdentifiers.MeanElement,
- XmlConvert.ToString(distribution.Mean));
- writer.WriteElementString(ConfigurationSchemaIdentifiers.StandardDeviationElement,
- XmlConvert.ToString(distribution.StandardDeviation));
-
- writer.WriteEndElement();
- }
}
}
\ No newline at end of file