Index: Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs
===================================================================
diff -u -r3937c582facb03372a3676b1ebf0ef158005a9ab -r24a4e65f8626b984a0345e3b3b505c768da360f3
--- Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs (.../ConfigurationReader.cs) (revision 3937c582facb03372a3676b1ebf0ef158005a9ab)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs (.../ConfigurationReader.cs) (revision 24a4e65f8626b984a0345e3b3b505c768da360f3)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
@@ -39,8 +40,9 @@
///
/// The type of calculation items read from XML.
public abstract class ConfigurationReader
+ where TCalculationItem : IReadCalculationItem
{
- protected readonly XDocument xmlDocument;
+ private readonly XDocument xmlDocument;
///
/// Creates a new instance of .
@@ -69,6 +71,22 @@
}
///
+ /// Reads the configuration from the XML and creates a collection of corresponding .
+ ///
+ /// A collection of read .
+ public IEnumerable Read()
+ {
+ return ParseReadCalculationItems(xmlDocument.Root?.Elements());
+ }
+
+ ///
+ /// Parses a read calculation element.
+ ///
+ /// The read calculation element to parse.
+ /// A parsed .
+ protected abstract TCalculationItem ParseReadCalculation(XElement calculationElement);
+
+ ///
/// Validates whether a file exists at the provided .
///
/// The file path to validate.
@@ -152,5 +170,27 @@
throw new CriticalFileReadException(message);
}
}
+
+ private IEnumerable ParseReadCalculationItems(IEnumerable elements)
+ {
+ foreach (XElement element in elements)
+ {
+ if (element.Name == ConfigurationSchemaIdentifiers.CalculationElement)
+ {
+ yield return ParseReadCalculation(element);
+ }
+
+ if (element.Name == ConfigurationSchemaIdentifiers.FolderElement)
+ {
+ yield return ParseReadCalculationGroup(element);
+ }
+ }
+ }
+
+ private ReadCalculationGroup ParseReadCalculationGroup(XElement folderElement)
+ {
+ return new ReadCalculationGroup(folderElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute)?.Value,
+ ParseReadCalculationItems(folderElement.Elements()));
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs
===================================================================
diff -u -r59fcd17973dee55b14a079325767f28e8cb535c2 -r24a4e65f8626b984a0345e3b3b505c768da360f3
--- Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 59fcd17973dee55b14a079325767f28e8cb535c2)
+++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Readers/PipingConfigurationReader.cs (.../PipingConfigurationReader.cs) (revision 24a4e65f8626b984a0345e3b3b505c768da360f3)
@@ -20,7 +20,6 @@
// All rights reserved.
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
@@ -52,39 +51,8 @@
internal PipingConfigurationReader(string xmlFilePath)
: base(xmlFilePath, Resources.PipingConfigurationSchema) {}
- ///
- /// Reads the piping configuration from the XML and creates a collection of corresponding .
- ///
- /// A collection of read .
- internal IEnumerable Read()
+ protected override IReadCalculationItem ParseReadCalculation(XElement calculationElement)
{
- return ParseReadPipingCalculationItems(xmlDocument.Root?.Elements());
- }
-
- private static IEnumerable ParseReadPipingCalculationItems(IEnumerable elements)
- {
- foreach (XElement element in elements)
- {
- if (element.Name == ConfigurationSchemaIdentifiers.CalculationElement)
- {
- yield return ParseReadPipingCalculation(element);
- }
-
- if (element.Name == ConfigurationSchemaIdentifiers.FolderElement)
- {
- yield return ParseReadPipingCalculationGroup(element);
- }
- }
- }
-
- private static ReadCalculationGroup ParseReadPipingCalculationGroup(XElement folderElement)
- {
- return new ReadCalculationGroup(folderElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute)?.Value,
- ParseReadPipingCalculationItems(folderElement.Elements()));
- }
-
- private static ReadPipingCalculation ParseReadPipingCalculation(XElement calculationElement)
- {
var constructionProperties = new ReadPipingCalculation.ConstructionProperties
{
Name = calculationElement.Attribute(ConfigurationSchemaIdentifiers.NameAttribute)?.Value,