Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter.cs =================================================================== diff -u -r138c88bf72a70ddfa2b98099c53d297b495d95c2 -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter.cs) (revision 138c88bf72a70ddfa2b98099c53d297b495d95c2) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.IO/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -34,7 +34,8 @@ /// from an XML file and stores it on a . /// public class GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporter - : WaveConditionsCalculationConfigurationImporter + : WaveConditionsCalculationConfigurationImporter { /// /// Creates a new instance of . @@ -52,5 +53,10 @@ IEnumerable hydraulicBoundaryLocations, IEnumerable foreshoreProfiles) : base(xmlFilePath, importTarget, hydraulicBoundaryLocations, foreshoreProfiles) {} + + protected override GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationReader CreateCalculationConfigurationReader(string xmlFilePath) + { + return new GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationReader(xmlFilePath); + } } } Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporterTest.cs =================================================================== diff -u -r138c88bf72a70ddfa2b98099c53d297b495d95c2 -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporterTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporterTest.cs) (revision 138c88bf72a70ddfa2b98099c53d297b495d95c2) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.IO.Test/Configurations/GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporterTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationConfigurationImporterTest.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -44,7 +44,7 @@ Enumerable.Empty()); // Assert - Assert.IsInstanceOf>(importer); + Assert.IsInstanceOf>(importer); } } } \ No newline at end of file Index: Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter.cs =================================================================== diff -u -r45fecbd01648810e02c1465310a86547c2b11ca7 -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter.cs (.../AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter.cs) (revision 45fecbd01648810e02c1465310a86547c2b11ca7) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter.cs (.../AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -33,7 +33,8 @@ /// . /// /// The type of the calculation to import. - public class AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter : WaveConditionsCalculationConfigurationImporter + public class AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporter + : WaveConditionsCalculationConfigurationImporter where T : ICalculation, new() { /// @@ -52,5 +53,10 @@ IEnumerable hydraulicBoundaryLocations, IEnumerable foreshoreProfiles) : base(xmlFilePath, importTarget, hydraulicBoundaryLocations, foreshoreProfiles) {} + + protected override AssessmentSectionCategoryWaveConditionsCalculationConfigurationReader CreateCalculationConfigurationReader(string xmlFilePath) + { + return new AssessmentSectionCategoryWaveConditionsCalculationConfigurationReader(xmlFilePath); + } } } \ No newline at end of file Index: Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/WaveConditionsCalculationConfigurationImporter.cs =================================================================== diff -u -r3ddd2e86216438a423797aecd4b1f9808df00bcb -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/WaveConditionsCalculationConfigurationImporter.cs (.../WaveConditionsCalculationConfigurationImporter.cs) (revision 3ddd2e86216438a423797aecd4b1f9808df00bcb) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.IO/Configurations/WaveConditionsCalculationConfigurationImporter.cs (.../WaveConditionsCalculationConfigurationImporter.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -37,16 +37,20 @@ /// Imports a wave conditions calculation configuration from an XML file and stores it on a /// . /// - /// The type of the calculation to import. - public class WaveConditionsCalculationConfigurationImporter - : CalculationConfigurationImporter - where T : ICalculation, new() + /// The type of the calculation to import. + /// The type of the reader to use. + /// The type of calculation configuration. + public abstract class WaveConditionsCalculationConfigurationImporter + : CalculationConfigurationImporter + where TCalculation : ICalculation, new() + where TCalculationConfigurationReader : CalculationConfigurationReader + where TCalculationConfiguration : WaveConditionsCalculationConfiguration { private readonly IEnumerable availableHydraulicBoundaryLocations; private readonly IEnumerable availableForeshoreProfiles; /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The path to the XML file to import from. /// The calculation group to update. @@ -56,7 +60,7 @@ /// the imported objects contain the right profile. /// Thrown when any parameter is /// null. - public WaveConditionsCalculationConfigurationImporter(string xmlFilePath, + protected WaveConditionsCalculationConfigurationImporter(string xmlFilePath, CalculationGroup importTarget, IEnumerable hydraulicBoundaryLocations, IEnumerable foreshoreProfiles) @@ -74,14 +78,11 @@ availableForeshoreProfiles = foreshoreProfiles; } - protected override AssessmentSectionCategoryWaveConditionsCalculationConfigurationReader CreateCalculationConfigurationReader(string xmlFilePath) - { - return new AssessmentSectionCategoryWaveConditionsCalculationConfigurationReader(xmlFilePath); - } + protected abstract override TCalculationConfigurationReader CreateCalculationConfigurationReader(string xmlFilePath); - protected override ICalculation ParseReadCalculation(AssessmentSectionCategoryWaveConditionsCalculationConfiguration calculationConfiguration) + protected override ICalculation ParseReadCalculation(TCalculationConfiguration calculationConfiguration) { - var waveConditionsCalculation = new T + var waveConditionsCalculation = new TCalculation { Name = calculationConfiguration.Name }; Index: Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporterTest.cs =================================================================== diff -u -r45fecbd01648810e02c1465310a86547c2b11ca7 -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporterTest.cs (.../AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporterTest.cs) (revision 45fecbd01648810e02c1465310a86547c2b11ca7) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporterTest.cs (.../AssessmentSectionCategoryWaveConditionsCalculationConfigurationImporterTest.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -44,7 +44,7 @@ Enumerable.Empty()); // Assert - Assert.IsInstanceOf>(importer); + Assert.IsInstanceOf>(importer); } private class TestTargetTestWaveConditionsCalculation : TestWaveConditionsCalculation Index: Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/WaveConditionsCalculationConfigurationImporterTest.cs =================================================================== diff -u -r3ddd2e86216438a423797aecd4b1f9808df00bcb -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/WaveConditionsCalculationConfigurationImporterTest.cs (.../WaveConditionsCalculationConfigurationImporterTest.cs) (revision 3ddd2e86216438a423797aecd4b1f9808df00bcb) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/Configurations/WaveConditionsCalculationConfigurationImporterTest.cs (.../WaveConditionsCalculationConfigurationImporterTest.cs) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -20,8 +20,10 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.IO; using System.Linq; +using System.Xml.Linq; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Core.Common.TestUtil; @@ -46,21 +48,21 @@ public void Constructor_ExpectedValues() { // Call - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( "", new CalculationGroup(), Enumerable.Empty(), Enumerable.Empty()); // Assert - Assert.IsInstanceOf>(importer); + Assert.IsInstanceOf>(importer); } [Test] public void Constructor_HydraulicBoundaryLocationsNull_ThrowArgumentNullException() { // Call - TestDelegate test = () => new WaveConditionsCalculationConfigurationImporter( + TestDelegate test = () => new TestWaveConditionsCalculationConfigurationImporter( "", new CalculationGroup(), null, @@ -75,7 +77,7 @@ public void Constructor_ForeshoreProfilesNull_ThrowArgumentNullException() { // Call - TestDelegate test = () => new WaveConditionsCalculationConfigurationImporter( + TestDelegate test = () => new TestWaveConditionsCalculationConfigurationImporter( "", new CalculationGroup(), Enumerable.Empty(), @@ -100,7 +102,7 @@ string filePath = Path.Combine(path, file); var calculationGroup = new CalculationGroup(); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -124,7 +126,7 @@ string filePath = Path.Combine(path, "validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml"); var calculationGroup = new CalculationGroup(); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -135,7 +137,7 @@ Action call = () => successful = importer.Import(); // Assert - const string expectedMessage = "De locatie met hydraulische randvoorwaarden 'HRlocatie' bestaat niet. Berekening 'Calculation' is overgeslagen."; + const string expectedMessage = "De locatie met hydraulische randvoorwaarden 'HRlocatie' bestaat niet. Berekening 'Berekening 1' is overgeslagen."; TestHelper.AssertLogMessageWithLevelIsGenerated(call, Tuple.Create(expectedMessage, LogLevelConstant.Error), 1); Assert.IsTrue(successful); CollectionAssert.IsEmpty(calculationGroup.Children); @@ -148,7 +150,7 @@ string filePath = Path.Combine(path, "validConfigurationCalculationContainingUnknownForeshoreProfile.xml"); var calculationGroup = new CalculationGroup(); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -172,7 +174,7 @@ string filePath = Path.Combine(path, "validConfigurationCalculationContainingWaveReductionWithoutForeshoreProfile.xml"); var calculationGroup = new CalculationGroup(); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -197,7 +199,7 @@ var calculationGroup = new CalculationGroup(); var foreshoreProfile = new TestForeshoreProfile("Voorlandprofiel"); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -225,7 +227,7 @@ var calculationGroup = new CalculationGroup(); var foreshoreProfile = new TestForeshoreProfile("Voorlandprofiel"); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, Enumerable.Empty(), @@ -274,7 +276,7 @@ Name = "VoorlandProfielName" }); - var importer = new WaveConditionsCalculationConfigurationImporter( + var importer = new TestWaveConditionsCalculationConfigurationImporter( filePath, calculationGroup, new[] @@ -336,9 +338,41 @@ Assert.AreEqual(expectedCalculation.InputParameters.BreakWater.Type, actualCalculation.InputParameters.BreakWater.Type); } + private class TestWaveConditionsCalculationConfigurationImporter + : WaveConditionsCalculationConfigurationImporter + { + public TestWaveConditionsCalculationConfigurationImporter(string xmlFilePath, + CalculationGroup importTarget, + IEnumerable hydraulicBoundaryLocations, + IEnumerable foreshoreProfiles) + : base(xmlFilePath, importTarget, hydraulicBoundaryLocations, foreshoreProfiles) {} + + protected override TestWaveConditionsCalculationConfigurationReader CreateCalculationConfigurationReader( + string xmlFilePath) + { + return new TestWaveConditionsCalculationConfigurationReader(xmlFilePath); + } + } + private class TestTargetTestWaveConditionsCalculation : TestWaveConditionsCalculation { public TestTargetTestWaveConditionsCalculation() : base(new TestWaveConditionsInput()) {} } + + private class TestWaveConditionsCalculationConfigurationReader : WaveConditionsCalculationConfigurationReader + { + private static readonly string testDirectoryPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Revetment.IO, + nameof(WaveConditionsCalculationConfigurationImporter, WaveConditionsCalculationConfiguration>)); + + public TestWaveConditionsCalculationConfigurationReader(string xmlFilePath) + : base(xmlFilePath, File.ReadAllText(Path.Combine(testDirectoryPath, "validConfigurationSchema.xsd"))) {} + + protected override WaveConditionsCalculationConfiguration ParseCalculationElement(XElement calculationElement) + { + var configuration = new WaveConditionsCalculationConfiguration("Berekening 1"); + ParseCalculationElementData(calculationElement, configuration); + return configuration; + } + } } } \ No newline at end of file Index: Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml =================================================================== diff -u -r24c6381ad343979eeeabaf26e1ab9a85b482f607 -r359d817d69eec5e474ddc4404fb7b35b91b555ad --- Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml (.../validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml) (revision 24c6381ad343979eeeabaf26e1ab9a85b482f607) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml (.../validConfigurationCalculationContainingUnknownHydraulicBoundaryLocation.xml) (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -1,6 +1,6 @@ - + HRlocatie \ No newline at end of file Index: Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationSchema.xsd =================================================================== diff -u --- Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationSchema.xsd (revision 0) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.IO.Test/test-data/WaveConditionsCalculationConfigurationImporter/validConfigurationSchema.xsd (revision 359d817d69eec5e474ddc4404fb7b35b91b555ad) @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file