Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs =================================================================== diff -u -r6779 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs (.../DataPluginImporter.cs) (revision 6779) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/DataPluginImporter.cs (.../DataPluginImporter.cs) (revision 6823) @@ -229,22 +229,21 @@ /// /// Gets the surface line identifier list. /// - /// The dike ring identifier. /// - public IEnumerable GetSurfaceLineIdList(string dikeRingId) + public IEnumerable GetSurfaceLineIdList() { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.SurfaceLines2.Select(surfaceLine => surfaceLine.Name); } /// /// Gets the dike ring identifier list. /// /// - public IEnumerable GetDikeRingIdList() + public string GetDikeRingIdList() { ImportDikeRingAndLocationData(); - return WaterBoard.Dikes.Select(dike => dike.Name); + return WaterBoard.Dike.Name; } /// @@ -261,23 +260,21 @@ /// /// Gets the scenario list. /// - /// The dike ring identifier. /// The location identifier. /// - public IEnumerable GetScenarioList(string dikeRingId, string locationId) + public IEnumerable GetScenarioList(string locationId) { - Location location = GetLocation(dikeRingId, locationId); + Location location = GetLocation(locationId); return location.Scenarios.Select(scenario => scenario.LocationScenarioID); } /// /// Gets the dike ring information. /// - /// The dike ring identifier. /// - public Info GetDikeRingInfo(string dikeRingId) + public Info GetDikeRingInfo() { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return new Info { Name = dike.Name, @@ -289,11 +286,10 @@ /// /// Gets the dike parameters. /// - /// The dike ring identifier. /// - public IEnumerable GetDikeParameters(string dikeRingId) + public IEnumerable GetDikeParameters() { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); Dictionary nameValuePairs = dike.GetParametersAsNameValuePairs(); return GetParametersFromDictionary(nameValuePairs, dike); @@ -302,24 +298,22 @@ /// /// Gets the location identifier list. /// - /// The dike ring identifier. /// - public IEnumerable GetLocationIdList(string dikeRingId) + public IEnumerable GetLocationIdList() { ImportDikeRingAndLocationData(); - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.Locations.Select(location => location.Name); } /// /// Gets the location information. /// - /// The dike ring identifier. /// The location identifier. /// - public Info GetLocationInfo(string dikeRingId, string locationId) + public Info GetLocationInfo(string locationId) { - Location location = GetLocation(dikeRingId, locationId); + Location location = GetLocation(locationId); return new Info { Name = location.Name, @@ -331,12 +325,11 @@ /// /// Gets the location details. /// - /// The dike ring identifier. /// The location identifier. /// - public IEnumerable GetLocationDetails(string dikeRingId, string locationId) + public IEnumerable GetLocationDetails(string locationId) { - Location location = GetLocation(dikeRingId, locationId); + Location location = GetLocation(locationId); Dictionary nameValuePairs = location.GetParametersAsNameValuePairs(); return GetParametersFromDictionary(nameValuePairs, location); @@ -345,14 +338,13 @@ /// /// Gets the scenario details. /// - /// The dike ring identifier. /// The location identifier. /// The scenario identifier. /// - public IEnumerable GetScenarioDetails(string dikeRingId, string locationId, string scenarioId) + public IEnumerable GetScenarioDetails(string locationId, string scenarioId) { - Location location = GetLocation(dikeRingId, locationId); - Scenario scenario = GetScenario(dikeRingId, locationId, scenarioId); + Location location = GetLocation(locationId); + Scenario scenario = GetScenario(locationId, scenarioId); if (scenario == null) { @@ -371,20 +363,19 @@ } } - public void DisposeImportedItem(string dikeRingId) + public void DisposeImportedItem() { - GetDike(dikeRingId).Dispose(); + GetDike().Dispose(); } /// /// Gets the surface line points. /// - /// The dike ring identifier. /// The surface line identifier. /// - public IList GetSurfaceLinePoints(string dikeRingId, string surfaceLineId) + public IList GetSurfaceLinePoints(string surfaceLineId) { - SurfaceLine2 surfaceLine = GetSurfaceLine(dikeRingId, surfaceLineId); + SurfaceLine2 surfaceLine = GetSurfaceLine(surfaceLineId); var surfaceLinePoints = new List(); for (var pointIndex = 0; pointIndex < surfaceLine.Geometry.Points.Count(); pointIndex++) @@ -398,13 +389,11 @@ /// /// Gets the surface line characteristic points. /// - /// The dike ring identifier. /// The surface line identifier. /// - public IEnumerable GetSurfaceLineCharacteristicPoints(string dikeRingId, - string surfaceLineId) + public IEnumerable GetSurfaceLineCharacteristicPoints(string surfaceLineId) { - SurfaceLine2 surfaceLine = GetSurfaceLine(dikeRingId, surfaceLineId); + SurfaceLine2 surfaceLine = GetSurfaceLine(surfaceLineId); foreach (CharacteristicPointType type in Enum.GetValues(typeof(CharacteristicPointType))) { @@ -434,9 +423,8 @@ /// /// Gets the segment identifier list. /// - /// The dike ring identifier. /// - public IEnumerable GetSegmentIdList(string dikeRingId) + public IEnumerable GetSegmentIdList() { ThrowIfDataNotRead(); return WaterBoard.Segments.Select(segment => segment.Name); @@ -445,11 +433,10 @@ /// /// Gets the profile1 d identifier list for segment. /// - /// The dike ring identifier. /// The segment identifier. /// Type of the segment failure mechanism. /// - public IEnumerable GetProfile1DIdListForSegment(string dikeRingId, string segmentId, FailureMechanismSystemType segmentFailureMechanismType) + public IEnumerable GetProfile1DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType) { ThrowIfDataNotRead(); Segment segment = GetSegment(segmentId); @@ -468,11 +455,10 @@ /// /// Gets the profile2 d identifier list for segment. /// - /// The dike ring identifier. /// The segment identifier. /// Type of the segment failure mechanism. /// - public IEnumerable GetProfile2DIdListForSegment(string dikeRingId, string segmentId, FailureMechanismSystemType segmentFailureMechanismType) + public IEnumerable GetProfile2DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType) { ThrowIfDataNotRead(); Segment segment = GetSegment(segmentId); @@ -491,13 +477,11 @@ /// /// Gets the segment profile1 d details. /// - /// The dike ring identifier. /// The segment identifier. /// The profile1 d identifier. /// The segment FailureMechanism Type /// - public IEnumerable GetSegmentProfile1DDetails(string dikeRingId, string segmentId, - string profile1DId, FailureMechanismSystemType segmentFailureMechanismType) + public IEnumerable GetSegmentProfile1DDetails(string segmentId, string profile1DId, FailureMechanismSystemType segmentFailureMechanismType) { Segment segment = GetSegment(segmentId); Dictionary nameValuePairs = segment.GetParametersForSoilProfile1DAsNameValuePairs(profile1DId, segmentFailureMechanismType); @@ -508,12 +492,11 @@ /// /// Gets the segment profile2 d details. /// - /// The dike ring identifier. /// The segment identifier. /// The profile2 d identifier. - /// The failuremechanism system type + /// The failure mechanism system type /// - public IEnumerable GetSegmentProfile2DDetails(string dikeRingId, string segmentId, + public IEnumerable GetSegmentProfile2DDetails(string segmentId, string profile2DId, FailureMechanismSystemType failureMechanismSystemType) { Segment segment = GetSegment(segmentId); @@ -525,23 +508,21 @@ /// /// Gets the soil profile1 d identifier list. /// - /// The dike ring identifier. /// - public IEnumerable GetSoilProfile1DIdList(string dikeRingId) + public IEnumerable GetSoilProfile1DIdList() { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.SoilProfiles.Select(soilProfile => soilProfile.Name); } /// /// Gets the soil profile1 d details. /// - /// The dike ring identifier. /// The soil profile1 d identifier. /// - public DpSoilProfile GetSoilProfile1DDetails(string dikeRingId, string soilProfile1DId) + public DpSoilProfile GetSoilProfile1DDetails(string soilProfile1DId) { - SoilProfile1D soilProfile = GetSoilProfile(dikeRingId, soilProfile1DId); + SoilProfile1D soilProfile = GetSoilProfile(soilProfile1DId); var dpSoilProfile = new DpSoilProfile { Layers = new List() @@ -570,10 +551,9 @@ /// /// Gets the soil profile2 d identifier list. /// - /// The dike ring identifier. /// /// - public IEnumerable GetSoilProfile2DIdList(string dikeRingId) + public IEnumerable GetSoilProfile2DIdList() { ThrowIfDataNotRead(); throw new NotImplementedException(); @@ -582,11 +562,10 @@ /// /// Gets the soil profile2 d details. /// - /// The dike ring identifier. /// The soil profile2 d identifier. /// /// - public string GetSoilProfile2DDetails(string dikeRingId, string soilProfile2DId) + public string GetSoilProfile2DDetails(string soilProfile2DId) { ThrowIfDataNotRead(); throw new NotImplementedException(); @@ -595,24 +574,22 @@ /// /// Gets the soil identifier list. /// - /// The dike ring identifier. /// - public IEnumerable GetSoilIdList(string dikeRingId) + public IEnumerable GetSoilIdList() { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); IEnumerable soilNames = dike.SoilList.Soils.Select(soil => soil.Name).ToList(); return soilNames; } /// /// Gets the soil details. /// - /// The dike ring identifier. /// The soil identifier. /// - public IEnumerable GetSoilDetails(string dikeRingId, string soilId) + public IEnumerable GetSoilDetails(string soilId) { - DamSoil soil = GetSoil(dikeRingId, soilId); + DamSoil soil = GetSoil(soilId); Dictionary nameValuePairs = SoilUtils.GetParametersAsNameValuePairs(soil); return GetParametersFromDictionary(nameValuePairs, soil); @@ -675,12 +652,11 @@ /// /// Gets the dike. /// - /// The dike ring identifier. /// - private Dike GetDike(string dikeRingId) + private Dike GetDike() { ThrowIfDataNotRead(); - return WaterBoard.Dikes.First(d => d.Name.Equals(dikeRingId)); + return WaterBoard.Dike; } /// @@ -697,63 +673,58 @@ /// /// Gets the location. /// - /// The dike ring identifier. /// The location identifier. /// - private Location GetLocation(string dikeRingId, string locationId) + private Location GetLocation(string locationId) { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.Locations.First(l => l.Name.Equals(locationId)); } /// /// Gets a soil. /// - /// The dike ring identifier. /// The soil identifier. /// - private DamSoil GetSoil(string dikeRingId, string soilId) + private DamSoil GetSoil(string soilId) { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); DamSoil soil = dike.DamSoils.FirstOrDefault(s => s.Name.Equals(soilId, StringComparison.InvariantCultureIgnoreCase)); return soil; } /// /// Gets a soil profile. /// - /// The dike ring identifier. /// The soil profile1 d identifier. /// - private SoilProfile1D GetSoilProfile(string dikeRingId, string soilProfile1DId) + private SoilProfile1D GetSoilProfile(string soilProfile1DId) { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.SoilProfiles.First(p => p.Name.Equals(soilProfile1DId)); } /// /// Gets a scenario. /// - /// The dike ring identifier. /// The location identifier. /// The scenario identifier. /// - private Scenario GetScenario(string dikeRingId, string locationId, string scenarioId) + private Scenario GetScenario(string locationId, string scenarioId) { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); Location location = dike.Locations.FirstOrDefault(l => l.Name.Equals(locationId)); return (location == null ? null : location.Scenarios.FirstOrDefault(s => s.LocationScenarioID.Equals(scenarioId))); } /// /// Gets a surface line. /// - /// The dike ring identifier. /// The surface line identifier. /// - private SurfaceLine2 GetSurfaceLine(string dikeRingId, string surfaceLineId) + private SurfaceLine2 GetSurfaceLine(string surfaceLineId) { - Dike dike = GetDike(dikeRingId); + Dike dike = GetDike(); return dike.SurfaceLines2.First(x => x.Name.Equals(surfaceLineId)); } @@ -817,15 +788,6 @@ } /// - /// Get all locations for all dikes - /// - /// - private IEnumerable GetAllLocations() - { - return WaterBoard.Dikes.SelectMany(dike => dike.Locations); - } - - /// /// Pre conditions: /// - A list of waterboard locations with initialized x,y values /// - shape file ccontaining the attributes and data @@ -1174,12 +1136,9 @@ /// private void CorrectSegmentAssignments() { - foreach (Dike dike in WaterBoard.Dikes) + foreach (Location location in WaterBoard.Dike.Locations) { - foreach (Location location in dike.Locations) - { - location.Segment = WaterBoard.Segments.FirstOrDefault(s => s.Name.Equals(location.SegmentId)); - } + location.Segment = WaterBoard.Segments.FirstOrDefault(s => s.Name.Equals(location.SegmentId)); } } Index: DamClients/DamUI/trunk/src/Dam/Forms/DamNewProjectDialog.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Forms/DamNewProjectDialog.cs (.../DamNewProjectDialog.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Forms/DamNewProjectDialog.cs (.../DamNewProjectDialog.cs) (revision 6823) @@ -370,13 +370,18 @@ { string damProjectFolder = Path.GetDirectoryName(sourceFileName); List importLogMessages = null; - List dikeRingIds = null; + string dikeRingId = null; DataEventPublisher.InvokeWithoutPublishingEvents(() => { - dikeRingIds = WaterBoardImporter.ImportDikeRingIds( + dikeRingId = WaterBoardImporter.ImportDikeRingIds( damProjectFolder, dataSourceContainer, - DamNewProjectData.DamProjectType, out importLogMessages).ToList(); + DamNewProjectData.DamProjectType, out importLogMessages); }); + var dikeRingIds = new List(); + if (dikeRingId != null) + { + dikeRingIds.Add(dikeRingId); + } DikeRingsCheckedListBox.Items.Clear(); if (dikeRingIds.Count > 0) Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/ImportDirector.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/ImportDirector.cs (.../ImportDirector.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/ImportDirector.cs (.../ImportDirector.cs) (revision 6823) @@ -44,10 +44,7 @@ } }; - damProject.Import(importFolder, container, new[] - { - "Dike from CSV" - }, DamProjectType.Design, progress); + damProject.Import(importFolder, container, "Dike from CSV", DamProjectType.Design, progress); return damProject.DamProjectData.WaterBoard; } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs =================================================================== diff -u -r6816 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 6816) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/IO/CombineImportedDataTest.cs (.../CombineImportedDataTest.cs) (revision 6823) @@ -52,7 +52,7 @@ using (var damProjectData = new DamProjectData()) { const string testDataFolder = @"TestData\CsvData\ImporterTest"; - damProjectData.WaterBoard.Dikes.Add(new Dike()); + damProjectData.WaterBoard.Dike = new Dike(); var configuredAttributes = new List { new DataAttribute @@ -81,7 +81,7 @@ { progress = null; var csvImporter = new CsvImporter(); - string dikeRingId = damProjectData.WaterBoard.Dikes[0].Name; + string dikeRingId = damProjectData.WaterBoard.Dike.Name; foreach (CsvImporterLocations.LocationRecord locationRecord in locationRecords) { locationRecord.DikeRingId = dikeRingId; @@ -126,26 +126,26 @@ } } - Assert.That(damProjectData.WaterBoard.Dikes[0].Locations.Count, Is.EqualTo(5547)); + Assert.That(damProjectData.WaterBoard.Dike.Locations.Count, Is.EqualTo(5547)); Assert.That(damProjectData.WaterBoard.Segments.Count, Is.EqualTo(306)); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles.Count, Is.EqualTo(3874)); // ca. 6 layers per profile. kan dus kloppen! - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers.Count, Is.EqualTo(8)); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Soil.Name, Is.EqualTo("HHNK1_kade")); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Name, Is.EqualTo("Layer0")); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].TopLevel, Is.EqualTo(30.0)); - Assert.That(damProjectData.WaterBoard.Dikes[0].SurfaceLines2.Count, Is.EqualTo(3)); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles.Count, Is.EqualTo(3874)); // ca. 6 layers per profile. kan dus kloppen! + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers.Count, Is.EqualTo(8)); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].Soil.Name, Is.EqualTo("HHNK1_kade")); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].Name, Is.EqualTo("Layer0")); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].TopLevel, Is.EqualTo(30.0)); + Assert.That(damProjectData.WaterBoard.Dike.SurfaceLines2.Count, Is.EqualTo(3)); // Test import of scenarios - Location loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0110")); + Location loc = damProjectData.WaterBoard.Dike.Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0110")); Assert.That(loc.Scenarios.Count, Is.EqualTo(8)); - loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0180")); + loc = damProjectData.WaterBoard.Dike.Locations.FirstOrDefault(x => x.Name.Equals("TPL_BALGZANDKANAAL_0180")); Assert.That(loc.Scenarios.Count, Is.EqualTo(6)); // Following location has double entries in CSV file; check if this is handled correctly - loc = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(x => x.Name.Equals("TPL_SCHERMER_BUITEN_WEST_0490")); + loc = damProjectData.WaterBoard.Dike.Locations.FirstOrDefault(x => x.Name.Equals("TPL_SCHERMER_BUITEN_WEST_0490")); Assert.That(loc.Scenarios.Count, Is.EqualTo(6)); // Check aquifer data - IList aquifers = damProjectData.WaterBoard.Dikes[0].Aquifers; + IList aquifers = damProjectData.WaterBoard.Dike.Aquifers; Assert.That(aquifers.Count, Is.EqualTo(4)); Assert.That(aquifers[0].StixFileName, Is.EqualTo("DWP_1.stix")); Assert.That(aquifers[0].LayerName, Is.EqualTo("L1")); @@ -223,29 +223,29 @@ Assert.Multiple(() => { - Assert.That(damProjectData.WaterBoard.Dikes[0].Locations, Has.Count.EqualTo(2)); + Assert.That(damProjectData.WaterBoard.Dike.Locations, Has.Count.EqualTo(2)); Assert.That(damProjectData.WaterBoard.Segments, Has.Count.EqualTo(2)); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles, Has.Count.EqualTo(23)); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles, Has.Count.EqualTo(23)); }); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers, Has.Count.EqualTo(4)); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers, Has.Count.EqualTo(4)); Assert.Multiple(() => { - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Soil.Name, Is.EqualTo("kade")); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].Name, Is.EqualTo("Layer0")); - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilProfiles[0].Layers[0].TopLevel, Is.EqualTo(60.0)); - Assert.That(damProjectData.WaterBoard.Dikes[0].SurfaceLines2, Has.Count.EqualTo(2)); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].Soil.Name, Is.EqualTo("kade")); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].Name, Is.EqualTo("Layer0")); + Assert.That(damProjectData.WaterBoard.Dike.SoilProfiles[0].Layers[0].TopLevel, Is.EqualTo(60.0)); + Assert.That(damProjectData.WaterBoard.Dike.SurfaceLines2, Has.Count.EqualTo(2)); }); // Check soil data - Assert.That(damProjectData.WaterBoard.Dikes[0].SoilList.Soils, Has.Count.EqualTo(14)); - Soil soil = damProjectData.WaterBoard.Dikes[0].SoilList.Soils.FirstOrDefault(s => s.Name == "CCC"); + Assert.That(damProjectData.WaterBoard.Dike.SoilList.Soils, Has.Count.EqualTo(14)); + Soil soil = damProjectData.WaterBoard.Dike.SoilList.Soils.FirstOrDefault(s => s.Name == "CCC"); Assert.That(soil, Is.Not.Null); Assert.Multiple(() => { Assert.That(soil.ShearStrengthModel, Is.EqualTo(ShearStrengthModel.StressTable)); Assert.That(soil.StressTable.Name, Is.EqualTo("CurveKlei")); }); - soil = damProjectData.WaterBoard.Dikes[0].SoilList.Soils.FirstOrDefault(s => s.Name == "FFO"); + soil = damProjectData.WaterBoard.Dike.SoilList.Soils.FirstOrDefault(s => s.Name == "FFO"); Assert.That(soil, Is.Not.Null); Assert.Multiple(() => { @@ -254,16 +254,16 @@ }); // Check degree of consolidation data - Assert.That(damProjectData.WaterBoard.Dikes[0].DamSoils, Has.Count.EqualTo(14)); - DamSoil damSoil = damProjectData.WaterBoard.Dikes[0].DamSoils.FirstOrDefault(s => s.Name == "CCC"); + Assert.That(damProjectData.WaterBoard.Dike.DamSoils, Has.Count.EqualTo(14)); + DamSoil damSoil = damProjectData.WaterBoard.Dike.DamSoils.FirstOrDefault(s => s.Name == "CCC"); Assert.That(damSoil, Is.Not.Null); Assert.That(damSoil.TrafficLoadDegreeOfConsolidation, Is.EqualTo(25)); - damSoil = damProjectData.WaterBoard.Dikes[0].DamSoils.FirstOrDefault(s => s.Name == "BAS"); + damSoil = damProjectData.WaterBoard.Dike.DamSoils.FirstOrDefault(s => s.Name == "BAS"); Assert.That(damSoil, Is.Not.Null); Assert.That(damSoil.TrafficLoadDegreeOfConsolidation, Is.EqualTo(100)); // Check location specific data - Location location = damProjectData.WaterBoard.Dikes[0].Locations.FirstOrDefault(s => s.Name.Equals("25-2-2-A-1-A")); + Location location = damProjectData.WaterBoard.Dike.Locations.FirstOrDefault(s => s.Name.Equals("25-2-2-A-1-A")); Assert.That(location, Is.Not.Null); Assert.Multiple(() => { Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeTest.cs =================================================================== diff -u -r6812 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeTest.cs (.../DikeTest.cs) (revision 6812) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeTest.cs (.../DikeTest.cs) (revision 6823) @@ -69,7 +69,7 @@ location1.Name = "Location1"; location1.Segment = segment1; dike.Locations.Add(location1); - + // Soil lists dike.SoilList = new SoilList(); dike.DamSoils = []; @@ -335,10 +335,10 @@ { var soil1 = new DamSoil(); var soil2 = new DamSoil(); - + dike.AddDamSoil(soil1); dike.AddDamSoil(soil2); - + Assert.Multiple(() => { Assert.That(dike.SoilList.Soils, Has.Count.EqualTo(2)); @@ -352,7 +352,7 @@ Assert.That(dike.DamSoils[1], Is.EqualTo(soil2)); }); } - + [Test] public void GivenDamSoil_WhenRemovingIt_ThenIsRemovedFromBothSoilLists() { @@ -362,9 +362,9 @@ dike.DamSoils.Clear(); dike.AddDamSoil(soil1); dike.AddDamSoil(soil2); - + dike.RemoveDamSoil(soil2); - + Assert.Multiple(() => { Assert.That(dike.SoilList.Soils, Has.Count.EqualTo(1)); Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectCalculationSpecification.cs =================================================================== diff -u -r6764 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectCalculationSpecification.cs (.../DamProjectCalculationSpecification.cs) (revision 6764) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectCalculationSpecification.cs (.../DamProjectCalculationSpecification.cs) (revision 6823) @@ -44,8 +44,6 @@ public DamProjectCalculationSpecification() { DamCalculationSpecifications = new List(); - //waterLevelTimeSeriesFileName = @"d:\src\delftgeosystems\trunk\data\Dam\RRD\Groot Salland\DAM UI Testdata\inputshortstart_dam.xml"; - DataEventPublisher.OnAfterChange += DataEventPublisher_OnAfterChange; } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 6823) @@ -83,7 +83,7 @@ string outputString = DamXmlSerialization.SaveOutputAsXmlString(output); output = DamXmlSerialization.LoadOutputFromXmlString(outputString); var actualDamProjectData = new DamProjectData(); - actualDamProjectData.WaterBoard.Dikes.Add(new Dike()); + actualDamProjectData.WaterBoard.Dike = new Dike(); actualDamProjectData.DamProjectCalculationSpecification.CurrentSpecification = new DamFailureMechanismeCalculationSpecification(); Assert.That(() => FillDamUiFromXmlOutput.AddOutputToDamProjectData(actualDamProjectData, output), Throws.InstanceOf()); @@ -99,7 +99,7 @@ string outputString = DamXmlSerialization.SaveOutputAsXmlString(output); output = DamXmlSerialization.LoadOutputFromXmlString(outputString); var actualDamProjectData = new DamProjectData(); - actualDamProjectData.WaterBoard.Dikes.Add(new Dike()); + actualDamProjectData.WaterBoard.Dike = new Dike(); actualDamProjectData.DamProjectCalculationSpecification.CurrentSpecification = new DamFailureMechanismeCalculationSpecification(); actualDamProjectData = FillDamUiFromXmlOutput.AddOutputToDamProjectData(actualDamProjectData, output); @@ -300,7 +300,7 @@ } }; - project.WaterBoard.Dikes.Add(new Dike()); + project.WaterBoard.Dike = new Dike(); SurfaceLine2 surfaceline = CreateSurfaceLine2(); var location1 = new Location(); location1.Name = "Location 1"; Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImportDirectorTests.cs =================================================================== diff -u -r6793 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImportDirectorTests.cs (.../CsvImportDirectorTests.cs) (revision 6793) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImportDirectorTests.cs (.../CsvImportDirectorTests.cs) (revision 6823) @@ -160,7 +160,7 @@ { using (WaterBoard waterBoard = ImportDirector.Construct(importFolder, null)) { - Dike dike = waterBoard.Dikes[0]; + Dike dike = waterBoard.Dike; Assert.That(dike, Is.Not.Null); @@ -185,7 +185,7 @@ Assert.That(dike.SurfaceLines2[0].CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide), Is.Not.Null); } } - + /// /// Test /// @@ -196,19 +196,19 @@ public void SoilProfilesOfImportedDikeHaveCorrectProbability() { WaterBoard waterBoard = ImportDirector.Construct(importFolder, null); - Dike dike = waterBoard.Dikes[0]; + Dike dike = waterBoard.Dike; Assert.That(waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[0], FailureMechanismSystemType.StabilityInside), Is.EqualTo(80)); Assert.That(waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[1], FailureMechanismSystemType.Piping), Is.EqualTo(100)); } - + /// /// Test /// [Test] public void SurfaceLinesOfImportedDikeHaveSameInstance() { WaterBoard waterBoard = ImportDirector.Construct(importFolder, null); - Dike dike = waterBoard.Dikes[0]; + Dike dike = waterBoard.Dike; Assert.That(dike.SurfaceLines2[0], Is.SameAs(dike.Locations[0].SurfaceLine2)); } @@ -219,7 +219,7 @@ public void CanImportDikeWithMinimalInput() { WaterBoard waterBoard = ImportDirector.Construct(importFolder, null); - Dike dike = waterBoard.Dikes[0]; + Dike dike = waterBoard.Dike; Assert.That(dike, Is.Not.Null); } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r6817 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 6817) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 6823) @@ -157,10 +157,7 @@ // Create the project to serialize var waterBoard = new WaterBoard { - Dikes = new List - { - dike - } + Dike = dike }; var projectData = new DamProjectData(); @@ -259,10 +256,7 @@ // Create the project to serialize var waterBoard = new WaterBoard { - Dikes = new List - { - dike - } + Dike = dike }; var projectData = new DamProjectData(); @@ -341,10 +335,7 @@ // Create the project to serialize var waterBoard = new WaterBoard { - Dikes = new List - { - dike - } + Dike = dike }; var projectData = new DamProjectData(); @@ -427,10 +418,7 @@ // Create the project to serialize var waterBoard = new WaterBoard { - Dikes = new List - { - dike - } + Dike = dike }; var projectData = new DamProjectData(); @@ -529,10 +517,7 @@ // Create the project to serialize var waterBoard = new WaterBoard { - Dikes = new List - { - dike - } + Dike = dike }; var projectData = new DamProjectData(); @@ -585,7 +570,7 @@ { // Given DataSet Containing Illegal Characters DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); - Location location = expectedDamProjectData.WaterBoard.Dikes[0].Locations[0]; + Location location = expectedDamProjectData.WaterBoard.Dike.Locations[0]; location.Name = id; // When Writing Xml @@ -616,7 +601,7 @@ { // Given DataSet Containing Illegal Characters DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); - Location location = expectedDamProjectData.WaterBoard.Dikes[0].Locations[0]; + Location location = expectedDamProjectData.WaterBoard.Dike.Locations[0]; location.Name = id; // When Writing Xml @@ -634,7 +619,7 @@ { // Given DataSet with undefined RiverLevel DamProjectData damProjectData = CreateExampleDamProjectData(); - Scenario scenario = damProjectData.WaterBoard.Dikes[0].Locations[0].Scenarios[0]; + Scenario scenario = damProjectData.WaterBoard.Dike.Locations[0].Scenarios[0]; scenario.RiverLevel = null; // When Writing Xml, Then Raise Exception With Clear Message @@ -650,7 +635,7 @@ { // Given DataSet with undefined RiverLevelLow DamProjectData damProjectData = CreateExampleDamProjectData(); - Scenario scenario = damProjectData.WaterBoard.Dikes[0].Locations[0].Scenarios[0]; + Scenario scenario = damProjectData.WaterBoard.Dike.Locations[0].Scenarios[0]; scenario.RiverLevelLow = null; DamFailureMechanismeCalculationSpecification currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; currentSpecification.FailureMechanismSystemType = failureMechanismSystemType; @@ -798,13 +783,12 @@ FillAnalysisSpecification(damProjectData); FillStabilityParameters(damProjectData); damProjectData.WaterBoard = new WaterBoard(); - damProjectData.WaterBoard.Dikes = new List(); - damProjectData.WaterBoard.Dikes.Add(new Dike + damProjectData.WaterBoard.Dike = new Dike { MapForSoilGeometries2D = @"TestData\FillXMLInputFromDamUI" - }); + }; damProjectData.MaxCalculationCores = 3; - Dike dike = damProjectData.WaterBoard.Dikes[0]; + Dike dike = damProjectData.WaterBoard.Dike; List surfaceLines = CreateSurfaceLines(); FillSoils(dike); FillSoilProfiles1D(dike); @@ -819,7 +803,6 @@ FillSensorData(damProjectData); return damProjectData; } - private void FillSensorData(DamProjectData damProjectData) { @@ -862,7 +845,7 @@ sensorData.SensorGroups.Add(sensorGroup1); var sensorLocation1 = new SensorLocation { - Location = damProjectData.WaterBoard.Dikes[0].Locations[0], + Location = damProjectData.WaterBoard.Dike.Locations[0], Group = sensorGroup1, SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData, @@ -873,7 +856,7 @@ SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.LocationData }; - damProjectData.WaterBoard.Dikes[0].Locations[0].SensorLocation = sensorLocation1; + damProjectData.WaterBoard.Dike.Locations[0].SensorLocation = sensorLocation1; sensorData.SensorLocations.Add(sensorLocation1); var sensor3 = new Sensor @@ -900,7 +883,7 @@ sensorData.SensorGroups.Add(sensorGroup2); var sensorLocation2 = new SensorLocation { - Location = damProjectData.WaterBoard.Dikes[0].Locations[0], + Location = damProjectData.WaterBoard.Dike.Locations[0], Group = sensorGroup1, SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData, @@ -911,7 +894,7 @@ SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData, SourceTypePl1PlLineOffsetBelowShoulderBaseInside = DataSourceTypeSensors.LocationData }; - damProjectData.WaterBoard.Dikes[0].Locations[2].SensorLocation = sensorLocation2; + damProjectData.WaterBoard.Dike.Locations[2].SensorLocation = sensorLocation2; sensorData.SensorLocations.Add(sensorLocation2); } @@ -1234,7 +1217,7 @@ private static void FillSegments(DamProjectData damProjectData) { const int segmentCount = 2; - Dike dike = damProjectData.WaterBoard.Dikes[0]; + Dike dike = damProjectData.WaterBoard.Dike; for (var i = 0; i < segmentCount; i++) { var segment = new Segment Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/DamProjectDataTests.cs =================================================================== diff -u -r6812 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/DamProjectDataTests.cs (.../DamProjectDataTests.cs) (revision 6812) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/DamProjectDataTests.cs (.../DamProjectDataTests.cs) (revision 6823) @@ -42,8 +42,8 @@ soil.ShearStrengthModel = shearStrengthModel; var damProjectData = new DamProjectData(); damProjectData.WaterBoard = new WaterBoard(); - damProjectData.WaterBoard.Dikes.Add(new Dike()); - damProjectData.WaterBoard.Dikes[0].DamSoils.Add(soil); + damProjectData.WaterBoard.Dike = new Dike(); + damProjectData.WaterBoard.Dike.DamSoils.Add(soil); var damCalculationSpecification = new DamFailureMechanismeCalculationSpecification { FailureMechanismSystemType = failureMechanismSystemType @@ -87,8 +87,8 @@ soil.ShearStrengthModel = shearStrengthModel; var damProjectData = new DamProjectData(); damProjectData.WaterBoard = new WaterBoard(); - damProjectData.WaterBoard.Dikes.Add(new Dike()); - damProjectData.WaterBoard.Dikes[0].DamSoils.Add(soil); + damProjectData.WaterBoard.Dike = new Dike(); + damProjectData.WaterBoard.Dike.DamSoils.Add(soil); var damCalculationSpecification = new DamFailureMechanismeCalculationSpecification { FailureMechanismSystemType = failureMechanismSystemType @@ -132,8 +132,8 @@ soil.ShearStrengthModel = shearStrengthModel; var damProjectData = new DamProjectData(); damProjectData.WaterBoard = new WaterBoard(); - damProjectData.WaterBoard.Dikes.Add(new Dike()); - damProjectData.WaterBoard.Dikes[0].DamSoils.Add(soil); + damProjectData.WaterBoard.Dike = new Dike(); + damProjectData.WaterBoard.Dike.DamSoils.Add(soil); var damCalculationSpecification = new DamFailureMechanismeCalculationSpecification { FailureMechanismSystemType = failureMechanismSystemType Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs =================================================================== diff -u -r6814 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs (.../DamProjectData.cs) (revision 6814) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProjectData.cs (.../DamProjectData.cs) (revision 6823) @@ -136,12 +136,12 @@ waterBoardJob = new WaterBoardJob(waterBoard); waterBoardJob.Subject = waterBoard; - foreach (Dike dike in waterBoard.Dikes) + if (waterBoard.Dike != null) { - CompositeJob dikeJob = new DikeJob(dike); + CompositeJob dikeJob = new DikeJob(waterBoard.Dike); waterBoardJob.Jobs.Add(dikeJob); - foreach (Location location in dike.Locations) + foreach (Location location in waterBoard.Dike.Locations) { var locationJob = new LocationJob(location); dikeJob.Jobs.Add(locationJob); @@ -407,7 +407,7 @@ public bool HasResults() { - bool hasResults = waterBoard.Dikes.Count > 0 && waterBoardJob != null && waterBoardJob.Jobs.Count > 0; + bool hasResults = waterBoard.Dike != null && waterBoardJob != null && waterBoardJob.Jobs.Count > 0; if (hasResults) { hasResults = GetNumberOfCalculatedJobs() > 0; @@ -445,9 +445,9 @@ { const string sourceName = "DamSoil"; var validationResults = new List(); - if (WaterBoard != null && WaterBoard.Dikes.Count > 0) + if (WaterBoard != null && WaterBoard.Dike != null) { - foreach (DamSoil damSoil in WaterBoard.Dikes[0].DamSoils) + foreach (DamSoil damSoil in WaterBoard.Dike.DamSoils) { validationResults.AddRange(Validator.ValidateProperty(damSoil, "AbovePhreaticLevel", sourceName)); validationResults.AddRange(Validator.ValidateProperty(damSoil, "BelowPhreaticLevel", sourceName)); @@ -617,13 +617,10 @@ { if (locationJob.HasDesignScenarioResults) { - foreach (Dike dike in WaterBoard.Dikes) + if (WaterBoard.Dike.Locations.Contains(locationJob.Location)) { - if (dike.Locations.Contains(locationJob.Location)) - { - dike.UpdateLocation(locationJob.Location); - break; - } + WaterBoard.Dike.UpdateLocation(locationJob.Location); + break; } numberOfCalculatedJobs++; Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Memoryleaks/DamMemoryLeakTests.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Memoryleaks/DamMemoryLeakTests.cs (.../DamMemoryLeakTests.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Memoryleaks/DamMemoryLeakTests.cs (.../DamMemoryLeakTests.cs) (revision 6823) @@ -129,7 +129,7 @@ var dike = new Dike(); list.Add(dike); GetMonitoredChildren(dike); // Create 'leakable' Dike instance - waterBoard.Dikes.Add(dike); + waterBoard.Dike = dike; return list; } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LocationJobTests.cs =================================================================== diff -u -r6723 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LocationJobTests.cs (.../LocationJobTests.cs) (revision 6723) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LocationJobTests.cs (.../LocationJobTests.cs) (revision 6823) @@ -48,7 +48,7 @@ [TestCase(FailureMechanismSystemType.Piping, StabilityModelType.UpliftVan, false, false)] [TestCase(FailureMechanismSystemType.StabilityInside, StabilityModelType.Bishop, false, false)] [TestCase(FailureMechanismSystemType.StabilityInside, StabilityModelType.BishopUpliftVan, false, false)] - public void GivenValidResult_WhenDetermineIsUpliftVanNoUplift_ThenResultIsAsExpected(FailureMechanismSystemType failureMechanismSystemType, + public void GivenValidResult_WhenDetermineIsUpliftVanNoUplift_ThenResultIsAsExpected(FailureMechanismSystemType failureMechanismSystemType, StabilityModelType stabilityModelType, bool isUplift, bool isExpected) { var calculationResult = new CsvExportData @@ -63,5 +63,4 @@ bool isUpliftVanNoUplift = LocationJob.IsUpliftVanNoUplift(calculationResult); Assert.That(isUpliftVanNoUplift, Is.EqualTo(isExpected)); } - } \ No newline at end of file Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs =================================================================== diff -u -r6817 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs (.../ComputeHelper.cs) (revision 6817) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ComputeHelper.cs (.../ComputeHelper.cs) (revision 6823) @@ -59,8 +59,8 @@ out List logMessages) { using DamProjectData damProjectData = ProjectLoader.LoadProjectData(projectFilename); - Assert.That(damProjectData.WaterBoard.Dikes.Count, Is.EqualTo(1)); - Dike dike = damProjectData.WaterBoard.Dikes[0]; + Assert.That(damProjectData.WaterBoard.Dike, Is.Not.Null); + Dike dike = damProjectData.WaterBoard.Dike; Assert.That(dike.Locations, Has.Count.EqualTo(computeStabilityProjectParameters.ExpectedLocations)); // Specify calculation Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs =================================================================== diff -u -r6585 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs (.../StixFileReaderTest.cs) (revision 6585) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.StixFileReader.Tests/StixFileReaderTest.cs (.../StixFileReaderTest.cs) (revision 6823) @@ -24,7 +24,6 @@ using Deltares.Geometry; using Deltares.Geotechnics.Soils; using Deltares.Standard.Validation; -using DGeoSuite.Components.Persistence; using NUnit.Framework; namespace Deltares.Dam.StixFileReader.Tests; Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LoadCompatibilityTest.cs =================================================================== diff -u -r6542 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LoadCompatibilityTest.cs (.../LoadCompatibilityTest.cs) (revision 6542) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/LoadCompatibilityTest.cs (.../LoadCompatibilityTest.cs) (revision 6823) @@ -88,10 +88,7 @@ damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damProjectFolder, dataSourceContainer.MapSoilProfile2D)); } - var dikeRings = new List - { - "Dike from CSV" - }; + var dikeRings = "Dike from CSV"; damProject.Import(damProjectFolder, dataSourceContainer, dikeRings, DamProjectType.Design, null); // Save in current XML format Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r6817 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 6817) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 6823) @@ -55,7 +55,7 @@ { // First of all, check that there is a dike ThrowHelper.ThrowIfArgumentNull(damProjectData.WaterBoard, nameof(damProjectData.WaterBoard), StringResourceNames.NoDikeDefined); - Dike dike = damProjectData.WaterBoard.Dikes[0]; + Dike dike = damProjectData.WaterBoard.Dike; // Process locations string soilProfileDirectory = Path.Combine(damProjectData.ProjectPath, dike.MapForSoilGeometries2D); var soilProfiles2DToSerialize = new List(); @@ -445,12 +445,7 @@ private static void ValidateDamProjectData(DamProjectData damProjectData, List selectedLocations) { - if (damProjectData.WaterBoard.Dikes == null || damProjectData.WaterBoard.Dikes.Count != 1) - { - throw new ArgumentException(Resources.DikeShouldContainExactly1Dike); - } - - Dike dike = damProjectData.WaterBoard.Dikes[0]; + Dike dike = damProjectData.WaterBoard.Dike; ThrowHelper.ThrowIfArgumentNull(dike.Locations, nameof(dike.Locations), StringResourceNames.NoLocationsDefined); // Following situation should never occur in the UI. Tested because of the check on RiverLevelLow in the code below DamFailureMechanismeCalculationSpecification currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r6817 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 6817) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 6823) @@ -56,9 +56,8 @@ } damProjectData.WaterBoard = new WaterBoard(); - damProjectData.WaterBoard.Dikes = new List(); - damProjectData.WaterBoard.Dikes.Add(new Dike()); - Dike dike = damProjectData.WaterBoard.Dikes[0]; + damProjectData.WaterBoard.Dike = new Dike(); + Dike dike = damProjectData.WaterBoard.Dike; TransferAnalysisSpecification(input, damProjectData); TransferStabilityParameters(input, damProjectData); Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterDataShapeFilesTests.cs =================================================================== diff -u -r6669 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterDataShapeFilesTests.cs (.../DataPluginImporterDataShapeFilesTests.cs) (revision 6669) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterDataShapeFilesTests.cs (.../DataPluginImporterDataShapeFilesTests.cs) (revision 6823) @@ -56,10 +56,9 @@ public void CanRetrieveTrafficLoadFromDataShapeFile() { SetupGrootSalland(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); + IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(Location275Id); NameValueParameter[] nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.That(nameValueParameters.Count(), Is.GreaterThan(0)); @@ -70,10 +69,9 @@ public void CanRetrieveTrafficLoadDistributionAngleFromDataShapeFile() { SetupGrootSalland(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); + IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(Location275Id); NameValueParameter[] nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.That(nameValueParameters.Count(), Is.GreaterThan(0)); @@ -84,15 +82,14 @@ public void CanRetrieveTrafficLoadDistributionAngleFromDataShapeFileInCombinationWithCrossSectionShapeFile() { SetupHHNK_WILMEBREEK(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location1Id); + IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(Location1Id); NameValueParameter[] nameValueParameters = locationDetails as NameValueParameter[] ?? locationDetails.ToArray(); Assert.That(nameValueParameters.Count(), Is.GreaterThan(0)); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("TrafficLoadDistributionAngle")).ParameterValue, Is.EqualTo("25")); - locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location22Id); + locationDetails = dataPluginImporter.GetLocationDetails(Location22Id); Assert.That(locationDetails.First( x => x.ParameterName.Equals("TrafficLoadDistributionAngle")).ParameterValue, Is.EqualTo("32")); } @@ -114,13 +111,12 @@ public void CanRetrievePenetrationLengthFromDataShapeFile() { SetupGrootSalland(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location275Id); + IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(Location275Id); Assert.That(locationDetails.First( x => x.ParameterName.Equals("PenetrationLength")).ParameterValue, Is.EqualTo("-1.5")); - locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, Location475Id); + locationDetails = dataPluginImporter.GetLocationDetails(Location475Id); Assert.That(locationDetails.First( x => x.ParameterName.Equals("PenetrationLength")).ParameterValue, Is.EqualTo("-1")); } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs =================================================================== diff -u -r6813 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs (.../DamProject.cs) (revision 6813) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamProject.cs (.../DamProject.cs) (revision 6823) @@ -21,7 +21,6 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using Deltares.Dam.Data.DataPlugins.Configuration; @@ -140,7 +139,7 @@ /// The progress. /// public object Import(string dataFolder, DataSourceContainer dataSourceContainer, - IEnumerable dikeRingIds, DamProjectType damProjectType, ProgressDelegate progress) + string dikeRingIds, DamProjectType damProjectType, ProgressDelegate progress) { string damProjectFolder = Path.GetDirectoryName(projectFileName); @@ -302,29 +301,24 @@ /// Name of the map. public void AssignGeometry2DMapnameIfNotAssigned(string mapName) { - foreach (Dike dike in damProjectData.WaterBoard.Dikes) + if (String.IsNullOrEmpty(damProjectData.WaterBoard.Dike.MapForSoilGeometries2D)) { - if (String.IsNullOrEmpty(dike.MapForSoilGeometries2D)) + damProjectData.WaterBoard.Dike.MapForSoilGeometries2D = mapName; + foreach (Location location in damProjectData.WaterBoard.Dike.Locations) { - dike.MapForSoilGeometries2D = mapName; - foreach (Location location in dike.Locations) - { - location.MapForSoilGeometries2D = mapName; - } + location.MapForSoilGeometries2D = mapName; } } } /// - /// Create a destination filename for new location of soilmaterials database + /// Create a destination filename for new location of soil materials database /// /// - /// - /// /// - public static string CreateNewGeometry2DMapname(string projectFilename, string orgMapName, int dikeIndex) + public static string CreateNewGeometry2DMapname(string projectFilename) { - string destMapname = Path.GetFileNameWithoutExtension(projectFilename) + ".geometries2D." + dikeIndex.ToString(CultureInfo.InvariantCulture) + @"\"; + string destMapname = Path.GetFileNameWithoutExtension(projectFilename) + ".geometries2D" + @"\"; return destMapname; } @@ -504,31 +498,28 @@ /// The directory in which the .defx file resides. private void EnsureGeometries2DMapWithProject(string fileName, string projectDirectory, string dataSourceDirectory) { - for (var dikeIndex = 0; dikeIndex < damProjectData.WaterBoard.Dikes.Count; dikeIndex++) + if (!String.IsNullOrEmpty(damProjectData.WaterBoard.Dike.MapForSoilGeometries2D)) { - if (!String.IsNullOrEmpty(damProjectData.WaterBoard.Dikes[dikeIndex].MapForSoilGeometries2D)) - { - string mapForSoilGeometries = damProjectData.WaterBoard.Dikes[dikeIndex].MapForSoilGeometries2D; - string sourceMapName = DetermineGeometriesSource(mapForSoilGeometries, projectDirectory, dataSourceDirectory); + string mapForSoilGeometries = damProjectData.WaterBoard.Dike.MapForSoilGeometries2D; + string sourceMapName = DetermineGeometriesSource(mapForSoilGeometries, projectDirectory, dataSourceDirectory); - // Only copy files if map of geometries is assigned and exists - if (!String.IsNullOrEmpty(sourceMapName) && Directory.Exists(sourceMapName)) + // Only copy files if map of geometries is assigned and exists + if (!String.IsNullOrEmpty(sourceMapName) && Directory.Exists(sourceMapName)) + { + string destMapname = CreateNewGeometry2DMapname(fileName); + string fullFilename = Path.GetFullPath(fileName); + string destFullMapname = Path.Combine(Path.GetDirectoryName(fullFilename), destMapname); + string orgFullMapname = Path.GetFullPath(sourceMapName); + if (!orgFullMapname.Equals(destFullMapname)) { - string destMapname = CreateNewGeometry2DMapname(fileName, sourceMapName, dikeIndex); - string fullFilename = Path.GetFullPath(fileName); - string destFullMapname = Path.Combine(Path.GetDirectoryName(fullFilename), destMapname); - string orgFullMapname = Path.GetFullPath(sourceMapName); - if (!orgFullMapname.Equals(destFullMapname)) - { - CopyGeometries(orgFullMapname, destFullMapname); - } + CopyGeometries(orgFullMapname, destFullMapname); + } - // Store the relative path to the 2d-geometries - damProjectData.WaterBoard.Dikes[dikeIndex].MapForSoilGeometries2D = destMapname; - foreach (Location location in damProjectData.WaterBoard.Dikes[dikeIndex].Locations) - { - location.MapForSoilGeometries2D = destMapname; - } + // Store the relative path to the 2d-geometries + damProjectData.WaterBoard.Dike.MapForSoilGeometries2D = destMapname; + foreach (Location location in damProjectData.WaterBoard.Dike.Locations) + { + location.MapForSoilGeometries2D = destMapname; } } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/IDataPlugin.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/IDataPlugin.cs (.../IDataPlugin.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DataPlugins/IDataPlugin.cs (.../IDataPlugin.cs) (revision 6823) @@ -78,55 +78,55 @@ DamProjectType DamProjectType { set; } void SetDataSources(string dataFolder, IEnumerable dataSources); + + string GetDikeRingIdList(); - IEnumerable GetDikeRingIdList(); - void ImportDataForDikeRings(ProgressDelegate progress); - Info GetDikeRingInfo(string dikeRingId); + Info GetDikeRingInfo(); - IEnumerable GetDikeParameters(string dikeRingId); + IEnumerable GetDikeParameters(); - IEnumerable GetLocationIdList(string dikeRingId); + IEnumerable GetLocationIdList(); - Info GetLocationInfo(string dikeRingId, string locationId); + Info GetLocationInfo( string locationId); - IEnumerable GetLocationDetails(string dikeRingId, string locationId); + IEnumerable GetLocationDetails(string locationId); - IEnumerable GetSurfaceLineIdList(string dikeRingId); + IEnumerable GetSurfaceLineIdList(); - IList GetSurfaceLinePoints(string dikeRingId, string surfaceLineId); + IList GetSurfaceLinePoints(string surfaceLineId); - IEnumerable GetSurfaceLineCharacteristicPoints(string dikeRingId, string surfaceLineId); + IEnumerable GetSurfaceLineCharacteristicPoints(string surfaceLineId); - IEnumerable GetSegmentIdList(string dikeRingId); + IEnumerable GetSegmentIdList(); - IEnumerable GetProfile1DIdListForSegment(string dikeRingId, string segmentId, FailureMechanismSystemType segmentFailureMechanismType); + IEnumerable GetProfile1DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType); - IEnumerable GetProfile2DIdListForSegment(string dikeRingId, string segmentId, FailureMechanismSystemType segmentFailureMechanismType); + IEnumerable GetProfile2DIdListForSegment(string segmentId, FailureMechanismSystemType segmentFailureMechanismType); - IEnumerable GetSegmentProfile1DDetails(string dikeRingId, string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType); + IEnumerable GetSegmentProfile1DDetails(string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType); - IEnumerable GetSegmentProfile2DDetails(string dikeRingId, string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType); + IEnumerable GetSegmentProfile2DDetails(string segmentId, string profileId, FailureMechanismSystemType failureMechanismSystemType); - IEnumerable GetSoilProfile1DIdList(string dikeRingId); + IEnumerable GetSoilProfile1DIdList(); - DpSoilProfile GetSoilProfile1DDetails(string dikeRingId, string soilProfile1DId); + DpSoilProfile GetSoilProfile1DDetails(string soilProfile1DId); - IEnumerable GetSoilProfile2DIdList(string dikeRingId); + IEnumerable GetSoilProfile2DIdList(); - string GetSoilProfile2DDetails(string dikeRingId, string soilProfile2DId); + string GetSoilProfile2DDetails(string soilProfile2DId); - IEnumerable GetSoilIdList(string dikeRingId); + IEnumerable GetSoilIdList(); - IEnumerable GetSoilDetails(string dikeRingId, string soilId); + IEnumerable GetSoilDetails(string soilId); string GetMapGeometry(string mapGeometryId); IEnumerable GetMapGeometryAttributes(string mapGeometryId); - IEnumerable GetScenarioList(string dikeRingId, string name); - IEnumerable GetScenarioDetails(string dikeRingId, string name, string scenarioId); + IEnumerable GetScenarioList(string name); + IEnumerable GetScenarioDetails(string name, string scenarioId); - void DisposeImportedItem(string dikeRingId); + void DisposeImportedItem(); } \ No newline at end of file Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 6823) @@ -145,7 +145,7 @@ private static void CreateDesignResultsFromOutput(Output output, DamProjectData damProjectData) { - if (damProjectData.WaterBoard.Dikes[0] != null) + if (damProjectData.WaterBoard.Dike != null) { // Design results damProjectData.DesignCalculations = new List(); @@ -161,7 +161,7 @@ { DamFailureMechanismeCalculation = damProjectData.DamProjectCalculationSpecification.CurrentSpecification, // vanuit invoer AnalysisType = DamProjectCalculationSpecification.SelectedAnalysisType, //is vanuit invoer - DikeName = damProjectData.WaterBoard.Dikes[0].Name, // is de enige voor nu + DikeName = damProjectData.WaterBoard.Dike.Name, CalculationResult = ConversionHelper.ConvertToCalculationResult(designResult.CalculationResult), BaseFileName = designResult.BaseFileName, CalculationSubDir = designResult.CalculationSubDir, @@ -368,7 +368,7 @@ private static SoilProfile1D GetSoilProfileByName(DamProjectData damProjectData, string profileName) { - IList soilProfiles1D = damProjectData.WaterBoard.Dikes[0].SoilProfiles; + IList soilProfiles1D = damProjectData.WaterBoard.Dike.SoilProfiles; foreach (SoilProfile1D soilProfile1D in soilProfiles1D) { if (soilProfile1D.Name == profileName) Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardPostProcessRelativeProfilesTest.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardPostProcessRelativeProfilesTest.cs (.../WaterBoardPostProcessRelativeProfilesTest.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardPostProcessRelativeProfilesTest.cs (.../WaterBoardPostProcessRelativeProfilesTest.cs) (revision 6823) @@ -119,7 +119,7 @@ var waterBoard = new WaterBoard(); waterBoard.Segments.Add(segment); - waterBoard.Dikes.Add(dike); + waterBoard.Dike = dike; return waterBoard; } @@ -129,10 +129,10 @@ { WaterBoardPostProcessRelativeProfiles.CreateAbsoluteProfiles(waterBoard, CharacteristicPointType.DikeToeAtPolder); // Is location soil profile moved - SoilProfile1D soilProfile1DLocation = waterBoard.Dikes[0].Locations[0].Segment.SoilProfileProbabilities[0].SoilProfile; + SoilProfile1D soilProfile1DLocation = waterBoard.Dike.Locations[0].Segment.SoilProfileProbabilities[0].SoilProfile; AssertSoilProfile1D(offset, soilProfile1DLocation); // Is moved dike soil profile present in dike.SoilProfileList - SoilProfile1D soilProfile1DDike = waterBoard.Dikes[0].SoilProfiles.FirstOrDefault(p => p.Name.Equals(soilProfile1DLocation.Name)); + SoilProfile1D soilProfile1DDike = waterBoard.Dike.SoilProfiles.FirstOrDefault(p => p.Name.Equals(soilProfile1DLocation.Name)); AssertSoilProfile1D(offset, soilProfile1DDike); } } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterCsvTests.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterCsvTests.cs (.../DataPluginImporterCsvTests.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterCsvTests.cs (.../DataPluginImporterCsvTests.cs) (revision 6823) @@ -59,27 +59,25 @@ [Category("Slow")] public void CanImportDikeData() { - IEnumerable dikeList = dataPluginImporter.GetDikeRingIdList(); - Assert.That(dikeList.Count(), Is.EqualTo(1)); - string dikeRingId = dikeList.FirstOrDefault(); + string dikeRingId = dataPluginImporter.GetDikeRingIdList(); dataPluginImporter.ImportDataForDikeRings(null); - Info dikeInfo = dataPluginImporter.GetDikeRingInfo(dikeRingId); + Info dikeInfo = dataPluginImporter.GetDikeRingInfo(); Assert.That(dikeInfo.Name, Is.EqualTo("dijkring10")); } [Test] public void CanRetrieveLocationData() { - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); + string dikeRingId = dataPluginImporter.GetDikeRingIdList(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable locationIdList = dataPluginImporter.GetLocationIdList(dikeRingId); + IEnumerable locationIdList = dataPluginImporter.GetLocationIdList(); Assert.That(locationIdList.Count(), Is.EqualTo(24)); - Info locationInfo = dataPluginImporter.GetLocationInfo(dikeRingId, location18_6Id); + Info locationInfo = dataPluginImporter.GetLocationInfo(location18_6Id); Assert.That(locationInfo.Name, Is.EqualTo(location18_6Id)); - IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(dikeRingId, location18_6Id); + IEnumerable locationDetails = dataPluginImporter.GetLocationDetails(location18_6Id); Assert.That(locationDetails.Any(), Is.True); Assert.That(locationDetails.FirstOrDefault(x => x.ParameterName.Equals("SurfaceLineId")).ParameterValue, Is.EqualTo("dijkring10_dwp18_6")); Assert.That(locationDetails.FirstOrDefault(x => x.ParameterName.Equals("SegmentId")).ParameterValue, Is.EqualTo("segment_dijkring10_dwp18_6")); @@ -90,22 +88,22 @@ [Test] public void CanRetrieveSegmentData() { - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); + string dikeRingId = dataPluginImporter.GetDikeRingIdList(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable segmentIdList = dataPluginImporter.GetSegmentIdList(dikeRingId); + IEnumerable segmentIdList = dataPluginImporter.GetSegmentIdList(); Assert.That(segmentIdList.Count(), Is.EqualTo(24)); - IEnumerable segmentProfile1DIdList = dataPluginImporter.GetProfile1DIdListForSegment(dikeRingId, segment05_4Id, FailureMechanismSystemType.StabilityInside); + IEnumerable segmentProfile1DIdList = dataPluginImporter.GetProfile1DIdListForSegment(segment05_4Id, FailureMechanismSystemType.StabilityInside); Assert.That(segmentProfile1DIdList.Count(), Is.EqualTo(0)); - IEnumerable segmentProfile2DIdList = dataPluginImporter.GetProfile2DIdListForSegment(dikeRingId, segment05_4Id, FailureMechanismSystemType.StabilityInside); + IEnumerable segmentProfile2DIdList = dataPluginImporter.GetProfile2DIdListForSegment(segment05_4Id, FailureMechanismSystemType.StabilityInside); Assert.That(segmentProfile2DIdList.Count(), Is.EqualTo(1)); string soilProfile2DId = segmentProfile2DIdList.FirstOrDefault(); Assert.That(soilProfile2DId, Is.EqualTo("10Y_054_STBI.stix")); - IEnumerable profileDetails = dataPluginImporter.GetSegmentProfile2DDetails(dikeRingId, segment05_4Id, soilProfile2DId, FailureMechanismSystemType.StabilityInside); + IEnumerable profileDetails = dataPluginImporter.GetSegmentProfile2DDetails(segment05_4Id, soilProfile2DId, FailureMechanismSystemType.StabilityInside); Assert.That(profileDetails.FirstOrDefault(x => x.ParameterName.Equals("Probability")).ParameterValue, Is.EqualTo("100")); Assert.That(profileDetails.FirstOrDefault(x => x.ParameterName.Equals("FailureMechanismType")).ParameterValue, Is.EqualTo("StabilityInside")); } @@ -116,14 +114,13 @@ const double cToleranceCoordinate = 0.001; // Check if surfacelines available - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable surfaceLineIdList = dataPluginImporter.GetSurfaceLineIdList(dikeRingId); + IEnumerable surfaceLineIdList = dataPluginImporter.GetSurfaceLineIdList(); Assert.That(surfaceLineIdList.Count(), Is.EqualTo(13)); // Check begin- and endpoint of 1 surfaceline - IList surfaceLinePoints = dataPluginImporter.GetSurfaceLinePoints(dikeRingId, surfaceline40_0Id); + IList surfaceLinePoints = dataPluginImporter.GetSurfaceLinePoints(surfaceline40_0Id); Assert.That(surfaceLinePoints.Count(), Is.GreaterThan(0)); Assert.That(surfaceLinePoints[0].X, Is.EqualTo(0.0).Within(cToleranceCoordinate)); Assert.That(surfaceLinePoints[0].Y, Is.EqualTo(0.0).Within(cToleranceCoordinate)); @@ -134,7 +131,7 @@ Assert.That(surfaceLinePoints[lastPointIndex].Z, Is.EqualTo(-0.36).Within(cToleranceCoordinate)); // Check specific characteristic points of 1 surfaceline - IEnumerable surfaceLineCharacteristicPoints = dataPluginImporter.GetSurfaceLineCharacteristicPoints(dikeRingId, surfaceline40_0Id); + IEnumerable surfaceLineCharacteristicPoints = dataPluginImporter.GetSurfaceLineCharacteristicPoints(surfaceline40_0Id); Assert.That(surfaceLineIdList.Count(), Is.EqualTo(13)); Assert.That(surfaceLineCharacteristicPoints.Count(), Is.GreaterThan(0)); DpCharacteristicPoint pointSurfaceLevelOutside = @@ -153,12 +150,11 @@ const double cToleranceCoordinate = 0.001; // Check if soilprofiles available - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - IEnumerable soilProfile1DIdList = dataPluginImporter.GetSoilProfile1DIdList(dikeRingId); + IEnumerable soilProfile1DIdList = dataPluginImporter.GetSoilProfile1DIdList(); Assert.That(soilProfile1DIdList.Count(), Is.EqualTo(26)); - DpSoilProfile soilProfile = dataPluginImporter.GetSoilProfile1DDetails(dikeRingId, soilprofile10Y_149_STBI_pId); + DpSoilProfile soilProfile = dataPluginImporter.GetSoilProfile1DDetails(soilprofile10Y_149_STBI_pId); Assert.That(soilProfile.Layers.Count(), Is.EqualTo(4)); Assert.That(soilProfile.Layers[0].TopLevel, Is.EqualTo(60.0).Within(cToleranceCoordinate)); Assert.That(soilProfile.Layers[0].SoilName, Is.EqualTo("klei")); @@ -175,13 +171,12 @@ { const double cToleranceDimension = 0.001; - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - List scenarioList = dataPluginImporter.GetScenarioList(dikeRingId, location18_6Id).ToList(); + List scenarioList = dataPluginImporter.GetScenarioList(location18_6Id).ToList(); Assert.That(scenarioList.Count(), Is.EqualTo(1)); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, location18_6Id, "1"); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(location18_6Id, "1"); foreach (NameValueParameter nameValue in scenarioDetails) { switch (nameValue.ParameterName) Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs =================================================================== diff -u -r6815 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs (.../WaterBoard.cs) (revision 6815) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoard.cs (.../WaterBoard.cs) (revision 6823) @@ -36,7 +36,6 @@ public class WaterBoard : IVisibleEnabled, IDisposable { private readonly FeatureRepository backgroundRepository; - private IList dikes; private List locations; private IList featureList; private IList segments; @@ -45,7 +44,6 @@ public WaterBoard() { - dikes = new List(); featureList = new List(); backgroundRepository = new FeatureRepository(); segments = new List(); @@ -75,12 +73,7 @@ { get { - if (dike != null) - { - return dike; - } - - return dikes.Count > 0 ? dikes[0] : null; + return dike; } set { @@ -103,19 +96,6 @@ } } - [Validate] - public virtual IList Dikes - { - get - { - return dikes; - } - set - { - dikes = value; - } - } - [XmlIgnore] [Browsable(false)] [ReadOnly(true)] @@ -127,9 +107,9 @@ if (locations == null) { locations = new List(); - foreach (Dike dike in Dikes) + if (Dike != null) { - locations.AddRange(dike.Locations); + locations.AddRange(Dike.Locations); } } @@ -192,10 +172,7 @@ public void Dispose() { - foreach (Dike dike in Dikes) - { - dike.Dispose(); - } + Dike?.Dispose(); } public bool IsVisible(string property) Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeCoordinateSystemConverterTest.cs =================================================================== diff -u -r6795 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeCoordinateSystemConverterTest.cs (.../DikeCoordinateSystemConverterTest.cs) (revision 6795) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DikeCoordinateSystemConverterTest.cs (.../DikeCoordinateSystemConverterTest.cs) (revision 6823) @@ -130,7 +130,6 @@ surfaceline.AddCharacteristicPoint(new GeometryPoint(10100.00, 20050.00, 10.0)); return surfaceline; } - /// /// Checks converted local surface line with reference surface line Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterTests.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterTests.cs (.../DataPluginImporterTests.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DataPluginImporterTests.cs (.../DataPluginImporterTests.cs) (revision 6823) @@ -139,17 +139,16 @@ public void ValuesFromShapeFileOverwriteValuesFromLocationsCsv() { SetupInvoer1WithShapeFiles(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - string scenarioIdOne = dataPluginImporter.GetScenarioList(dikeRingId, Location1Id).FirstOrDefault(); - NameValueParameter[] scenarioDetailsOne = dataPluginImporter.GetScenarioDetails(dikeRingId, Location1Id, scenarioIdOne).ToArray(); + string scenarioIdOne = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault(); + NameValueParameter[] scenarioDetailsOne = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioIdOne).ToArray(); Assert.That(scenarioDetailsOne, Is.Not.Empty); NameValueParameter headPl2ValueOne = scenarioDetailsOne.SingleOrDefault(x => x.ParameterName.Equals("HeadPL2")); Assert.That(headPl2ValueOne.ParameterValue, Is.EqualTo("-5.37")); - string scenarioIdTwo = dataPluginImporter.GetScenarioList(dikeRingId, Location2Id).FirstOrDefault(); - NameValueParameter[] scenarioDetailsTwo = dataPluginImporter.GetScenarioDetails(dikeRingId, Location2Id, scenarioIdTwo).ToArray(); + string scenarioIdTwo = dataPluginImporter.GetScenarioList(Location2Id).FirstOrDefault(); + NameValueParameter[] scenarioDetailsTwo = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioIdTwo).ToArray(); Assert.That(scenarioDetailsTwo, Is.Not.Empty); NameValueParameter headPl2ValueTwo = scenarioDetailsTwo.SingleOrDefault(x => x.ParameterName.Equals("HeadPL2")); Assert.That(headPl2ValueTwo.ParameterValue, Is.EqualTo("-5.37")); @@ -168,16 +167,15 @@ public void ValuesFromLocationsCsvAreCopiedToScenarioIfNotDefinedInScenariosCsvOrShapeFile() { SetupInvoer1WithoutShapeFiles(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, Location1Id).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, Location1Id, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.Any(), Is.True); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-99")); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, Location2Id, scenarioId); + scenarioDetails = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioId); Assert.That(scenarioDetails.First(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-99")); } @@ -194,16 +192,15 @@ public void ValuesFromShapeFileAreCopiedToScenarioIfNotDefinedInScenariosCsv() { SetupInvoer1WithShapeFiles(); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, Location1Id).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, Location1Id, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(Location1Id).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(Location1Id, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.Any(), Is.True); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-3.651")); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, Location2Id, scenarioId); + scenarioDetails = dataPluginImporter.GetScenarioDetails(Location2Id, scenarioId); Assert.That(scenarioDetails.First(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("-3.632")); } @@ -240,16 +237,15 @@ dataPluginImporter = new DataPluginImporter(); dataPluginImporter.SetDataSources("", srcDataSources); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // Expected: The values of location are used for scenario, because it was not specified in scenarios.csv - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-560").FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-560", scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("1.2")); - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-570").FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-570", scenarioId); + scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("2.2")); // Expected: no error messages @@ -289,16 +285,15 @@ dataPluginImporter = new DataPluginImporter(); dataPluginImporter.SetDataSources("", srcDataSources); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // Expected: The values of scenarios are used for scenario - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-560").FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-560", scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("0.1")); - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-570").FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-570", scenarioId); + scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo("0.2")); // Expected: no error messages @@ -338,16 +333,15 @@ dataPluginImporter = new DataPluginImporter(); dataPluginImporter.SetDataSources("", srcDataSources); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // Expected: The values are null - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-560").FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-560", scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList("RK210-560").FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-560", scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null)); - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, "RK210-570").FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, "RK210-570", scenarioId); + scenarioId = dataPluginImporter.GetScenarioList("RK210-570").FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails("RK210-570", scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RiverLevel")).ParameterValue, Is.EqualTo(null)); // Expected: no error messages @@ -386,11 +380,10 @@ File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv")); // create importer SetupInvoerHemPolderWithoutShapeFiles(importFolder); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // check values for location 1 - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId1).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId1, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo(null)); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo(null)); @@ -411,8 +404,8 @@ Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1")); // check values for location 2 - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId2).FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId2, scenarioId); + scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo(null)); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo(null)); @@ -466,11 +459,10 @@ File.Copy(Path.Combine(testDataFolderCsv, "scenarios_basic.csv"), Path.Combine(importFolder, "scenarios.csv")); // create importer SetupInvoerHemPolderWithoutShapeFiles(importFolder); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // check values for location 1 - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId1).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId1, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.11")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.11")); @@ -491,8 +483,8 @@ Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("1.12")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("1.14")); // check values for location 2 - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId2).FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId2, scenarioId); + scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.11")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.11")); @@ -554,11 +546,10 @@ // create importer SetupInvoerHemPolderWithShapeFiles(importFolder, "LijnScenario.shp"); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // check values for location 1 - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId1).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId1, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.99")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.99")); @@ -579,8 +570,8 @@ Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.63")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.66")); // check values for location 2 - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId2).FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId2, scenarioId); + scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.99")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.99")); @@ -642,11 +633,10 @@ // create importer SetupInvoerHemPolderWithShapeFiles(importFolder, "VlakScenario.shp"); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // check values for location 1 - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId1).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId1, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.9")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.9")); @@ -667,8 +657,8 @@ Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.83")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.85")); // check values for location 2 - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId2).FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId2, scenarioId); + scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.9")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.9")); @@ -730,11 +720,10 @@ // create importer SetupInvoerHemPolderWithShapeFiles(importFolder, "LijnScenario.shp"); - string dikeRingId = dataPluginImporter.GetDikeRingIdList().FirstOrDefault(); dataPluginImporter.ImportDataForDikeRings(null); // check values for location 1 - string scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId1).FirstOrDefault(); - IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId1, scenarioId); + string scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId1).FirstOrDefault(); + IEnumerable scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId1, scenarioId); NameValueParameter[] nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("0.25")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("2.25")); @@ -755,8 +744,8 @@ Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityInnerSlope")).ParameterValue, Is.EqualTo("0.94")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("RequiredSafetyFactorStabilityOuterSlope")).ParameterValue, Is.EqualTo("0.95")); // check values for location 2 - scenarioId = dataPluginImporter.GetScenarioList(dikeRingId, HemPolderLocationId2).FirstOrDefault(); - scenarioDetails = dataPluginImporter.GetScenarioDetails(dikeRingId, HemPolderLocationId2, scenarioId); + scenarioId = dataPluginImporter.GetScenarioList(HemPolderLocationId2).FirstOrDefault(); + scenarioDetails = dataPluginImporter.GetScenarioDetails(HemPolderLocationId2, scenarioId); nameValueParameters = scenarioDetails as NameValueParameter[] ?? scenarioDetails.ToArray(); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL3")).ParameterValue, Is.EqualTo("1.25")); Assert.That(nameValueParameters.FirstOrDefault(x => x.ParameterName.Equals("HeadPL4")).ParameterValue, Is.EqualTo("3.25")); Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs =================================================================== diff -u -r6776 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 6776) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 6823) @@ -121,28 +121,22 @@ AddDikesFromLocationsToWaterBoard(WaterBoard); - foreach (Dike dike in WaterBoard.Dikes) - { - TransferLocationsData(dike); - TransferSoilProfilesData(dike); - TransferAquifersData(dike); - TransferSegmentData(dike); - TransferSigmaTauCurveData(dike); // Should be done before TransferSoilData(), because the SigmaTauCurveData is used there - TransferSuTableData(dike); // Should be done before TransferSoilData(), because the SuTableCurveData is used there - TransferSoilData(dike); - // Use InvokeWithoutPublishingEvents for performance reasons after introducing SurfaceLine2 - DataEventPublisher.InvokeWithoutPublishingEvents(() => { TransferSurfaceLines(dike); }); - } + TransferLocationsData(WaterBoard.Dike); + TransferSoilProfilesData(WaterBoard.Dike); + TransferAquifersData(WaterBoard.Dike); + TransferSegmentData(WaterBoard.Dike); + TransferSigmaTauCurveData(WaterBoard.Dike); // Should be done before TransferSoilData(), because the SigmaTauCurveData is used there + TransferSuTableData(WaterBoard.Dike); // Should be done before TransferSoilData(), because the SuTableCurveData is used there + TransferSoilData(WaterBoard.Dike); + // Use InvokeWithoutPublishingEvents for performance reasons after introducing SurfaceLine2 + DataEventPublisher.InvokeWithoutPublishingEvents(() => { TransferSurfaceLines(WaterBoard.Dike); }); } public void AddScenarioDataToDikes() { - foreach (Dike dike in WaterBoard.Dikes) + if (ScenarioRecords != null) { - if (ScenarioRecords != null) - { - TransferScenarios(dike); - } + TransferScenarios(WaterBoard.Dike); } } @@ -239,9 +233,9 @@ if ((dikeRingIdList.Count <= 0) && LocationRecords.Any()) { var defaultDikeRingId = "Dike from CSV"; - if (targetWaterBoard.Dikes.Count > 0) + if (targetWaterBoard.Dike != null) { - defaultDikeRingId = targetWaterBoard.Dikes[0].Name; + defaultDikeRingId = targetWaterBoard.Dike.Name; } foreach (CsvImporterLocations.LocationRecord locationRecord in LocationRecords) @@ -253,16 +247,13 @@ } // Add dikeringids if not yet in waterboard - foreach (string dikeRingId in dikeRingIdList) + Dike dike = targetWaterBoard.Dike; + if (dike == null) { - Dike dike = targetWaterBoard.Dikes.FirstOrDefault(d => d.Name.Equals(dikeRingId)); - if (dike == null) + targetWaterBoard.Dike = new Dike { - targetWaterBoard.Dikes.Add(new Dike - { - Name = dikeRingId - }); - } + Name = dikeRingIdList[0] + }; } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardImporter.cs =================================================================== diff -u -r6776 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardImporter.cs (.../WaterBoardImporter.cs) (revision 6776) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardImporter.cs (.../WaterBoardImporter.cs) (revision 6823) @@ -75,12 +75,12 @@ /// Type of the dam project. /// The import log messages. /// - public static IEnumerable ImportDikeRingIds( + public static string ImportDikeRingIds( string dataFolder, DataSourceContainer dataSourceContainer, DamProjectType damProjectType, out List importLogMessages) { var importer = new WaterBoardImporter(dataFolder, dataSourceContainer, damProjectType); - IEnumerable allDikeRingIds = importer.AllDikeRingIDs; + string allDikeRingIds = importer.AllDikeRingIDs; importLogMessages = new List(importer.ImportCsvLogMessages); return allDikeRingIds; @@ -98,7 +98,7 @@ /// The log messages. /// public static WaterBoard ImportDataForDikeRings(string damProjectFolder, string dataFolder, - DataSourceContainer dataSourceContainer, IEnumerable dikeRingIds, + DataSourceContainer dataSourceContainer, string dikeRingIds, DamProjectType damProjectType, ProgressDelegate progress, out List logMessages) { var importer = new WaterBoardImporter(dataFolder, dataSourceContainer, damProjectType); @@ -108,12 +108,10 @@ try { waterBoard = importer.ImportDataForDikeRings(damProjectFolder, dikeRingIds, progress); - foreach (Dike dike in waterBoard.Dikes) + + if (string.IsNullOrEmpty(waterBoard.Dike.MapForSoilGeometries2D) && !string.IsNullOrEmpty(dataSourceContainer.MapSoilProfile2D)) { - if (string.IsNullOrEmpty(dike.MapForSoilGeometries2D) && !string.IsNullOrEmpty(dataSourceContainer.MapSoilProfile2D)) - { - dike.MapForSoilGeometries2D = dataSourceContainer.MapSoilProfile2D; - } + waterBoard.Dike.MapForSoilGeometries2D = dataSourceContainer.MapSoilProfile2D; } } catch (Exception e) @@ -148,12 +146,12 @@ /// /// All dike ring i ds. /// - private IEnumerable AllDikeRingIDs + private string AllDikeRingIDs { get { ImportCsvLogMessages.Clear(); - List dikeRingIdList = importer.GetDikeRingIdList().ToList(); + string dikeRingIdList = importer.GetDikeRingIdList(); ImportCsvLogMessages.AddRange(importer.ImportLogMessages); return dikeRingIdList; } @@ -181,9 +179,9 @@ /// The dike ring ids. /// The progress. /// - private WaterBoard ImportDataForDikeRings(string damProjectFolder, IEnumerable dikeRingIds, ProgressDelegate progress) + private WaterBoard ImportDataForDikeRings(string damProjectFolder, string dikeRingIds, ProgressDelegate progress) { - List dikeRingList = ValidateDikeRingIDs(dikeRingIds); + string dikeRingId = ValidateDikeRingIDs(dikeRingIds); importer.DamProjectFolder = damProjectFolder; @@ -195,15 +193,11 @@ return waterBoard; } - // import data for dike rings - foreach (string dikeRingId in dikeRingList) - { - // Add dikes to waterboard - List importedCsvSoils = importer.WaterBoard.Dikes.First(d => d.Name == dikeRingId).ImportedCsvSoils; - IEnumerable importedCsvAquifers = importer.WaterBoard.Dikes.First(d => d.Name == dikeRingId).Aquifers; - Dike dike = ImportDataForDikeRing(importedCsvSoils, importedCsvAquifers, dikeRingId); - waterBoard.Dikes.Add(dike); - } + // Add dikes to waterboard + List importedCsvSoils = importer.WaterBoard.Dike.ImportedCsvSoils; + IEnumerable importedCsvAquifers = importer.WaterBoard.Dike.Aquifers; + Dike dike = ImportDataForDikeRing(importedCsvSoils, importedCsvAquifers, dikeRingId); + waterBoard.Dike = dike; ImportBackground(); return waterBoard; @@ -214,22 +208,19 @@ /// /// The dike ring ids. /// - private List ValidateDikeRingIDs(IEnumerable dikeRingIds) + private string ValidateDikeRingIDs(string dikeRingIds) { // if no dike ring IDs specified, take all - return dikeRingIds == null - ? importer.GetDikeRingIdList().ToList() - : (dikeRingIds as List ?? dikeRingIds.ToList()); + return dikeRingIds == null ? importer.GetDikeRingIdList() : dikeRingIds; } /// /// Imports the soils. /// - /// The dike ring identifier. /// The dike. - private void ImportSoils(string dikeRingID, Dike dike) + private void ImportSoils(Dike dike) { - List soils = GetSoils(dikeRingID); + List soils = GetSoils(); foreach (DamSoil soil in soils) { dike.AddDamSoil(soil); @@ -239,29 +230,27 @@ /// /// Gets the soils. /// - /// The dike ring identifier. /// - private List GetSoils(string dikeRingID) + private List GetSoils() { - IEnumerable soilIdList = importer.GetSoilIdList(dikeRingID); - List soils = soilIdList.Select(soilId => ImportSoil(dikeRingID, soilId)).ToList(); + IEnumerable soilIdList = importer.GetSoilIdList(); + List soils = soilIdList.Select(soilId => ImportSoil(soilId)).ToList(); return soils; } /// /// Imports a soil. /// - /// The dike ring identifier. /// The soil identifier. /// - private DamSoil ImportSoil(string dikeRingID, string soilID) + private DamSoil ImportSoil(string soilID) { var soil = new DamSoil { Name = soilID }; - IEnumerable soilDetails = importer.GetSoilDetails(dikeRingID, soilID); + IEnumerable soilDetails = importer.GetSoilDetails(soilID); foreach (NameValueParameter soilDetail in soilDetails) { @@ -285,21 +274,21 @@ { Name = dikeRingId }; - ImportSoils(dikeRingId, dike); - - ImportSoilProfiles1D(dikeRingId, dike); + ImportSoils(dike); + ImportSoilProfiles1D(dike); + ImportAquifers(importedCsvAquifers, dike); - ImportSegments(dikeRingId, dike); + ImportSegments(dike); - ImportSurfaceLines(dikeRingId, dike); + ImportSurfaceLines(dike); - ImportModelParameters(dikeRingId, dike); + ImportModelParameters(dike); - ImportLocations(dikeRingId, dike); + ImportLocations(dike); - ImportScenarios(dikeRingId, dike); + ImportScenarios(dike); // Use InvokeWithoutPublishingEvents for performance reasons after introducing SurfaceLine2 DataEventPublisher.InvokeWithoutPublishingEvents(() => @@ -313,14 +302,14 @@ ImportCsvLogMessages.AddRange(dike.MakeDataConsistent(importedCsvSoils)); - DisposeImportedItem(dikeRingId); + DisposeImportedItem(); return dike; } - private void DisposeImportedItem(string dikeRingId) + private void DisposeImportedItem() { - importer.DisposeImportedItem(dikeRingId); + importer.DisposeImportedItem(); } /// @@ -360,27 +349,25 @@ /// /// Imports the scenarios. /// - /// The dike ring identifier. /// The dike. - private void ImportScenarios(string dikeRingId, Dike dike) + private void ImportScenarios(Dike dike) { - AddScenariosToLocations(dike, dikeRingId); + AddScenariosToLocations(dike); } /// /// Adds the scenarios to locations. /// /// The dike. - /// The dike ring identifier. - private void AddScenariosToLocations(Dike dike, string dikeRingId) + private void AddScenariosToLocations(Dike dike) { foreach (Location location in dike.Locations) { - IEnumerable scenarioList = importer.GetScenarioList(dikeRingId, location.Name); + IEnumerable scenarioList = importer.GetScenarioList(location.Name); foreach (string scenarioId in scenarioList) { IEnumerable nameValues = - importer.GetScenarioDetails(dikeRingId, location.Name, scenarioId); + importer.GetScenarioDetails(location.Name, scenarioId); var scenario = new Scenario { LocationScenarioID = scenarioId @@ -401,11 +388,10 @@ /// /// Imports the locations. /// - /// The dike ring identifier. /// The dike. - private void ImportLocations(string dikeRingId, Dike dike) + private void ImportLocations(Dike dike) { - IEnumerable locationIdList = importer.GetLocationIdList(dikeRingId); + IEnumerable locationIdList = importer.GetLocationIdList(); foreach (string locationId in locationIdList) { @@ -414,15 +400,15 @@ Name = locationId }; - Info locationInfo = importer.GetLocationInfo(dikeRingId, locationId); + Info locationInfo = importer.GetLocationInfo(locationId); location.Name = locationInfo.Name; DataSourceManager.SetSource(location, "Name", locationInfo.Source); location.Description = locationInfo.Description; DataSourceManager.SetSource(location, "Description", locationInfo.Source); - IEnumerable locationDetails = importer.GetLocationDetails(dikeRingId, locationId); + IEnumerable locationDetails = importer.GetLocationDetails(locationId); foreach (NameValueParameter locationDetail in locationDetails) { location.SetParameterFromNameValuePair(locationDetail.ParameterName, locationDetail.ParameterValue); @@ -459,11 +445,10 @@ /// /// Imports the model parameters. /// - /// The dike ring identifier. /// The dike. - private void ImportModelParameters(string dikeRingId, Dike dike) + private void ImportModelParameters(Dike dike) { - IEnumerable modelParameters = importer.GetDikeParameters(dikeRingId); + IEnumerable modelParameters = importer.GetDikeParameters(); foreach (NameValueParameter modelParameter in modelParameters) { dike.SetParameterFromNameValuePair(modelParameter.ParameterName, modelParameter.ParameterValue); @@ -474,14 +459,13 @@ /// /// Imports the surface lines. /// - /// The dike ring identifier. /// The dike. - private void ImportSurfaceLines(string dikeRingId, Dike dike) + private void ImportSurfaceLines(Dike dike) { // Use InvokeWithoutPublishingEvents for performance reasons after introducing SurfaceLine2 DataEventPublisher.InvokeWithoutPublishingEvents(() => { - IEnumerable surfaceLineIdList = importer.GetSurfaceLineIdList(dikeRingId); + IEnumerable surfaceLineIdList = importer.GetSurfaceLineIdList(); foreach (string surfaceLineId in surfaceLineIdList) { var surfaceLine = new SurfaceLine2 @@ -495,14 +479,14 @@ }; // load the surface line points - IList surfaceLinePoints = importer.GetSurfaceLinePoints(dikeRingId, surfaceLineId); + IList surfaceLinePoints = importer.GetSurfaceLinePoints(surfaceLineId); foreach (GeometryPoint surfaceLinePoint in surfaceLinePoints) { surfaceLine.AddCharacteristicPoint(surfaceLinePoint); } // load the characteristic points - IEnumerable characteristicPoints = importer.GetSurfaceLineCharacteristicPoints(dikeRingId, surfaceLineId); + IEnumerable characteristicPoints = importer.GetSurfaceLineCharacteristicPoints(surfaceLineId); foreach (DpCharacteristicPoint cp in characteristicPoints) { var cpType = (CharacteristicPointType) Enum.Parse( @@ -519,11 +503,10 @@ /// /// Imports the segments. /// - /// The dike ring identifier. /// The dike. - private void ImportSegments(string dikeRingID, Dike dike) + private void ImportSegments(Dike dike) { - IEnumerable segmentIdList = importer.GetSegmentIdList(dikeRingID); + IEnumerable segmentIdList = importer.GetSegmentIdList(); foreach (string segmentID in segmentIdList) { var segment = new Segment @@ -533,8 +516,8 @@ foreach (FailureMechanismSystemType failureMechanismSystemType in Enum.GetValues(typeof(FailureMechanismSystemType))) { - AddSoilProfiles(segment, dikeRingID, segmentID, failureMechanismSystemType, dike); - AddSoilGeometry(segment, dikeRingID, segmentID, failureMechanismSystemType); + AddSoilProfiles(segment, segmentID, failureMechanismSystemType, dike); + AddSoilGeometry(segment, segmentID, failureMechanismSystemType); } waterBoard.Segments.Add(segment); @@ -545,13 +528,12 @@ /// Adds the soil profiles. /// /// The segment. - /// The dike ring identifier. /// The segment identifier. /// Type of the failure mechanism system. /// The dike. - private void AddSoilProfiles(Segment segment, string dikeRingID, string segmentID, FailureMechanismSystemType failureMechanismSystemType, Dike dike) + private void AddSoilProfiles(Segment segment, string segmentID, FailureMechanismSystemType failureMechanismSystemType, Dike dike) { - IEnumerable profile1DIdListForSegment = importer.GetProfile1DIdListForSegment(dikeRingID, segmentID, failureMechanismSystemType); + IEnumerable profile1DIdListForSegment = importer.GetProfile1DIdListForSegment(segmentID, failureMechanismSystemType); foreach (string soilProfile1DId in profile1DIdListForSegment) { @@ -561,7 +543,7 @@ }; // get soil profile - IEnumerable soilProfile1DDetails = importer.GetSegmentProfile1DDetails(dikeRingID, segmentID, soilProfile1DId, failureMechanismSystemType); + IEnumerable soilProfile1DDetails = importer.GetSegmentProfile1DDetails(segmentID, soilProfile1DId, failureMechanismSystemType); SoilProfile1D soilProfile1D = dike.SoilProfiles.FirstOrDefault(x => x.Name.Equals(soilProfile1DId)); double probability = 0; @@ -581,19 +563,18 @@ /// Adds the soil geometry. /// /// The segment. - /// The dike ring identifier. /// The segment identifier. /// Type of the failure mechanism system. - private void AddSoilGeometry(Segment segment, string dikeRingID, string segmentID, FailureMechanismSystemType failureMechanismSystemType) + private void AddSoilGeometry(Segment segment, string segmentID, FailureMechanismSystemType failureMechanismSystemType) { - IEnumerable profile2DIdListForSegment = importer.GetProfile2DIdListForSegment(dikeRingID, segmentID, failureMechanismSystemType); + IEnumerable profile2DIdListForSegment = importer.GetProfile2DIdListForSegment(segmentID, failureMechanismSystemType); foreach (string soilGeometry2DName in profile2DIdListForSegment) { var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "." }; - IEnumerable soilProfile2DDetails = importer.GetSegmentProfile2DDetails(dikeRingID, segmentID, soilGeometry2DName, failureMechanismSystemType); + IEnumerable soilProfile2DDetails = importer.GetSegmentProfile2DDetails(segmentID, soilGeometry2DName, failureMechanismSystemType); var probability = 0.0; foreach (NameValueParameter nameValueparameter in soilProfile2DDetails) { @@ -610,14 +591,13 @@ /// /// Imports the soil profiles1 d. /// - /// The dike ring identifier. /// The dike. - private void ImportSoilProfiles1D(string dikeRingId, Dike dike) + private void ImportSoilProfiles1D(Dike dike) { - IEnumerable soilProfile1DIdList = importer.GetSoilProfile1DIdList(dikeRingId); + IEnumerable soilProfile1DIdList = importer.GetSoilProfile1DIdList(); foreach (string soilProfile1DId in soilProfile1DIdList) { - dike.SoilProfiles.Add(ImportProfile(soilProfile1DId, dikeRingId, dike)); + dike.SoilProfiles.Add(ImportProfile(soilProfile1DId, dike)); } } @@ -633,26 +613,25 @@ /// Imports a profile. /// /// The soil profile1 d identifier. - /// The dike ring identifier. /// The dike. /// /// /// - private SoilProfile1D ImportProfile(string soilProfile1DId, string dikeRingId, Dike dike) + private SoilProfile1D ImportProfile(string soilProfile1DId, Dike dike) { var soilProfile = new SoilProfile1D { Name = soilProfile1DId }; var bottomLevel = 0.0; - DpSoilProfile dpSoilProfile = importer.GetSoilProfile1DDetails(dikeRingId, soilProfile1DId); + DpSoilProfile dpSoilProfile = importer.GetSoilProfile1DDetails(soilProfile1DId); for (var layerIndex = 0; layerIndex < dpSoilProfile.Layers.Count; layerIndex++) { DpLayer layer = dpSoilProfile.Layers[layerIndex]; if (layer.SoilName == SoilProfile1D.SoilProfileBottomLevelId) { - // This is a hack to communicate the bottomlevel via a layer + // This is a hack to communicate the bottom level via a layer bottomLevel = layer.TopLevel; } else Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs =================================================================== diff -u -r6750 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 6750) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 6823) @@ -47,16 +47,16 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out List _); // Check Dike - Assert.That(waterBoard.Dikes, Has.Count.EqualTo(1)); - Dike dike = waterBoard.Dikes[0]; + Assert.That(waterBoard.Dike, Is.Not.Null); + Dike dike = waterBoard.Dike; //Check locations Assert.That(dike.Locations, Has.Count.EqualTo(2)); @@ -153,10 +153,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out logMessages); @@ -167,9 +167,9 @@ Assert.That(logMessages[1].Message, Contains.Substring("Sigma-Tau curve table MissingNotUsed not found in CSV file for soil ETL (or sigmataucurves.csv missing).")); }); // Check Dike - Assert.That(waterBoard.Dikes, Has.Count.EqualTo(1)); + Assert.That(waterBoard.Dike, Is.Not.Null); //Check locations - Assert.That(waterBoard.Dikes[0].Locations, Has.Count.EqualTo(0)); + Assert.That(waterBoard.Dike.Locations, Has.Count.EqualTo(0)); } [Test] @@ -180,10 +180,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out logMessages); @@ -193,10 +193,10 @@ Assert.That(logMessages[0].Message, Contains.Substring("Sigma-Tau curve table Missing not found in CSV file for soil CCC (or sigmataucurves.csv missing).")); // Check Dike - Assert.That(waterBoard.Dikes, Has.Count.EqualTo(1)); + Assert.That(waterBoard.Dike, Is.Not.Null); //Check locations - Assert.That(waterBoard.Dikes[0].Locations, Has.Count.EqualTo(0)); + Assert.That(waterBoard.Dike.Locations, Has.Count.EqualTo(0)); }); } @@ -208,10 +208,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out logMessages); @@ -222,9 +222,9 @@ Assert.That(logMessages[1].Message, Contains.Substring("Su table MissingNotUsed not found in CSV file for soil ETL (or sutables.csv missing).")); }); // Check Dike - Assert.That(waterBoard.Dikes, Has.Count.EqualTo(1)); + Assert.That(waterBoard.Dike, Is.Not.Null); //Check locations - Assert.That(waterBoard.Dikes[0].Locations, Has.Count.EqualTo(0)); + Assert.That(waterBoard.Dike.Locations, Has.Count.EqualTo(0)); } [Test] @@ -235,10 +235,10 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); List logMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out logMessages); @@ -248,10 +248,10 @@ Assert.That(logMessages[0].Message, Contains.Substring("Su table Missing not found in CSV file for soil CCC (or sutables.csv missing).")); // Check Dike - Assert.That(waterBoard.Dikes, Has.Count.EqualTo(1)); + Assert.That(waterBoard.Dike, Is.Not.Null); //Check locations - Assert.That(waterBoard.Dikes[0].Locations, Has.Count.EqualTo(0)); + Assert.That(waterBoard.Dike.Locations, Has.Count.EqualTo(0)); }); } @@ -264,19 +264,19 @@ { dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); damProject.DamProjectData.WaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.DamLiveConfiguration, null, out List _); + dikeId, DamProjectType.DamLiveConfiguration, null, out List _); damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damImportFolder, dataSourceContainer.MapSoilProfile2D)); // Save the data damProject.SaveXMLProject(projectFilename, damProject); // Check Dike - Assert.That(damProject.DamProjectData.WaterBoard.Dikes, Has.Count.EqualTo(1)); - Dike dike = damProject.DamProjectData.WaterBoard.Dikes[0]; + Assert.That(damProject.DamProjectData.WaterBoard.Dike, Is.Not.Null); + Dike dike = damProject.DamProjectData.WaterBoard.Dike; Assert.Multiple(() => { @@ -296,15 +296,15 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, - DamProjectType.DamLiveConfiguration, out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.DamLiveConfiguration, out _); using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, - dataSourceContainer, dikeList, + dataSourceContainer, dikeId, DamProjectType.DamLiveConfiguration, null, out List _); // Check Dike - Assert.That(waterBoard.Dikes.Count, Is.EqualTo(1)); - Dike dike = waterBoard.Dikes[0]; + Assert.That(waterBoard.Dike, Is.Not.Null); + Dike dike = waterBoard.Dike; //Check locations Assert.That(dike.Locations.Count, Is.EqualTo(2)); @@ -318,13 +318,12 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, - out _).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out _); using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.DamLiveConfiguration, null, out List _)) + dikeId, DamProjectType.DamLiveConfiguration, null, out List _)) using (WaterBoard referenceWaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.DamLiveConfiguration, null, out List _)) + dikeId, DamProjectType.DamLiveConfiguration, null, out List _)) { // If profiles are defined as relative profiles, new absolute profiles will be generated for each location if (dataSourceContainer.IsImportAsRelativeProfiles) @@ -334,8 +333,8 @@ } // Check Dike - Assert.That(waterBoard.Dikes.Count, Is.EqualTo(1)); - Dike dike = waterBoard.Dikes[0]; + Assert.That(waterBoard.Dike, Is.Not.Null); + Dike dike = waterBoard.Dike; //Check locations Assert.That(dike.Locations.Count, Is.EqualTo(2)); @@ -421,15 +420,15 @@ dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - IList dikeList = + string dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, - out _).ToList(); + out _); using (WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, dikeList, DamProjectType.DamLiveConfiguration, null, out List _)) { // Check Dike - Assert.That(waterBoard.Dikes.Count, Is.EqualTo(1)); - Dike dike = waterBoard.Dikes[0]; + Assert.That(waterBoard.Dike, Is.Not.Null); + Dike dike = waterBoard.Dike; //Check locations Assert.That(dike.Locations.Count, Is.EqualTo(2)); Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/ImportTests.cs =================================================================== diff -u -r6787 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/ImportTests.cs (.../ImportTests.cs) (revision 6787) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.IntegrationTests/ImportTests.cs (.../ImportTests.cs) (revision 6823) @@ -24,10 +24,8 @@ using Deltares.Dam.Data; using Deltares.Dam.Data.DataPlugins.Configuration; using Deltares.Dam.Data.UISupport; -using Deltares.Dam.Forms; using Deltares.Standard; using Deltares.Standard.EventPublisher; -using Deltares.Standard.Language; using Deltares.Standard.Logging; using NUnit.Framework; @@ -53,7 +51,7 @@ }; damProject.ProjectFileName = damNewProjectData.DamProjectFileName; damProject.DamProjectData.DataSourceEsriProjection = damNewProjectData.DataSourceEsriProjection; - + ImportDamProjectData(damNewProjectData, damProject); // Write all log messages to a file File.WriteAllLines(Path.ChangeExtension(damDataSourceFileName, ".log"), @@ -82,7 +80,7 @@ // ATTENTION: Do not stop DataEventPublisher because it is used to determine the source of the data with DataSourceManager DataSourceManager.StartListening(); - damProject.Import(damProjectFolder, dataSourceContainer, damNewProjectData.SelectedDikeRingIds, + damProject.Import(damProjectFolder, dataSourceContainer, damNewProjectData.SelectedDikeRingIds[0], damNewProjectData.DamProjectType, null); // Importing data creates a new DamProjectData object so the values set in the dialog have to be reset. damProject.DamProjectData.DamProjectType = projectType; Index: DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs =================================================================== diff -u -r6822 -r6823 --- DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 6822) +++ DamClients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 6823) @@ -30,7 +30,6 @@ using System.Windows.Forms; using Deltares.Dam.Data; using Deltares.Dam.Data.DamEngineIo; -using Deltares.Dam.Data.DataPlugins; using Deltares.Dam.Data.DataPlugins.Configuration; using Deltares.Dam.Data.IO; using Deltares.Dam.Data.License; @@ -1067,7 +1066,7 @@ // ATTENTION: Do not stop DataEventPublisher because it is needed to determine the source of the data with DataSourceManager DataSourceManager.StartListening(); - damProject.Import(damProjectFolder, dataSourceContainer, damNewProjectData.SelectedDikeRingIds, + damProject.Import(damProjectFolder, dataSourceContainer, damNewProjectData.SelectedDikeRingIds[0], damNewProjectData.DamProjectType, progressDelegate); // Importing data creates a new DamProjectData object so the values set in the dialog have to be reset. @@ -1091,13 +1090,8 @@ // Read sensor data if DamLive Configuration project if (damNewProjectData.DamProjectType == DamProjectType.DamLiveConfiguration) { - if (damProject.DamProjectData.WaterBoard.Dikes.Count != 1) - { - throw new DataPluginImporterException(String.Format("DamLive Configuration must have exactly 1 dike; this project has {0} dikes", damProject.DamProjectData.WaterBoard.Dikes.Count)); - } + Dike dike = damProject.DamProjectData.WaterBoard.Dike; - Dike dike = damProject.DamProjectData.WaterBoard.Dikes.First(); - string sensorConfigurationFilename = Path.GetFullPath(damNewProjectData.SensorConfigurationFileName); if (File.Exists(sensorConfigurationFilename)) { Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/LocationTests.cs =================================================================== diff -u -r6669 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/LocationTests.cs (.../LocationTests.cs) (revision 6669) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data.Tests/LocationTests.cs (.../LocationTests.cs) (revision 6823) @@ -62,7 +62,7 @@ }); } } - + [Test] public void CheckNameValuePairGetSet() { Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ProjectLoader.cs =================================================================== diff -u -r6817 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ProjectLoader.cs (.../ProjectLoader.cs) (revision 6817) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.TestHelper/ProjectLoader.cs (.../ProjectLoader.cs) (revision 6823) @@ -79,10 +79,7 @@ } }; - damProject.Import(projectDataFolder, container, new[] - { - "Dike from CSV" - }, DamProjectType.Design, null); + damProject.Import(projectDataFolder, container, "Dike from CSV", DamProjectType.Design, null); return damProject.DamProjectData; } Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Sensors/SensorImportFromExcelSheetTest.cs =================================================================== diff -u -r6750 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Sensors/SensorImportFromExcelSheetTest.cs (.../SensorImportFromExcelSheetTest.cs) (revision 6750) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Sensors/SensorImportFromExcelSheetTest.cs (.../SensorImportFromExcelSheetTest.cs) (revision 6823) @@ -68,13 +68,12 @@ { DataSourceContainer dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); string damImportFolder = Path.GetDirectoryName(definitionFilename); - List importLogMessages; - IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out importLogMessages).ToList(); + string dikeId = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, DamProjectType.DamLiveConfiguration, out _); damProject.DamProjectData.WaterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, dataSourceContainer, - dikeList, DamProjectType.DamLiveConfiguration, null, out List _); + dikeId, DamProjectType.DamLiveConfiguration, null, out List _); damProject.AssignGeometry2DMapnameIfNotAssigned(Path.Combine(damImportFolder, dataSourceContainer.MapSoilProfile2D)); - Dike dike = damProject.DamProjectData.WaterBoard.Dikes.First(); + Dike dike = damProject.DamProjectData.WaterBoard.Dike; Assert.That(dike.Locations.Count, Is.EqualTo(6)); Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamProjectTest.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamProjectTest.cs (.../DamProjectTest.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamProjectTest.cs (.../DamProjectTest.cs) (revision 6823) @@ -62,35 +62,19 @@ public void NewGeometry2DMapnameCorrectIfNewLocation() { var projectFilename = "Delfland.damx"; - var mapName = @"..\..\geometries\"; - string newMapname = DamProject.CreateNewGeometry2DMapname(projectFilename, mapName, 2); - Assert.That(newMapname, Is.EqualTo(@"Delfland.geometries2D.2\")); + string newMapname = DamProject.CreateNewGeometry2DMapname(projectFilename); + Assert.That(newMapname, Is.EqualTo(@"Delfland.geometries2D\")); } [Test] - public void NewGeometry2DMapnameCorrectIfSourceIsTarget() - { - var projectFilename = "Delfland.damx"; - var mapName = @"Delfland.geometries2D.10\"; - string newMapname = DamProject.CreateNewGeometry2DMapname(projectFilename, mapName, 10); - Assert.That(newMapname, Is.EqualTo(@"Delfland.geometries2D.10\")); - } - - [Test] public void CanAssignGeometry2DMapnameIfNotAssigned() { const string mapName1 = @"Test1\"; - const string mapName2 = @"Test2\"; using var damProject = new DamProject(); - damProject.DamProjectData.WaterBoard.Dikes.Add(new Dike()); - damProject.DamProjectData.WaterBoard.Dikes.Add(new Dike - { - MapForSoilGeometries2D = mapName1 - }); - damProject.DamProjectData.WaterBoard.Dikes.Add(new Dike()); - damProject.AssignGeometry2DMapnameIfNotAssigned(mapName2); - Assert.That(damProject.DamProjectData.WaterBoard.Dikes[0].MapForSoilGeometries2D, Is.EqualTo(mapName2)); - Assert.That(damProject.DamProjectData.WaterBoard.Dikes[1].MapForSoilGeometries2D, Is.EqualTo(mapName1)); - Assert.That(damProject.DamProjectData.WaterBoard.Dikes[2].MapForSoilGeometries2D, Is.EqualTo(mapName2)); + damProject.DamProjectData.WaterBoard.Dike = new Dike(); + Assert.That(damProject.DamProjectData.WaterBoard.Dike.MapForSoilGeometries2D, Is.Null); + + damProject.AssignGeometry2DMapnameIfNotAssigned(mapName1); + Assert.That(damProject.DamProjectData.WaterBoard.Dike.MapForSoilGeometries2D, Is.EqualTo(mapName1)); } } \ No newline at end of file Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardPostProcessRelativeProfiles.cs =================================================================== diff -u -r6436 -r6823 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardPostProcessRelativeProfiles.cs (.../WaterBoardPostProcessRelativeProfiles.cs) (revision 6436) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/WaterBoardPostProcessRelativeProfiles.cs (.../WaterBoardPostProcessRelativeProfiles.cs) (revision 6823) @@ -48,95 +48,92 @@ public static void CreateAbsoluteProfiles(WaterBoard waterBoard, CharacteristicPointType characteristicPointType) { const double moveAccuracy = 1e-6; - foreach (Dike dike in waterBoard.Dikes) + foreach (Location location in waterBoard.Dike.Locations) { - foreach (Location location in dike.Locations) + Segment orgSegment = location.Segment; + if (orgSegment != null) { - Segment orgSegment = location.Segment; - if (orgSegment != null) + double topSurfaceline = location.SurfaceLine2.CharacteristicPoints.Geometry.GetMaxZ(); + GeometryPoint characteristicGeometryPoint = location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(characteristicPointType); + var errorFound = false; + var newSegment = new Segment(); + newSegment.Name = $"Segment {orgSegment.Name}-{location.Name}"; + var soilProbabilityIndex = 0; + foreach (SoilGeometryProbability orgSoilGeometryProbability in orgSegment.SoilProfileProbabilities) { - double topSurfaceline = location.SurfaceLine2.CharacteristicPoints.Geometry.GetMaxZ(); - GeometryPoint characteristicGeometryPoint = location.SurfaceLine2.CharacteristicPoints.GetGeometryPoint(characteristicPointType); - var errorFound = false; - var newSegment = new Segment(); - newSegment.Name = $"Segment {orgSegment.Name}-{location.Name}"; - var soilProbabilityIndex = 0; - foreach (SoilGeometryProbability orgSoilGeometryProbability in orgSegment.SoilProfileProbabilities) + soilProbabilityIndex++; + try { - soilProbabilityIndex++; - try + if (characteristicGeometryPoint == null) { - if (characteristicGeometryPoint == null) - { - throw new WaterBoardPostProcessRelativeProfilesException($"Characteristic point {characteristicPointType} is not defined"); - } + throw new WaterBoardPostProcessRelativeProfilesException($"Characteristic point {characteristicPointType} is not defined"); + } - if (orgSoilGeometryProbability.SoilProfileType.Equals(SoilProfileType.SoilProfile2D)) - { - throw new WaterBoardPostProcessRelativeProfilesException("Cannot apply relative profiles for 2d soilprofiles"); - } + if (orgSoilGeometryProbability.SoilProfileType.Equals(SoilProfileType.SoilProfile2D)) + { + throw new WaterBoardPostProcessRelativeProfilesException("Cannot apply relative profiles for 2d soilprofiles"); + } - // Create a copy of the original SoilGeometryProbability - var newSoilGeometryProbability = new SoilGeometryProbability(); - newSoilGeometryProbability.Assign(orgSoilGeometryProbability); + // Create a copy of the original SoilGeometryProbability + var newSoilGeometryProbability = new SoilGeometryProbability(); + newSoilGeometryProbability.Assign(orgSoilGeometryProbability); - // Move all layer boundaries so toplevel of the soilprofile1D will be at level of specified characteristic point - // Dependent if deltaZ is positive or negative, the bottomLevel should be adjusted before or after adjusting the layers - // This is necessary, because the bottomlevel is adjusted automatically during adjustment of layers - SoilProfile1D soilProfile1D = newSoilGeometryProbability.SoilProfile; - soilProfile1D.Name = $"{orgSoilGeometryProbability.SoilProfile.Name}-{location.Name}-{soilProbabilityIndex}"; - double deltaZ = characteristicGeometryPoint.Z - soilProfile1D.TopLevel; - if (deltaZ < 0) - { - soilProfile1D.BottomLevel += deltaZ; - } + // Move all layer boundaries so toplevel of the soilprofile1D will be at level of specified characteristic point + // Dependent if deltaZ is positive or negative, the bottomLevel should be adjusted before or after adjusting the layers + // This is necessary, because the bottomlevel is adjusted automatically during adjustment of layers + SoilProfile1D soilProfile1D = newSoilGeometryProbability.SoilProfile; + soilProfile1D.Name = $"{orgSoilGeometryProbability.SoilProfile.Name}-{location.Name}-{soilProbabilityIndex}"; + double deltaZ = characteristicGeometryPoint.Z - soilProfile1D.TopLevel; + if (deltaZ < 0) + { + soilProfile1D.BottomLevel += deltaZ; + } - foreach (SoilLayer1D soilLayer1D in soilProfile1D.Layers) - { - soilLayer1D.TopLevel += deltaZ; - } + foreach (SoilLayer1D soilLayer1D in soilProfile1D.Layers) + { + soilLayer1D.TopLevel += deltaZ; + } - if (deltaZ > 0) - { - soilProfile1D.BottomLevel += deltaZ; - } + if (deltaZ > 0) + { + soilProfile1D.BottomLevel += deltaZ; + } - double profileTopLevel = soilProfile1D.TopLevel; - // If the top of the profile is moved below the top of the surface level, a gap appears which will be filled in later in the UI - // to the combined 2D. However, for Piping calculation the 1D profile itself needs to start at least at the top of the surface line - // too in order to perform a correct calculation. So extend the 1D profile here too! - if (Math.Abs(deltaZ) > moveAccuracy && profileTopLevel < topSurfaceline) + double profileTopLevel = soilProfile1D.TopLevel; + // If the top of the profile is moved below the top of the surface level, a gap appears which will be filled in later in the UI + // to the combined 2D. However, for Piping calculation the 1D profile itself needs to start at least at the top of the surface line + // too in order to perform a correct calculation. So extend the 1D profile here too! + if (Math.Abs(deltaZ) > moveAccuracy && profileTopLevel < topSurfaceline) + { + var newTopLayer = new SoilLayer1D { - var newTopLayer = new SoilLayer1D - { - SoilProfile = soilProfile1D, - MaintainLayerOrder = true, - TopLevel = topSurfaceline, - IsAquifer = false, - Soil = dike.SoilList.GetSoilByName(location.DikeEmbankmentMaterial) - }; - soilProfile1D.Layers.Insert(0, newTopLayer); - } - - // Add new SoilGeometryProbability to new segment and assign new segment to location - newSegment.SoilProfileProbabilities.Add(newSoilGeometryProbability); - // Add new soil profile to existing list. - dike.SoilProfiles.Add(soilProfile1D); + SoilProfile = soilProfile1D, + MaintainLayerOrder = true, + TopLevel = topSurfaceline, + IsAquifer = false, + Soil = waterBoard.Dike.SoilList.GetSoilByName(location.DikeEmbankmentMaterial) + }; + soilProfile1D.Layers.Insert(0, newTopLayer); } - catch (Exception e) - { - errorFound = true; - LogManager.Messages.Add(new LogMessage(LogMessageType.Error, location, - $"Error in location '{location.Name}' applying relative height for soilprofile '{orgSoilGeometryProbability.SoilGeometryName}': {e.Message} ")); - } - } - if (!errorFound) + // Add new SoilGeometryProbability to new segment and assign new segment to location + newSegment.SoilProfileProbabilities.Add(newSoilGeometryProbability); + // Add new soil profile to existing list. + waterBoard.Dike.SoilProfiles.Add(soilProfile1D); + } + catch (Exception e) { - location.Segment = newSegment; - waterBoard.Segments.Add(newSegment); + errorFound = true; + LogManager.Messages.Add(new LogMessage(LogMessageType.Error, location, + $"Error in location '{location.Name}' applying relative height for soilprofile '{orgSoilGeometryProbability.SoilGeometryName}': {e.Message} ")); } } + + if (!errorFound) + { + location.Segment = newSegment; + waterBoard.Segments.Add(newSegment); + } } } }