Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs =================================================================== diff -u -r2610 -r2776 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs (.../CsvImporterScenarios.cs) (revision 2610) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs (.../CsvImporterScenarios.cs) (revision 2776) @@ -68,6 +68,8 @@ public double? HeadPl3 { get; set; } //optional public double? HeadPl4 { get; set; } //optional + public double? PolderLevel { get; set; } // required + public double? UpliftCriterionPiping { get; set; } //optional public double? UpliftCriterionStability { get; set; } //optional public double? RequiredSafetyFactorPiping { get; set; } //optional @@ -134,6 +136,7 @@ int colIndexHeadPl4 = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.HeadPl4ColumnName); int colIndexHeadPl3OldFormat = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.HeadPl3OldFormatColumnName); int colIndexHeadPl4OldFormat = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.HeadPl4OldFormatColumnName); + int colIndexPolderLevel = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.PolderLevelColumnName); var index = 1; while (csv.ReadNextRecord()) @@ -257,6 +260,13 @@ scenario.HeadPl4 = Convert.ToDouble(csv[colIndex]); } } + + if (colIndexPolderLevel > -1) + { + colIndex = colIndexPolderLevel; + scenario.PolderLevel = Convert.ToDouble(csv[colIndex]); + } + scenarioRecords.Add(scenario); } catch (Exception e) Index: DamClients/DamUI/trunk/src/Dam/Tests/IO/CombineImportedDataTest.cs =================================================================== diff -u -r2529 -r2776 --- DamClients/DamUI/trunk/src/Dam/Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 2529) +++ DamClients/DamUI/trunk/src/Dam/Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 2776) @@ -18,6 +18,7 @@ // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. + using System; using System.Collections.Generic; using System.IO; @@ -56,9 +57,9 @@ var configuredAttributes = new List { new DataAttribute - { AttributeId = "location_id", AttributeName = "LOCATIONID", DataSource = "LocationID.shp" }, + {AttributeId = "location_id", AttributeName = "LOCATIONID", DataSource = "LocationID.shp"}, new DataAttribute - { AttributeId = "dikering_id", AttributeName = "DIKERINGID", DataSource = "LocationID.shp" } + {AttributeId = "dikering_id", AttributeName = "DIKERINGID", DataSource = "LocationID.shp"} }; var locationRecords = new List(); var locationImporter = LocationShapeFileImporter.Create( @@ -80,12 +81,14 @@ locationRecord.SegmentId = "1"; locationRecord.SurfaceLineId = "1"; } + csvImporter.LocationRecords = locationRecords; csvImporter.ImportCsvDataFromDirectory(testDataFolder, false, progress, DamProjectType.Design); foreach (var errormessage in csvImporter.ErrorMessages) { LogManager.Messages.Add(errormessage); } + var combineImportedData = new CombineImportedData { WaterBoard = damProjectData.WaterBoard, @@ -103,6 +106,7 @@ LogManager.Messages.Add(errormessage); } } + var end = DateTime.Now; var elapsed = end - start; @@ -137,14 +141,14 @@ // Check if all soilprobabbilites are read var segment = damProjectData.WaterBoard.Segments.FirstOrDefault(s => s.Name.Equals("2")); var stabilityProbabilities = new List(segment.SoilProfileProbabilities.Where( - p => ((p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityInside) || - (p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityOutside) || - (p.SegmentFailureMechanismType == null)))); + p => ((p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityInside) || + (p.SegmentFailureMechanismType == FailureMechanismSystemType.StabilityOutside) || + (p.SegmentFailureMechanismType == null)))); Assert.AreEqual(3, stabilityProbabilities.Count); var pipingProbabilities = new List(segment.SoilProfileProbabilities.Where( p => ((p.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) || - (p.SegmentFailureMechanismType == null)))); + (p.SegmentFailureMechanismType == null)))); Assert.AreEqual(3, pipingProbabilities.Count); Assert.AreEqual(3530, LogManager.Messages.Count); @@ -163,13 +167,13 @@ using (var damProjectData = new DamProjectData()) { const string testDataFolder = @"TestData\CsvData\Full1DProject\csvfiles"; - DamEngine.Data.Standard.Calculation.ProgressDelegate progress = null; var csvImporter = new CsvImporter(); - csvImporter.ImportCsvDataFromDirectory(testDataFolder, false, progress, DamProjectType.Design); - foreach (var errormessage in csvImporter.ErrorMessages) + csvImporter.ImportCsvDataFromDirectory(testDataFolder, false, null, DamProjectType.Design); + foreach (var errorMessage in csvImporter.ErrorMessages) { - LogManager.Messages.Add(errormessage); + LogManager.Messages.Add(errorMessage); } + var combineImportedData = new CombineImportedData { WaterBoard = damProjectData.WaterBoard, @@ -181,9 +185,10 @@ ScenarioRecords = csvImporter.ScenariosRecords }; combineImportedData.AddCsvDataToDikes(); - foreach (var errormessage in combineImportedData.ErrorMessages) + combineImportedData.AddScenarioDataToDikes(); + foreach (var errorMessage in combineImportedData.ErrorMessages) { - LogManager.Messages.Add(errormessage); + LogManager.Messages.Add(errorMessage); } using (var file = new StreamWriter(testDataFolder + "\\Import full csv error log.txt")) @@ -228,6 +233,26 @@ Assert.AreEqual(2.0, location.StabilityShoulderGrowSlope, tolerance); Assert.AreEqual(0.2, location.StabilityShoulderGrowDeltaX, tolerance); Assert.AreEqual(0.5, location.StabilitySlopeAdaptionDeltaX, tolerance); + + // Assert that the scenarios are set correctly for this location + var scenarios = location.Scenarios; + Assert.AreEqual(2, scenarios.Count); + CollectionAssert.AreEqual(new[] + { + "1", + "10" + }, scenarios.Select(sc => sc.LocationScenarioID)); + CollectionAssert.AreEqual(new[] + { + 4.01, + 7.02 + }, scenarios.Select(sc => sc.DikeTableHeight)); + CollectionAssert.AreEqual(new[] + { + 1.08, + 1.45 + }, scenarios.Select(sc => sc.RequiredSafetyFactorStabilityInnerSlope)); + Assert.IsTrue(scenarios.All(sc => Math.Abs(sc.PolderLevel.Value + 0.25) < tolerance)); } } @@ -240,7 +265,6 @@ CharacteristicPointType point2; var doNotCoincide = combineImportedData.CheckCharacteristicPointsForCoincidingLocations(surfaceLine, out point1, out point2); Assert.IsTrue(doNotCoincide); - } [Test] @@ -285,7 +309,7 @@ var surfaceLine = new SurfaceLine2() { Geometry = new LocalizedGeometryPointString(), - CharacteristicPoints = { GeometryMustContainPoint = true } + CharacteristicPoints = {GeometryMustContainPoint = true} }; surfaceLine.EnsurePointOfType(0, 0, 0, CharacteristicPointType.SurfaceLevelOutside); surfaceLine.EnsurePointOfType(10, 0, 0, CharacteristicPointType.DikeToeAtRiver); @@ -309,6 +333,5 @@ surfaceLine.EnsurePointOfType(15, 0, 2, CharacteristicPointType.TrafficLoadOutside); return surfaceLine; } - } -} +} \ No newline at end of file Index: DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs =================================================================== diff -u -r2602 -r2776 --- DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 2602) +++ DamClients/DamUI/trunk/src/Dam/Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 2776) @@ -361,6 +361,22 @@ } } + private void CreateScenariosWithPolderLevelFile() + { + string importFile = importFolder + "\\polderlevel.csv"; + if (File.Exists(importFile)) + File.Delete(importFile); + using (var writer = File.CreateText(importFile)) + { + writer.WriteLine( + "location_id;location_scenario_id;polderlevel;"); + writer.WriteLine( + "D1;1;0.001;"); + writer.WriteLine( + "D2;1;0.003;"); + } + } + private void CreateScenariosFileWithIllegalHeader() { string importFile = importFolder + "\\scenarios.csv"; @@ -955,6 +971,25 @@ } [Test] + public void ScenariosImporterWithPolderLevelTest() + { + string importFile = importFolder + "\\polderlevel.csv"; + if (File.Exists(importFile)) + File.Delete(importFile); + CreateScenariosWithPolderLevelFile(); + CsvImporterScenarios csvImporterScenarios = new CsvImporterScenarios(importFolder + "\\polderlevel.csv"); + IList scenarioRecords = csvImporterScenarios.ImportedItems; + + Assert.AreEqual("D1", scenarioRecords[0].LocationId); + Assert.AreEqual("1", scenarioRecords[0].LocationScenarioId); + Assert.AreEqual(0.001, scenarioRecords[0].PolderLevel); + + Assert.AreEqual("D2", scenarioRecords[1].LocationId); + Assert.AreEqual("1", scenarioRecords[1].LocationScenarioId); + Assert.AreEqual(0.003, scenarioRecords[1].PolderLevel); + } + + [Test] public void AllCsvTimingTest() { DataEventPublisher.InvokeWithoutPublishingEvents(() => Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs =================================================================== diff -u -r2602 -r2776 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2602) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2776) @@ -686,6 +686,7 @@ locationRecord.UsePlLineOffsetFactorBelowShoulderCrest; scenario.HeadPl3 = scenarioRecord.HeadPl3 ?? locationRecord.HeadPl3; scenario.HeadPl4 = scenarioRecord.HeadPl4 ?? locationRecord.HeadPl4; + scenario.PolderLevel = scenarioRecord.PolderLevel ?? locationRecord.PolderLevel; scenario.DikeTableHeight = scenarioRecord.DikeTableHeight ?? locationRecord.DikeTableHeight; scenario.RiverLevel = scenarioRecord.RiverLevel ?? locationRecord.RiverLevel; scenario.RiverLevelLow = scenarioRecord.RiverLevelLow ?? locationRecord.RiverLevelLow;