Index: Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs =================================================================== diff -u -r8f228044569bcff77f25f658a7e5277e78b6b6a8 -r309837df48178bbae93c412badfda6c0de5da6a4 --- Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs (.../CalculationConfigurationImporter.cs) (revision 8f228044569bcff77f25f658a7e5277e78b6b6a8) +++ Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs (.../CalculationConfigurationImporter.cs) (revision 309837df48178bbae93c412badfda6c0de5da6a4) @@ -35,12 +35,14 @@ /// Base class for importing a calculation configuration from an XML file and /// storing it on a . /// - public abstract class CalculationConfigurationImporter : FileImporterBase + public abstract class CalculationConfigurationImporter + : FileImporterBase + where TReadCalculation : class, IReadConfigurationItem { - private static readonly ILog log = LogManager.GetLogger(typeof(CalculationConfigurationImporter)); + private static readonly ILog log = LogManager.GetLogger(typeof(CalculationConfigurationImporter)); /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The path to the file to import from. /// The calculation group to update. @@ -88,10 +90,10 @@ return true; } - protected abstract ICalculationBase ProcessReadItem(IReadConfigurationItem readItem); - protected abstract ICollection ReadConfigurationItems(string filePath); + protected abstract ICalculationBase ProcessCalculation(TReadCalculation readCalculation); + private ReadResult ReadConfiguration() { try @@ -111,6 +113,39 @@ } } + private ICalculationBase ProcessReadItem(IReadConfigurationItem readItem) + { + var readCalculationGroup = readItem as ReadCalculationGroup; + if (readCalculationGroup != null) + { + return ProcessCalculationGroup(readCalculationGroup); + } + + var readCalculation = readItem as TReadCalculation; + if (readCalculation != null) + { + return ProcessCalculation(readCalculation); + } + + return null; + } + + private CalculationGroup ProcessCalculationGroup(ReadCalculationGroup readCalculationGroup) + { + var group = new CalculationGroup(readCalculationGroup.Name, true); + + foreach (IReadConfigurationItem item in readCalculationGroup.Items) + { + ICalculationBase processedItem = ProcessReadItem(item); + if (processedItem != null) + { + group.Children.Add(processedItem); + } + } + + return group; + } + private void AddItemsToModel(IEnumerable validCalculationItems) { foreach (ICalculationBase validCalculationItem in validCalculationItems) Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/CalculationConfigurationImporterTest.cs =================================================================== diff -u -r8f228044569bcff77f25f658a7e5277e78b6b6a8 -r309837df48178bbae93c412badfda6c0de5da6a4 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/CalculationConfigurationImporterTest.cs (.../CalculationConfigurationImporterTest.cs) (revision 8f228044569bcff77f25f658a7e5277e78b6b6a8) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/CalculationConfigurationImporterTest.cs (.../CalculationConfigurationImporterTest.cs) (revision 309837df48178bbae93c412badfda6c0de5da6a4) @@ -22,7 +22,6 @@ using System; using System.Collections.Generic; using Core.Common.Base.IO; -using Core.Common.IO.Readers; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Calculation; @@ -61,7 +60,7 @@ TestHelper.AssertLogMessageIsGenerated(call, "Berekeningenconfiguratie importeren afgebroken. Geen data ingelezen.", 1); } - private class TestCalculationConfigurationImporter : CalculationConfigurationImporter + private class TestCalculationConfigurationImporter : CalculationConfigurationImporter { public TestCalculationConfigurationImporter(string filePath, CalculationGroup importTarget) : base(filePath, importTarget) {} @@ -78,15 +77,20 @@ return true; } - protected override ICalculationBase ProcessReadItem(IReadConfigurationItem readItem) + protected override ICollection ReadConfigurationItems(string filePath) { throw new NotImplementedException(); } - protected override ICollection ReadConfigurationItems(string filePath) + protected override ICalculationBase ProcessCalculation(TestReadConfigurationItem readCalculation) { throw new NotImplementedException(); } } + + private class TestReadConfigurationItem : IReadConfigurationItem + { + public string Name { get; } + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs =================================================================== diff -u -r8f228044569bcff77f25f658a7e5277e78b6b6a8 -r309837df48178bbae93c412badfda6c0de5da6a4 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs (.../PipingConfigurationImporter.cs) (revision 8f228044569bcff77f25f658a7e5277e78b6b6a8) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs (.../PipingConfigurationImporter.cs) (revision 309837df48178bbae93c412badfda6c0de5da6a4) @@ -35,15 +35,14 @@ using Ringtoets.Piping.IO.Readers; using Ringtoets.Piping.IO.Schema; using Ringtoets.Piping.Primitives; -using RingtoetsCommonIOResources = Ringtoets.Common.IO.Properties.Resources; namespace Ringtoets.Piping.IO.Importers { /// /// Imports a piping configuration from an XML file and stores it on a /// . /// - public class PipingConfigurationImporter : CalculationConfigurationImporter + public class PipingConfigurationImporter : CalculationConfigurationImporter { private static readonly ILog log = LogManager.GetLogger(typeof(PipingConfigurationImporter)); @@ -79,46 +78,13 @@ this.failureMechanism = failureMechanism; } - protected override ICalculationBase ProcessReadItem(IReadConfigurationItem readItem) - { - var readCalculationGroup = readItem as ReadCalculationGroup; - if (readCalculationGroup != null) - { - return ProcessCalculationGroup(readCalculationGroup); - } - - var readCalculation = readItem as ReadPipingCalculation; - if (readCalculation != null) - { - return ProcessCalculation(readCalculation); - } - - return null; - } - protected override ICollection ReadConfigurationItems(string filePath) { return new PipingConfigurationReader(FilePath).Read().ToList(); } - private CalculationGroup ProcessCalculationGroup(ReadCalculationGroup readCalculationGroup) + protected override ICalculationBase ProcessCalculation(ReadPipingCalculation readCalculation) { - var group = new CalculationGroup(readCalculationGroup.Name, true); - - foreach (IReadConfigurationItem item in readCalculationGroup.Items) - { - ICalculationBase processedItem = ProcessReadItem(item); - if (processedItem != null) - { - group.Children.Add(processedItem); - } - } - - return group; - } - - private PipingCalculationScenario ProcessCalculation(ReadPipingCalculation readCalculation) - { var pipingCalculation = new PipingCalculationScenario(new GeneralPipingInput()) { Name = readCalculation.Name Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs =================================================================== diff -u -r8f228044569bcff77f25f658a7e5277e78b6b6a8 -r309837df48178bbae93c412badfda6c0de5da6a4 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision 8f228044569bcff77f25f658a7e5277e78b6b6a8) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision 309837df48178bbae93c412badfda6c0de5da6a4) @@ -31,6 +31,7 @@ using Ringtoets.Common.IO.FileImporters; using Ringtoets.Piping.Data; using Ringtoets.Piping.IO.Importers; +using Ringtoets.Piping.IO.Readers; using Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.IO.Test.Importers @@ -51,7 +52,7 @@ new PipingFailureMechanism()); // Assert - Assert.IsInstanceOf(importer); + Assert.IsInstanceOf>(importer); } [Test]