Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs =================================================================== diff -u -r4175 -r4178 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 4175) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/WaterBoardImporterTests.cs (.../WaterBoardImporterTests.cs) (revision 4178) @@ -37,7 +37,6 @@ public class WaterBoardImporterTests { private const string directoryWithCsvFiles = @"..\..\..\..\..\data\Dam\Waterboards\Groot Salland\Binnenwaarts"; - private List srcDataSources; private DataPluginImporter dataPluginImporter; private DataSourceContainer dataSourceContainer; @@ -322,8 +321,8 @@ } private void SetupForCsvFilesImport() - { - srcDataSources = new List + { + var srcDataSources = new List { new() { Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoilProfiles.cs =================================================================== diff -u -r4070 -r4178 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoilProfiles.cs (.../CsvImporterSoilProfiles.cs) (revision 4070) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoilProfiles.cs (.../CsvImporterSoilProfiles.cs) (revision 4178) @@ -25,6 +25,7 @@ using System.IO; using System.Linq; using System.Threading; +using Deltares.Dam.Data.Importers; using Deltares.Standard.IO; using Deltares.Standard.Language; using LumenWorks.Framework.IO.Csv; @@ -45,16 +46,16 @@ ThrowHelper.ThrowIfStringArgumentNullOrEmpty(fileName, StringResourceNames.CsvFileNotValid); ThrowHelper.ThrowIfFileNotExist(fileName, StringResourceNames.CsvFileNotFound); - CultureInfo oldcur = Thread.CurrentThread.CurrentCulture; + CultureInfo oldCultureInfo = Thread.CurrentThread.CurrentCulture; try { Thread.CurrentThread.CurrentCulture = CsvReaderUtilities.DetermineCultureForFile(fileName); using (var csv = new CsvReader(new StreamReader(fileName), true, ';')) { string[] headers = CsvImporterHelper.GetFieldHeaders(this, csv); // The definition of the csv contains one extra column (soiltype) which is now obsolete. - // So number of columns may be 3 or 4. - if ((headers.Count() < 3) || (headers.Count() > 4)) + // So number of columns may be 4 or 5. + if ((headers.Length < 3) || (headers.Length > 5)) { string csvHeaderError = LocalizationManager.GetTranslatedText(GetType(), "csvHeaderError"); throw new CsvImporterSoilProfilesException($"{fileName} : {csvHeaderError}"); @@ -71,6 +72,9 @@ const string fieldsoil_name = "soil_name"; int colIndexSoilName = CsvReaderUtilities.GetHeaderIndexByString(headers, fieldsoil_name); CheckColumn(colIndexSoilName, fileName, fieldsoil_name); + + int colIndexIsAquifer = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.IsAquiferColumnName); + var index = 1; while (csv.ReadNextRecord()) { @@ -80,12 +84,22 @@ { soilProfile.SoilProfileRecordId = index; index++; + + // Required columns colIndex = colIndexSoilProfileId; soilProfile.SoilProfileId = csv[colIndexSoilProfileId]; colIndex = colIndexTopLevel; soilProfile.TopLevel = Convert.ToDouble(csv[colIndexTopLevel]); colIndex = colIndexSoilName; soilProfile.SoilName = csv[colIndexSoilName]; + + // Optional columns + if (colIndexIsAquifer > -1) + { + colIndex = colIndexIsAquifer; + soilProfile.IsAquifer = Convert.ToBoolean(csv[colIndex]); + } + ImportedItems.Add(soilProfile); } catch (Exception e) @@ -98,7 +112,7 @@ } finally { - Thread.CurrentThread.CurrentCulture = oldcur; + Thread.CurrentThread.CurrentCulture = oldCultureInfo; } } @@ -121,5 +135,6 @@ public string SoilProfileId { get; set; } public double TopLevel { get; set; } public string SoilName { get; set; } + public bool IsAquifer { get; set; } = false; } } \ No newline at end of file Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Importers/CsvColumnNames.cs =================================================================== diff -u -r4143 -r4178 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Importers/CsvColumnNames.cs (.../CsvColumnNames.cs) (revision 4143) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Importers/CsvColumnNames.cs (.../CsvColumnNames.cs) (revision 4178) @@ -444,4 +444,9 @@ /// pop /// public const string PopColumnName = "pop"; + + /// + /// is_aquifer + /// + public const string IsAquiferColumnName = "is_aquifer"; } \ No newline at end of file Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs =================================================================== diff -u -r4168 -r4178 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 4168) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 4178) @@ -180,14 +180,17 @@ Assert.AreEqual("1DP1", soilProfileRecords[0].SoilProfileId); Assert.AreEqual(10, soilProfileRecords[0].TopLevel); Assert.AreEqual("HW-OBO", soilProfileRecords[0].SoilName); + Assert.That(soilProfileRecords[0].IsAquifer, Is.False); Assert.AreEqual("1DP1", soilProfileRecords[1].SoilProfileId); Assert.AreEqual(-0.6, soilProfileRecords[1].TopLevel); Assert.AreEqual("HW-DUN", soilProfileRecords[1].SoilName); + Assert.That(soilProfileRecords[1].IsAquifer, Is.False); Assert.AreEqual("1DP2", soilProfileRecords[11].SoilProfileId); Assert.AreEqual(-5.3, soilProfileRecords[11].TopLevel); Assert.AreEqual("Alg-zand (0-30)", soilProfileRecords[11].SoilName); + Assert.That(soilProfileRecords[11].IsAquifer, Is.True); } [Test] @@ -892,19 +895,19 @@ private static void CreateSoilProfilesFile(string filePath) { using StreamWriter writer = File.CreateText(filePath); - writer.WriteLine("soilprofile_id;top_level;soil_name"); - writer.WriteLine("1DP1;10;HW-OBO"); - writer.WriteLine("1DP1;-0.6;HW-DUN"); - writer.WriteLine("1DP1;-1.8;HW-DUOzand"); - writer.WriteLine("1DP1;-2.8;HW-HVN"); - writer.WriteLine("1DP1;-4;HW-HVN"); - writer.WriteLine("1DP1;-5;Alg-zand (0-30)"); - writer.WriteLine("1DP2;10;HW-OBO"); - writer.WriteLine("1DP2;-0.7;HW-DUN"); - writer.WriteLine("1DP2;-1.5;HW-DUOzand"); - writer.WriteLine("1DP2;-2.4;HW-HVN"); - writer.WriteLine("1DP2;-4.3;HW-HVN"); - writer.WriteLine("1DP2;-5.3;Alg-zand (0-30)"); + writer.WriteLine("soilprofile_id;top_level;soil_name;is_aquifer"); + writer.WriteLine("1DP1;10;HW-OBO;False"); + writer.WriteLine("1DP1;-0.6;HW-DUN;False"); + writer.WriteLine("1DP1;-1.8;HW-DUOzand;True"); + writer.WriteLine("1DP1;-2.8;HW-HVN;False"); + writer.WriteLine("1DP1;-4;HW-HVN;False"); + writer.WriteLine("1DP1;-5;Alg-zand (0-30);True"); + writer.WriteLine("1DP2;10;HW-OBO;False"); + writer.WriteLine("1DP2;-0.7;HW-DUN;False"); + writer.WriteLine("1DP2;-1.5;HW-DUOzand;True"); + writer.WriteLine("1DP2;-2.4;HW-HVN;False"); + writer.WriteLine("1DP2;-4.3;HW-HVN;False"); + writer.WriteLine("1DP2;-5.3;Alg-zand (0-30);True"); } private static void CreateFullSoilsFile(string filePath) Index: DamClients/DamUI/trunk/data/Dam/Waterboards/Groot Salland/Binnenwaarts/soilprofiles.csv =================================================================== diff -u -r875 -r4178 --- DamClients/DamUI/trunk/data/Dam/Waterboards/Groot Salland/Binnenwaarts/soilprofiles.csv (.../soilprofiles.csv) (revision 875) +++ DamClients/DamUI/trunk/data/Dam/Waterboards/Groot Salland/Binnenwaarts/soilprofiles.csv (.../soilprofiles.csv) (revision 4178) @@ -1,61 +1,61 @@ -soilprofile_id;top_level;soil_name;soiltype -10Y_005_STBI_p;60;klei antropogeen;klei -10Y_005_STBI_p;0.63;klei;zand -10Y_005_STBI_p;-1.2;veen;veen -10Y_005_STBI_p;-3.5;WL_zand;zand -10Y_024_STBI_p;60;veen;veen -10Y_024_STBI_p;-4.5;WL_zand;zand -10Y_041_STBI_p;60;veen;veen -10Y_041_STBI_p;-1.5;WL_zand;zand -10Y_054_STBI_p;60;veen;veen -10Y_054_STBI_p;-2;WL_zand;zand -10Y_066_STBI_p;60;klei;klei -10Y_066_STBI_p;-1.5;veen;veen -10Y_066_STBI_p;-4;WL_zand;zand -10Y_090_STBI_p;60;Klei, atropogeen;klei -10Y_090_STBI_p;-1.5;WL_zand;zand -10Y_102_STBI_p;60;veen;veen -10Y_102_STBI_p;-2;WL_zand;zand -10Y_117_STBI_p;60;veen;veen -10Y_117_STBI_p;-4.17;WL_zand;zand -10Y_130_STBI_p;60;klei;klei -10Y_130_STBI_p;-1.14;veen;veen -10Y_130_STBI_p;-4.8;WL_zand;zand -10Y_149_STBI_p;60;klei;klei -10Y_149_STBI_p;-3.2;veen;veen -10Y_149_STBI_p;-5;WL_zand;zand -10Z_157_STBI_p;60;klei duinkerke;klei -10Z_157_STBI_p;-2;veen Holland (naast);veen -10Z_157_STBI_p;-4;WL_zand;zand -10Z_165_STBI_p;60;veen Holland (naast);veen -10Z_165_STBI_p;-2.8;WL_zand;zand -10Z_181_STBI_p;60;klei duinkerke;klei -10Z_181_STBI_p;-2.1;veen Holland (naast);veen -10Z_181_STBI_p;-3.8;WL_zand;zand -10Z_186_STBI_p;60;veen Holland (naast);veen -10Z_186_STBI_p;-4.2;WL_zand;zand -10Z_199_STBI_p;60;veen Holland (naast);veen -10Z_199_STBI_p;-4.5;WL_zand;zand -10Z_228_STBI_p;60;klei duinkerke;klei -10Z_228_STBI_p;-1.1;veen holland (naast);veen -10Z_228_STBI_p;-4;WL_zand;zand -10Z_258_STBI_p;60;veen holland (naast);veen -10Z_258_STBI_p;-3.7;WL_zand;zand -10Z_275_STBI_p;60;klei duin;klei -10Z_275_STBI_p;-2.2;veen naast;veen -10Z_275_STBI_p;-4.4;WL_zand;zand -10Z_282_STBI_p;60;klei duinkerke;klei -10Z_282_STBI_p;-2;veen naast;veen -10Z_282_STBI_p;-4;WL_zand;zand -10Z_380_STBI_p;60;hollandveen (hvn);veen -10Z_380_STBI_p;-2.5;WL_zand;zand -10Z_390_STBI_p;60;hollandveen (hvn);veen -10Z_390_STBI_p;-1.88;WL_zand;zand -10Z_400_STBI_p;60;hollandveen (hvn);veen -10Z_400_STBI_p;-0.9;hollandveen (hvn);veen -10Z_400_STBI_p;-2;WL_zand;zand -10Z_421_STBI_p;60;WL_zand;zand -10Z_432_STBI_p;60;WL_zand;zand -10Z_460_STBI_p;60;WL_zand;zand -10Z_475_STBI_p;60;hollandveen (hvn);veen -10Z_475_STBI_p;-1.2;WL_zand;zand +soilprofile_id;top_level;soil_name;soiltype;is_aquifer +10Y_005_STBI_p;60;klei antropogeen;klei;False +10Y_005_STBI_p;0.63;klei;zand;False +10Y_005_STBI_p;-1.2;veen;veen;False +10Y_005_STBI_p;-3.5;WL_zand;zand;True +10Y_024_STBI_p;60;veen;veen;False +10Y_024_STBI_p;-4.5;WL_zand;zand;True +10Y_041_STBI_p;60;veen;veen;False +10Y_041_STBI_p;-1.5;WL_zand;zand;True +10Y_054_STBI_p;60;veen;veen;False +10Y_054_STBI_p;-2;WL_zand;zand;True +10Y_066_STBI_p;60;klei;klei;False +10Y_066_STBI_p;-1.5;veen;veen;False +10Y_066_STBI_p;-4;WL_zand;zand;True +10Y_090_STBI_p;60;Klei, atropogeen;klei;False +10Y_090_STBI_p;-1.5;WL_zand;zand;True +10Y_102_STBI_p;60;veen;veen;False +10Y_102_STBI_p;-2;WL_zand;zand;True +10Y_117_STBI_p;60;veen;veen;False +10Y_117_STBI_p;-4.17;WL_zand;zand;True +10Y_130_STBI_p;60;klei;klei;False +10Y_130_STBI_p;-1.14;veen;veen;False +10Y_130_STBI_p;-4.8;WL_zand;zand;True +10Y_149_STBI_p;60;klei;klei;False +10Y_149_STBI_p;-3.2;veen;veen;False +10Y_149_STBI_p;-5;WL_zand;zand;True +10Z_157_STBI_p;60;klei duinkerke;klei;False +10Z_157_STBI_p;-2;veen Holland (naast);veen;False +10Z_157_STBI_p;-4;WL_zand;zand;True +10Z_165_STBI_p;60;veen Holland (naast);veen;False +10Z_165_STBI_p;-2.8;WL_zand;zand;True +10Z_181_STBI_p;60;klei duinkerke;klei;False +10Z_181_STBI_p;-2.1;veen Holland (naast);veen;False +10Z_181_STBI_p;-3.8;WL_zand;zand;True +10Z_186_STBI_p;60;veen Holland (naast);veen;False +10Z_186_STBI_p;-4.2;WL_zand;zand;True +10Z_199_STBI_p;60;veen Holland (naast);veen;False +10Z_199_STBI_p;-4.5;WL_zand;zand;True +10Z_228_STBI_p;60;klei duinkerke;klei;False +10Z_228_STBI_p;-1.1;veen holland (naast);veen;False +10Z_228_STBI_p;-4;WL_zand;zand;True +10Z_258_STBI_p;60;veen holland (naast);veen;False +10Z_258_STBI_p;-3.7;WL_zand;zand;True +10Z_275_STBI_p;60;klei duin;klei;False +10Z_275_STBI_p;-2.2;veen naast;veen;False +10Z_275_STBI_p;-4.4;WL_zand;zand;True +10Z_282_STBI_p;60;klei duinkerke;klei;False +10Z_282_STBI_p;-2;veen naast;veen;False +10Z_282_STBI_p;-4;WL_zand;zand;True +10Z_380_STBI_p;60;hollandveen (hvn);veen;False +10Z_380_STBI_p;-2.5;WL_zand;zand;True +10Z_390_STBI_p;60;hollandveen (hvn);veen;False +10Z_390_STBI_p;-1.88;WL_zand;zand;True +10Z_400_STBI_p;60;hollandveen (hvn);veen;False +10Z_400_STBI_p;-0.9;hollandveen (hvn);veen;False +10Z_400_STBI_p;-2;WL_zand;zand;True +10Z_421_STBI_p;60;WL_zand;zand;True +10Z_432_STBI_p;60;WL_zand;zand;True +10Z_460_STBI_p;60;WL_zand;zand;True +10Z_475_STBI_p;60;hollandveen (hvn);veen;False +10Z_475_STBI_p;-1.2;WL_zand;zand;True