Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj =================================================================== diff -u -r4549 -r4568 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4549) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 4568) @@ -1215,6 +1215,72 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml =================================================================== diff -u -r4544 -r4568 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 4544) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 4568) @@ -730,6 +730,12 @@ + + Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs =================================================================== diff -u -r4555 -r4568 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4555) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Dike.cs (.../Dike.cs) (revision 4568) @@ -234,14 +234,8 @@ if (soilRecord.ShearStrengthModel == Geotechnics.Soils.ShearStrengthModel.StressTable) { StressCurve stressCurve = ImportedCsvStressCurves.Find(sc => sc.Name == soilRecord.SigmaTauCurveName); - if (stressCurve != null) - { - soil.StressTable = stressCurve; - } - else - { - throw new DikeException($"The sigma tau curve '{soilRecord.SigmaTauCurveName}' for soil '{soilRecord.SoilName}' is not found in the csv file."); - } + soil.StressTable = stressCurve; + // Note: if the stress curve is null, the soil will be removed from the soil list in TryToMakeSoilDataConsistent() } if (soilRecord.StrengthIncreaseExponent.HasValue) @@ -300,8 +294,14 @@ /// The soils as imported from the csv file public IEnumerable MakeDataConsistent(List importedCsvSoils) { - List errorSoils = TryToMakeSoilDataConsistent(importedCsvSoils); + List soilErrorMessages; var logMessages = new List(); + List errorSoils = TryToMakeSoilDataConsistent(importedCsvSoils, out soilErrorMessages); + for (var i = 0; i < soilErrorMessages.Count; i++) + { + logMessages.Add(new LogMessage(LogMessageType.Warning, this, soilErrorMessages[i])); + } + // Delete all locations without surfaceline logMessages.AddRange(DeleteLocationsWithoutSurfaceLines()); // Delete all locations that have profiles (in their segment) which hold soils @@ -396,17 +396,19 @@ /// /// The soils as imported from the csv file /// - private List TryToMakeSoilDataConsistent(List importedCsvSoils) + private List TryToMakeSoilDataConsistent(List importedCsvSoils, out List soilErrorMessages) { + soilErrorMessages = new List(); var errorSoils = new List(); // Fill the list of errorSoils with soils that are in the current soillist (as result of importing - // 1D profiles) but that are not found in the soil database because that are errors + // 1D profiles) but that are not found in the soil database because there are errors foreach (Soil soil in soilList.Soils) { Soil fs = importedCsvSoils.Find(t => string.Equals(t.Name, soil.Name, StringComparison.CurrentCultureIgnoreCase)); if (fs == null) { errorSoils.Add(soil); + soilErrorMessages.Add(string.Format(LocalizationManager.GetTranslatedText(GetType(), "SoilNotFoundInCsvFile"), soil.Name)); } } @@ -420,6 +422,13 @@ // that are in the database but not yet in the soil list. foreach (Soil soil in importedCsvSoils) { + if ((soil.ShearStrengthModel == Geotechnics.Soils.ShearStrengthModel.StressTable) && (soil.StressTable == null)) + { + soilList.Soils.Remove(soil); + errorSoils.Add(soil); + soilErrorMessages.Add(string.Format(LocalizationManager.GetTranslatedText(GetType(), "SigmaTauCurveNotFoundInCsvFile"), soil.Name)); + } + Soil existingSoil = soilList.GetSoilByName(soil.Name); if (existingSoil == null) { Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs =================================================================== diff -u -r4554 -r4568 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 4554) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 4568) @@ -110,7 +110,7 @@ // Check locations Assert.AreEqual(13, dike.Locations.Count); Location location = dike.Locations.First(x => x.Name.Equals(locationId)); -// Assert.AreEqual(0.25, location.MinimalCircleDepth, cTolerance); // is default from modelparameters +// Assert.AreEqual(0.25, location.MinimalCircleDepth, cTolerance); // is default from modelparameters Assert.AreEqual("segment_dijkring10_dwp04_1", location.Segment.Name); Assert.AreEqual("dijkring10_dwp04_1", location.SurfaceLine2.Name); @@ -171,6 +171,31 @@ [Test] [Category("Slow")] + public void ImportWaterBoardCsvFiles1DMissingSigmaTauCurve() + { + const string definitionFilename = @".\TestData\CSVData\Full1DProjectMissingSigmaTauTable\Import.defx"; + + dataSourceContainer = DataSourceContainer.Deserialize(definitionFilename); + string damImportFolder = Path.GetDirectoryName(definitionFilename); + List logMessages; + IList dikeList = WaterBoardImporter.ImportDikeRingIds(damImportFolder, dataSourceContainer, + DamProjectType.Calamity, out _).ToList(); + using WaterBoard waterBoard = WaterBoardImporter.ImportDataForDikeRings("", damImportFolder, + dataSourceContainer, dikeList, + DamProjectType.Calamity, null, + out logMessages); + + Assert.That(logMessages.Count, Is.GreaterThan(0)); + Assert.That(logMessages[0].Message, Contains.Substring("Sigma-Tau curve table not found in CSV file for Soil CCC.")); + + // Check Dike + Assert.That(waterBoard.Dikes.Count, Is.EqualTo(1)); + //Check locations + Assert.That(waterBoard.Dikes[0].Locations.Count, Is.EqualTo(0)); + } + + [Test] + [Category("Slow")] public void ImportWaterBoardOnlyCsvFiles2D() { const string definitionFilename = @".\TestData\CSVData\Full2DProject\Import.defx";