Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs =================================================================== diff -u -r9393d671e0b4e1e8c76e5fcf32f61d5c3a5998b2 -r7fcb0613ba513557f59a87037385c0012981716c --- Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs (.../PipingConfigurationImporter.cs) (revision 9393d671e0b4e1e8c76e5fcf32f61d5c3a5998b2) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/Importers/PipingConfigurationImporter.cs (.../PipingConfigurationImporter.cs) (revision 7fcb0613ba513557f59a87037385c0012981716c) @@ -44,7 +44,7 @@ private readonly IEnumerable hydraulicBoundaryLocations; - private List validCalculationItems; + private readonly List validCalculationItems; /// /// Creates a new instance of . @@ -65,7 +65,7 @@ } this.hydraulicBoundaryLocations = hydraulicBoundaryLocations; - validCalculationItems = new List(); + validCalculationItems = new List(); } protected override void LogImportCanceledMessage() @@ -96,11 +96,19 @@ } NotifyProgress(RingtoetsCommonIOResources.Importer_ProgressText_Adding_imported_data_to_DataModel, 3, 3); -// AddItemsToModel(); + AddItemsToModel(); return true; - } + } + private void AddItemsToModel() + { + foreach (ICalculationBase validCalculationItem in validCalculationItems) + { + ImportTarget.Children.Add(validCalculationItem); + } + } + private void ValidateReadItems(IReadPipingCalculationItem readItem) { var readCalculation = readItem as ReadPipingCalculation; @@ -119,15 +127,27 @@ private void ValidateCalculation(ReadPipingCalculation readCalculation) { + var pipingCalculation = new PipingCalculation(new GeneralPipingInput()) + { + Name = readCalculation.Name + }; + if (readCalculation.HydraulicBoundaryLocation != null) { - if (hydraulicBoundaryLocations.All(hbl => hbl.Name != readCalculation.HydraulicBoundaryLocation)) + HydraulicBoundaryLocation location = hydraulicBoundaryLocations.FirstOrDefault(l => l.Name == readCalculation.HydraulicBoundaryLocation); + + if (location != null) { + pipingCalculation.InputParameters.HydraulicBoundaryLocation = location; + } + else + { log.Warn("Hydraulische randvoorwaarde locatie bestaat niet. Berekening overgeslagen."); + return; } } - validCalculationItems.Add(readCalculation); + validCalculationItems.Add(pipingCalculation); // Validate when set: // - HR location Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs =================================================================== diff -u -r9393d671e0b4e1e8c76e5fcf32f61d5c3a5998b2 -r7fcb0613ba513557f59a87037385c0012981716c --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision 9393d671e0b4e1e8c76e5fcf32f61d5c3a5998b2) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/Importers/PipingConfigurationImporterTest.cs (.../PipingConfigurationImporterTest.cs) (revision 7fcb0613ba513557f59a87037385c0012981716c) @@ -27,6 +27,7 @@ using NUnit.Framework; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Piping.Data; using Ringtoets.Piping.IO.Importers; namespace Ringtoets.Piping.IO.Test.Importers @@ -175,12 +176,13 @@ } [Test] - public void Import_HydraulicBoundaryLocationInvalid_LogMessage() + public void Import_HydraulicBoundaryLocationInvalid_LogMessageAndContinueImport() { // Setup + var calculationGroup = new CalculationGroup(); string filePath = Path.Combine(path, "validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml"); var importer = new PipingConfigurationImporter(filePath, - new CalculationGroup(), + calculationGroup, Enumerable.Empty()); // Call @@ -190,8 +192,36 @@ // Assert TestHelper.AssertLogMessageIsGenerated(call, "Hydraulische randvoorwaarde locatie bestaat niet. Berekening overgeslagen.", 1); Assert.IsTrue(succesful); + CollectionAssert.IsEmpty(calculationGroup.Children); } + [Test] + public void Import_ValidData_DataAddedToModel() + { + // Setup + var calculationGroup = new CalculationGroup(); + string filePath = Path.Combine(path, "validConfigurationFullCalculationContainingHydraulicBoundaryLocation.xml"); + var importer = new PipingConfigurationImporter(filePath, + calculationGroup, + new [] + { + new HydraulicBoundaryLocation(1, "HRlocatie", 10, 20), + }); + + // Call + bool succesful = importer.Import(); + + // Assert + Assert.IsTrue(succesful); + Assert.AreEqual(1, calculationGroup.Children.Count); + PipingCalculation calculation = calculationGroup.Children[0] as PipingCalculation; + + Assert.AreEqual(1, calculation.InputParameters.HydraulicBoundaryLocation.Id); + Assert.AreEqual("HRlocatie", calculation.InputParameters.HydraulicBoundaryLocation.Name); + Assert.AreEqual(10, calculation.InputParameters.HydraulicBoundaryLocation.Location.X); + Assert.AreEqual(20, calculation.InputParameters.HydraulicBoundaryLocation.Location.Y); + } + private class ExpectedProgressNotification { public string Text { get; set; }