Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs =================================================================== diff -u -r8336ede0837d35257e8b85c3b0090b0774342d90 -r4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriter.cs) (revision 8336ede0837d35257e8b85c3b0090b0774342d90) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.IO/Configurations/GrassCoverErosionInwardsCalculationConfigurationWriter.cs (.../GrassCoverErosionInwardsCalculationConfigurationWriter.cs) (revision 4c5ed0f6a4b5f4bbf8a39c6dd6d9d372ee54acfb) @@ -19,135 +19,93 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; +using System; using System.Xml; -using Ringtoets.Common.Data.Probabilistics; using Ringtoets.Common.IO.Configurations; using Ringtoets.Common.IO.Configurations.Export; -using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.GrassCoverErosionInwards.IO.Configurations.Helpers; namespace Ringtoets.GrassCoverErosionInwards.IO.Configurations { /// /// Writer for writing a grass cover erosion inwards calculation configuration to XML. /// - public class GrassCoverErosionInwardsCalculationConfigurationWriter : CalculationConfigurationWriter + public class GrassCoverErosionInwardsCalculationConfigurationWriter : SchemaCalculationConfigurationWriter { - protected override void WriteCalculation(GrassCoverErosionInwardsCalculation calculation, XmlWriter writer) + /// + /// Creates a new instance of . + /// + /// The path of the file to write to. + /// Thrown when is invalid. + /// A valid path: + /// + /// is not empty or null, + /// does not consist out of only whitespace characters, + /// does not contain an invalid character, + /// does not end with a directory or path separator (empty file name). + /// + public GrassCoverErosionInwardsCalculationConfigurationWriter(string filePath) : base(filePath) {} + + protected override void WriteCalculation(GrassCoverErosionInwardsCalculationConfiguration configuration, XmlWriter writer) { writer.WriteStartElement(ConfigurationSchemaIdentifiers.CalculationElement); - writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, calculation.Name); + writer.WriteAttributeString(ConfigurationSchemaIdentifiers.NameAttribute, configuration.Name); - GrassCoverErosionInwardsInput input = calculation.InputParameters; + WriteElementWhenContentAvailable( + writer, + ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, + configuration.HydraulicBoundaryLocation); - WriteHydraulicBoundaryLocation(input, writer); + WriteElementWhenContentAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement, + configuration.DikeProfile); + WriteElementWhenContentAvailable( + writer, + ConfigurationSchemaIdentifiers.Orientation, + configuration.Orientation); + WriteElementWhenContentAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightElement, + configuration.DikeHeight); - WriteDikeProfileId(input, writer); - - WriteOrientation(input, writer); - - WriteDikeHeight(input, writer); - - writer.WriteElementString( + WriteConfigurationLoadSchematizationTypeWhenAvailable( + writer, GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightCalculationTypeElement, - HydraulicLoadsCalculationTypeAsXmlString((ConfigurationHydraulicLoadsCalculationType) input.DikeHeightCalculationType)); + configuration.DikeHeightCalculationType); - writer.WriteElementString( + WriteConfigurationLoadSchematizationTypeWhenAvailable( + writer, GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.OvertoppingRateCalculationTypeElement, - HydraulicLoadsCalculationTypeAsXmlString((ConfigurationHydraulicLoadsCalculationType) input.OvertoppingRateCalculationType)); + configuration.OvertoppingRateCalculationType); - WriteWaveReduction(input, writer); + WriteWaveReductionWhenAvailable(writer, configuration.WaveReduction); - WriteDistributions(CreateInputDistributions(input), writer); + writer.WriteStartElement(ConfigurationSchemaIdentifiers.StochastsElement); + WriteDistributionWhenAvailable( + writer, + GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.CriticalFlowRateStochastName, + configuration.CriticalFlowRate); + writer.WriteEndElement(); - } - private static void WriteHydraulicBoundaryLocation(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.HydraulicBoundaryLocation == null) - { - return; - } - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.HydraulicBoundaryLocationElement, - input.HydraulicBoundaryLocation.Name); + writer.WriteEndElement(); } - private static void WriteDikeProfileId(GrassCoverErosionInwardsInput input, XmlWriter writer) + private static void WriteConfigurationLoadSchematizationTypeWhenAvailable( + XmlWriter writer, + string elementName, + ConfigurationHydraulicLoadsCalculationType? configuration) { - if (input.DikeProfile == null) + if (!configuration.HasValue) { return; } - writer.WriteElementString( - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeProfileElement, - input.DikeProfile.Id); + var converter = new ConfigurationHydraulicLoadsCalculationTypeConverter(); + writer.WriteElementString(elementName, + converter.ConvertToInvariantString(configuration.Value)); } - - private static void WriteOrientation(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.Orientation, - XmlConvert.ToString(input.Orientation)); - } - - private static void WriteDikeHeight(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteElementString( - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.DikeHeightElement, - XmlConvert.ToString(input.DikeHeight)); - } - - private static string HydraulicLoadsCalculationTypeAsXmlString(ConfigurationHydraulicLoadsCalculationType type) - { - return new ConfigurationHydraulicLoadsCalculationTypeConverter().ConvertToInvariantString(type); - } - - private static void WriteWaveReduction(GrassCoverErosionInwardsInput input, XmlWriter writer) - { - if (input.DikeProfile == null) - { - return; - } - - writer.WriteStartElement(ConfigurationSchemaIdentifiers.WaveReduction); - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.UseBreakWater, - XmlConvert.ToString(input.UseBreakWater)); - - WriteBreakWaterProperties(input.BreakWater, writer); - - writer.WriteElementString( - ConfigurationSchemaIdentifiers.UseForeshore, - XmlConvert.ToString(input.UseForeshore)); - - writer.WriteEndElement(); - } - - private static IDictionary CreateInputDistributions(GrassCoverErosionInwardsInput calculationInputParameters) - { - return new Dictionary - { - { - GrassCoverErosionInwardsCalculationConfigurationSchemaIdentifiers.CriticalFlowRateStochastName, - calculationInputParameters.CriticalFlowRate - } - }; - } } } \ No newline at end of file