Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTest.cs
===================================================================
diff -u -r4146 -r4157
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTest.cs (.../CsvImporterTest.cs) (revision 4146)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTest.cs (.../CsvImporterTest.cs) (revision 4157)
@@ -26,294 +26,293 @@
using Deltares.Standard.Logging;
using NUnit.Framework;
-namespace Deltares.Dam.Tests
+namespace Deltares.Dam.Tests;
+
+[TestFixture]
+public class CsvImporterTest
{
- [TestFixture]
- public class CsvImporterTest
+ private string dataFolder;
+ private string importFolder;
+
+ ///
+ /// Setup for whole testfixture
+ ///
+ [SetUp]
+ public void FixtureSetup()
{
- private string dataFolder;
- private string importFolder;
+ dataFolder = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\");
+ importFolder = Path.Combine(Directory.GetCurrentDirectory(), "TmpImportFiles");
+ Directory.CreateDirectory(importFolder);
+ }
- ///
- /// Setup for whole testfixture
- ///
- [SetUp]
- public void FixtureSetup()
+ [TearDown]
+ public void FixtureTearDown()
+ {
+ if (Directory.Exists(importFolder))
{
- dataFolder = Path.Combine(Directory.GetCurrentDirectory(), @"TestData\");
- importFolder = Path.Combine(Directory.GetCurrentDirectory(), "TmpImportFiles");
- Directory.CreateDirectory(importFolder);
+ Directory.Delete(importFolder, true);
}
+ }
- [TearDown]
- public void FixtureTearDown()
+ ///
+ /// Setup for single test
+ ///
+ [SetUp]
+ public void Setup()
+ {
+ if (Directory.Exists(importFolder))
{
- if (Directory.Exists(importFolder))
- {
- Directory.Delete(importFolder, true);
- }
+ Directory.Delete(importFolder, true);
}
- ///
- /// Setup for single test
- ///
- [SetUp]
- public void Setup()
- {
- if (Directory.Exists(importFolder))
- {
- Directory.Delete(importFolder, true);
- }
+ Directory.CreateDirectory(importFolder);
- Directory.CreateDirectory(importFolder);
+ File.Copy(Path.Combine(dataFolder, @"HoekscheWaardCsv\soilmaterials.mdb"), Path.Combine(importFolder, "soilmaterials.mdb"));
- File.Copy(Path.Combine(dataFolder, @"HoekscheWaardCsv\soilmaterials.mdb"), Path.Combine(importFolder, "soilmaterials.mdb"));
+ CreateCharacteristicPointsFile();
+ CreateLocationsFile();
+ CreateSegmentsFor1DProfilesFile();
+ CreateSurfaceLinesFiles();
+ CreateSoilProfilesFile();
+ CreateScenarios();
+ CreateSoilsFile();
+ }
- CreateCharacteristicPointsFile();
- CreateLocationsFile();
- CreateSegmentsFor1DProfilesFile();
- CreateSurfaceLinesFiles();
- CreateSoilProfilesFile();
- CreateScenarios();
- CreateSoilsFile();
- }
+ ///
+ /// Test
+ ///
+ [Test]
+ public void CvsImporter_ImportFromNonExistingDirectory_AddsMessageWithFatalErrorType()
+ {
+ ImportDirector.Construct("C:\\SomeNoneExistingDirectory", null);
+ Assert.AreEqual(1, LogManager.Messages.Count);
+ Assert.AreEqual(LogMessageType.FatalError, LogManager.Messages[0].MessageType);
+ }
- ///
- /// Test
- ///
- [Test]
- public void CvsImporter_ImportFromNonExistingDirectory_AddsMessageWithFatalErrorType()
+ ///
+ /// Test
+ ///
+ [Test]
+ public void CvsImporter_ImportWithIncompleteLocationTable_AddsMessageWithWarning()
+ {
+ File.Delete(importFolder + "\\locations.csv");
+ using (StreamWriter writer = File.CreateText(importFolder + "\\locations.csv"))
{
- ImportDirector.Construct("C:\\SomeNoneExistingDirectory", null);
- Assert.AreEqual(1, LogManager.Messages.Count);
- Assert.AreEqual(LogMessageType.FatalError, LogManager.Messages[0].MessageType);
+ writer.WriteLine("location_id;surfaceline_id;segment_id;geo_x;geo_y;polderlevel;head_pl2;head_pl3;grass_quality;direction");
+ writer.WriteLine("LOC1;D1;ok;414.950;91.850;0.1;4.0;3.0;4.3;1.0");
}
- ///
- /// Test
- ///
- [Test]
- public void CvsImporter_ImportWithIncompleteLocationTable_AddsMessageWithWarning()
- {
- File.Delete(importFolder + "\\locations.csv");
- using (StreamWriter writer = File.CreateText(importFolder + "\\locations.csv"))
- {
- writer.WriteLine("location_id;surfaceline_id;segment_id;geo_x;geo_y;polderlevel;head_pl2;head_pl3;grass_quality;direction");
- writer.WriteLine("LOC1;D1;ok;414.950;91.850;0.1;4.0;3.0;4.3;1.0");
- }
+ ImportDirector.Construct(importFolder, null);
+ Assert.AreEqual(LogMessageType.Warning, LogManager.Messages[0].MessageType);
+ }
- ImportDirector.Construct(importFolder, null);
- Assert.AreEqual(LogMessageType.Warning, LogManager.Messages[0].MessageType);
+ ///
+ /// Test
+ ///
+ [Test]
+ public void CanImportDikeWith2DSoilGeometries()
+ {
+ File.Delete(importFolder + "\\segments.csv");
+ File.Delete(importFolder + "\\soilprofiles.csv");
+ using (StreamWriter writer = File.CreateText(importFolder + "\\segments.csv"))
+ {
+ writer.WriteLine("segment_id;soilgeometry2D_name;probability;calculation_type");
+ writer.WriteLine("1;Geometrie 1;80;Stability");
+ writer.WriteLine("1;Geometrie 2;20;Stability");
+ writer.WriteLine("1;Geometrie 1 piping;100;Piping");
+ writer.WriteLine("2;Geometrie 2;100;Stability");
+ writer.WriteLine("2;Geometrie 1 piping;100;Piping");
}
- ///
- /// Test
- ///
- [Test]
- public void CanImportDikeWith2DSoilGeometries()
+ using (WaterBoard waterBoard = ImportDirector.Construct(importFolder, null))
{
- File.Delete(importFolder + "\\segments.csv");
- File.Delete(importFolder + "\\soilprofiles.csv");
- using (StreamWriter writer = File.CreateText(importFolder + "\\segments.csv"))
- {
- writer.WriteLine("segment_id;soilgeometry2D_name;probability;calculation_type");
- writer.WriteLine("1;Geometrie 1;80;Stability");
- writer.WriteLine("1;Geometrie 2;20;Stability");
- writer.WriteLine("1;Geometrie 1 piping;100;Piping");
- writer.WriteLine("2;Geometrie 2;100;Stability");
- writer.WriteLine("2;Geometrie 1 piping;100;Piping");
- }
-
- using (WaterBoard waterBoard = ImportDirector.Construct(importFolder, null))
- {
- Assert.AreEqual(2, waterBoard.Segments.Count);
- Assert.AreEqual("Geometrie 1", waterBoard.Segments[0].GetMostProbableGeometry2DName(FailureMechanismSystemType.StabilityInside));
- Assert.AreEqual("Geometrie 1 piping", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.Piping));
- Assert.AreEqual("Geometrie 2", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.StabilityInside));
- Assert.AreEqual("Geometrie 1 piping", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.Piping));
- }
+ Assert.AreEqual(2, waterBoard.Segments.Count);
+ Assert.AreEqual("Geometrie 1", waterBoard.Segments[0].GetMostProbableGeometry2DName(FailureMechanismSystemType.StabilityInside));
+ Assert.AreEqual("Geometrie 1 piping", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.Piping));
+ Assert.AreEqual("Geometrie 2", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.StabilityInside));
+ Assert.AreEqual("Geometrie 1 piping", waterBoard.Segments[1].GetMostProbableGeometry2DName(FailureMechanismSystemType.Piping));
}
+ }
- ///
- /// Test
- ///
- [Test]
- public void CanImportDikeWith1DSoilGeometries()
+ ///
+ /// Test
+ ///
+ [Test]
+ public void CanImportDikeWith1DSoilGeometries()
+ {
+ using (WaterBoard waterBoard = ImportDirector.Construct(importFolder, null))
{
- using (WaterBoard waterBoard = ImportDirector.Construct(importFolder, null))
- {
- Dike dike = waterBoard.Dikes[0];
+ Dike dike = waterBoard.Dikes[0];
- Assert.IsNotNull(dike);
+ Assert.IsNotNull(dike);
- Assert.AreEqual(2, dike.SoilProfiles.Count, "SoilProfiles.Count");
+ Assert.AreEqual(2, dike.SoilProfiles.Count, "SoilProfiles.Count");
- Assert.AreEqual(2, waterBoard.Segments.Count, "Segments.Count");
+ Assert.AreEqual(2, waterBoard.Segments.Count, "Segments.Count");
- Assert.AreEqual(1, dike.SurfaceLines2.Count, "SurfaceLines.Count");
+ Assert.AreEqual(1, dike.SurfaceLines2.Count, "SurfaceLines.Count");
- Assert.AreEqual(1, dike.Locations.Count);
- Assert.AreEqual("LOC1", dike.Locations[0].Name);
- Assert.AreEqual("D1", dike.Locations[0].SurfaceLine2.Name);
- Assert.AreEqual("1", dike.Locations[0].Segment.Name);
- Assert.AreEqual(414.950, dike.Locations[0].XRd);
- Assert.AreEqual(91.850, dike.Locations[0].YRd);
- Assert.AreEqual(14.0, dike.Locations[0].XSoilGeometry2DOrigin);
- Assert.AreEqual("ophoogmateriaaldijk", dike.Locations[0].DikeEmbankmentMaterial);
- Assert.AreEqual("ophoogmateriaalberm", dike.Locations[0].ShoulderEmbankmentMaterial);
- Assert.AreEqual(0.31, dike.Locations[0].DampingFactorPL3);
- Assert.AreEqual(0.41, dike.Locations[0].DampingFactorPL4);
- Assert.AreEqual(13, dike.SurfaceLines2[0].CharacteristicPoints.Count(cp => cp.CharacteristicPointType != CharacteristicPointType.None));
- Assert.IsNotNull(dike.SurfaceLines2[0].CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide));
- }
+ Assert.AreEqual(1, dike.Locations.Count);
+ Assert.AreEqual("LOC1", dike.Locations[0].Name);
+ Assert.AreEqual("D1", dike.Locations[0].SurfaceLine2.Name);
+ Assert.AreEqual("1", dike.Locations[0].Segment.Name);
+ Assert.AreEqual(414.950, dike.Locations[0].XRd);
+ Assert.AreEqual(91.850, dike.Locations[0].YRd);
+ Assert.AreEqual(14.0, dike.Locations[0].XSoilGeometry2DOrigin);
+ Assert.AreEqual("ophoogmateriaaldijk", dike.Locations[0].DikeEmbankmentMaterial);
+ Assert.AreEqual("ophoogmateriaalberm", dike.Locations[0].ShoulderEmbankmentMaterial);
+ Assert.AreEqual(0.31, dike.Locations[0].DampingFactorPL3);
+ Assert.AreEqual(0.41, dike.Locations[0].DampingFactorPL4);
+ Assert.AreEqual(13, dike.SurfaceLines2[0].CharacteristicPoints.Count(cp => cp.CharacteristicPointType != CharacteristicPointType.None));
+ Assert.IsNotNull(dike.SurfaceLines2[0].CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide));
}
+ }
- ///
- /// Test
- ///
- [Test]
- public void SoilProfilesOfImportedDikeHaveSameInstance()
- {
- WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
- Dike dike = waterBoard.Dikes[0];
- Assert.AreSame(dike.SoilProfiles[0], waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.StabilityInside));
- }
+ ///
+ /// Test
+ ///
+ [Test]
+ public void SoilProfilesOfImportedDikeHaveSameInstance()
+ {
+ WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
+ Dike dike = waterBoard.Dikes[0];
+ Assert.AreSame(dike.SoilProfiles[0], waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.StabilityInside));
+ }
- ///
- /// Test
- ///
- ///
- /// Test
- ///
- [Test]
- public void SoilProfilesOfImportedDikeHaveCorrectProbability()
- {
- WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
- Dike dike = waterBoard.Dikes[0];
- Assert.AreEqual(80, waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[0], FailureMechanismSystemType.StabilityInside));
- Assert.AreEqual(100, waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[1], FailureMechanismSystemType.Piping));
- }
+ ///
+ /// Test
+ ///
+ ///
+ /// Test
+ ///
+ [Test]
+ public void SoilProfilesOfImportedDikeHaveCorrectProbability()
+ {
+ WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
+ Dike dike = waterBoard.Dikes[0];
+ Assert.AreEqual(80, waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[0], FailureMechanismSystemType.StabilityInside));
+ Assert.AreEqual(100, waterBoard.Segments[0].GetSoilProfileProbability(dike.SoilProfiles[1], FailureMechanismSystemType.Piping));
+ }
- ///
- /// Test
- ///
- [Test]
- public void SegmentsOfImportedDikeHaveCorrectMostProbabableSoilProfile()
- {
- WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
- Assert.AreEqual("1DP1", waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.StabilityInside).Name);
- Assert.AreEqual("1DP2", waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.Piping).Name);
- }
+ ///
+ /// Test
+ ///
+ [Test]
+ public void SegmentsOfImportedDikeHaveCorrectMostProbabableSoilProfile()
+ {
+ WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
+ Assert.AreEqual("1DP1", waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.StabilityInside).Name);
+ Assert.AreEqual("1DP2", waterBoard.Segments[0].GetMostProbableProfile(FailureMechanismSystemType.Piping).Name);
+ }
- ///
- /// Test
- ///
- [Test]
- public void SurfaceLinesOfImportedDikeHaveSameInstance()
- {
- WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
- Dike dike = waterBoard.Dikes[0];
- Assert.AreSame(dike.Locations[0].SurfaceLine2, dike.SurfaceLines2[0]);
- }
+ ///
+ /// Test
+ ///
+ [Test]
+ public void SurfaceLinesOfImportedDikeHaveSameInstance()
+ {
+ WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
+ Dike dike = waterBoard.Dikes[0];
+ Assert.AreSame(dike.Locations[0].SurfaceLine2, dike.SurfaceLines2[0]);
+ }
- ///
- /// Test
- ///
- [Test]
- public void CanImportDikeWithMinimalInput()
- {
- WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
- Dike dike = waterBoard.Dikes[0];
+ ///
+ /// Test
+ ///
+ [Test]
+ public void CanImportDikeWithMinimalInput()
+ {
+ WaterBoard waterBoard = ImportDirector.Construct(importFolder, null);
+ Dike dike = waterBoard.Dikes[0];
- Assert.IsNotNull(dike);
- }
+ Assert.IsNotNull(dike);
+ }
- ///
- /// Create csv file with 1D soilprofiles
- ///
- private void CreateSoilProfilesFile()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\soilprofiles.csv");
- 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);");
- }
+ ///
+ /// Create csv file with 1D soilprofiles
+ ///
+ private void CreateSoilProfilesFile()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\soilprofiles.csv");
+ 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);");
+ }
- ///
- /// Create csv file with scenarios
- ///
- private void CreateScenarios()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\scenarios.csv");
- writer.WriteLine("location_id;location_scenario_id;water_height;dike_table_height;safety_factor_stability_inner_slope;safety_factor_piping;water_height_decimerings_hoogte;max_waterheight");
- writer.WriteLine("LOC1;1;1.14;4.6;1.17;1.2;0.4;4");
- }
+ ///
+ /// Create csv file with scenarios
+ ///
+ private void CreateScenarios()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\scenarios.csv");
+ writer.WriteLine("location_id;location_scenario_id;water_height;dike_table_height;safety_factor_stability_inner_slope;safety_factor_piping;water_height_decimerings_hoogte;max_waterheight");
+ writer.WriteLine("LOC1;1;1.14;4.6;1.17;1.2;0.4;4");
+ }
- ///
- /// Create csv file with surface lines
- ///
- private void CreateSurfaceLinesFiles()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\surfacelines.csv");
- writer.WriteLine(
- "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)");
- writer.WriteLine(
- "D1;;63,310;0,000;1;0,000;0,000;0,680;21,110;0,000;1,120;31,600;0,000;1,300;31,730;0,000;1,610;32,210;0,000;1,670;35,580;0,000;1,580;40,480;0,000;1,940;47,860;0,000;3,790;50,110;0,000;4,460;51,750;0,000;4,662;52,630;0,000;4,770;54,250;0,000;4,690;55,170;0,000;4,460;58,850;0,000;2,980;60,290;0,000;2,460;63,310;0,000;1,360;67,900;0,000;1,070;69,410;0,000;0,600;69,800;0,000;0,480;70,530;0,000;0,000;70,820;0,000;-0,190;71,550;0,000;-0,600;72,370;0,000;-1,060;72,380;0,000;-1,170;72,550;0,000;-1,460;73,860;0,000;-1,390;73,990;0,000;-1,0;74,570;0,000;-0,840;74,970;0,000;-0,600;76,170;0,000;0,110;86,660;0,000;0,270;103,280;0,000;0,220;117,940;0,000;0,120");
- }
+ ///
+ /// Create csv file with surface lines
+ ///
+ private void CreateSurfaceLinesFiles()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\surfacelines.csv");
+ writer.WriteLine(
+ "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)");
+ writer.WriteLine(
+ "D1;;63,310;0,000;1;0,000;0,000;0,680;21,110;0,000;1,120;31,600;0,000;1,300;31,730;0,000;1,610;32,210;0,000;1,670;35,580;0,000;1,580;40,480;0,000;1,940;47,860;0,000;3,790;50,110;0,000;4,460;51,750;0,000;4,662;52,630;0,000;4,770;54,250;0,000;4,690;55,170;0,000;4,460;58,850;0,000;2,980;60,290;0,000;2,460;63,310;0,000;1,360;67,900;0,000;1,070;69,410;0,000;0,600;69,800;0,000;0,480;70,530;0,000;0,000;70,820;0,000;-0,190;71,550;0,000;-0,600;72,370;0,000;-1,060;72,380;0,000;-1,170;72,550;0,000;-1,460;73,860;0,000;-1,390;73,990;0,000;-1,0;74,570;0,000;-0,840;74,970;0,000;-0,600;76,170;0,000;0,110;86,660;0,000;0,270;103,280;0,000;0,220;117,940;0,000;0,120");
+ }
- ///
- /// Create csv file with segments containing 1d soilprofiles
- ///
- private void CreateSegmentsFor1DProfilesFile()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\segments.csv");
- writer.WriteLine("segment_id;soilprofile_id;probability;calculation_type");
- writer.WriteLine("1;1DP1;80;Stability");
- writer.WriteLine("1;1DP2;20;Stability");
- writer.WriteLine("1;1DP2;100;Piping");
- writer.WriteLine("2;1DP2;100;Stability");
- writer.WriteLine("2;1DP1;100;Piping");
- }
+ ///
+ /// Create csv file with segments containing 1d soilprofiles
+ ///
+ private void CreateSegmentsFor1DProfilesFile()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\segments.csv");
+ writer.WriteLine("segment_id;soilprofile_id;probability;calculation_type");
+ writer.WriteLine("1;1DP1;80;Stability");
+ writer.WriteLine("1;1DP2;20;Stability");
+ writer.WriteLine("1;1DP2;100;Piping");
+ writer.WriteLine("2;1DP2;100;Stability");
+ writer.WriteLine("2;1DP1;100;Piping");
+ }
- ///
- /// Create csv file with locations
- ///
- private void CreateLocationsFile()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\locations.csv");
- writer.WriteLine("location_id;surfaceline_id;segment_id;geo_x;geo_y;x_soilgeometry2D_origin;Pl1_id;polderlevel;head_pl2;head_pl3;grass_quality;direction;ophoogmateriaaldijk;ophoogmateriaalberm;dempingsfactor_pl3;dempingsfactor_pl4;Sheetpile_x;Sheetpile_y;Sheetpile_z;Sheetpile_length;");
- writer.WriteLine("LOC1;D1;1;414.950;91.850;14.0;PL1A;0.1;4.0;3.0;4.3;1.0;ophoogmateriaaldijk;ophoogmateriaalberm;0.31;0.41;432.1;0.0;654.3;22.0;");
- }
+ ///
+ /// Create csv file with locations
+ ///
+ private void CreateLocationsFile()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\locations.csv");
+ writer.WriteLine("location_id;surfaceline_id;segment_id;geo_x;geo_y;x_soilgeometry2D_origin;Pl1_id;polderlevel;head_pl2;head_pl3;grass_quality;direction;ophoogmateriaaldijk;ophoogmateriaalberm;dempingsfactor_pl3;dempingsfactor_pl4;Sheetpile_x;Sheetpile_y;Sheetpile_z;Sheetpile_length;");
+ writer.WriteLine("LOC1;D1;1;414.950;91.850;14.0;PL1A;0.1;4.0;3.0;4.3;1.0;ophoogmateriaaldijk;ophoogmateriaalberm;0.31;0.41;432.1;0.0;654.3;22.0;");
+ }
- ///
- /// Create csv file with characteristic points
- ///
- private void CreateCharacteristicPointsFile()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\characteristicpoints.csv");
- writer.WriteLine(
- "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek_sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;Volgnummer");
- writer.WriteLine(
- "D1;117,94;0;0,12;-1;-1;-1;73,99;0;-1,0;72,55;0;-1,46;67,9;0;1,07;63,31;0;1,36;-1;-1;-1;-1;-1;-1;55,17;0;4,46;54,25;0;4,69;51,75;0;4,662;50,11;0;4,46;40,48;0;1,94;32,21;0;1,67;31,6;0;1,3;0;0;0,68;1");
- }
-
- private void CreateSoilsFile()
- {
- using StreamWriter writer = File.CreateText(importFolder + "\\soils.csv");
- writer.WriteLine("soil_name;soil_color;soil_type;saturated_unit_weight;unsaturated_unit_weight;cohesion;friction_angle;diameter_d70;permeability_x;shear_strength_model;strength_increase_exponent;ratio_su_pc;use_pop;pop");
- writer.WriteLine("Zand;#A6EBFC;Sand;20.000;18.000;0.000;30.000;210.00;0.001;None;;;False;10.000");
- writer.WriteLine("Klei;#FFFFFF;Clay;17.500;17.500;3.500;18.500;210.00;0.001;None;;;False;10.000");
- writer.WriteLine("Veen;#A4FFA6;Peat;11.000;11.000;2.000;20.500;210.00;0.001;None;;;False;10.000");
- }
+ ///
+ /// Create csv file with characteristic points
+ ///
+ private void CreateCharacteristicPointsFile()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\characteristicpoints.csv");
+ writer.WriteLine(
+ "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek_sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;Volgnummer");
+ writer.WriteLine(
+ "D1;117,94;0;0,12;-1;-1;-1;73,99;0;-1,0;72,55;0;-1,46;67,9;0;1,07;63,31;0;1,36;-1;-1;-1;-1;-1;-1;55,17;0;4,46;54,25;0;4,69;51,75;0;4,662;50,11;0;4,46;40,48;0;1,94;32,21;0;1,67;31,6;0;1,3;0;0;0,68;1");
}
+
+ private void CreateSoilsFile()
+ {
+ using StreamWriter writer = File.CreateText(importFolder + "\\soils.csv");
+ writer.WriteLine("soil_name;soil_color;soil_type;saturated_unit_weight;unsaturated_unit_weight;cohesion;friction_angle;diameter_d70;permeability_x;shear_strength_model;strength_increase_exponent;ratio_su_pc;use_pop;pop");
+ writer.WriteLine("Zand;#A6EBFC;Sand;20.000;18.000;0.000;30.000;210.00;0.001;None;0.700;0.220;False;10.000");
+ writer.WriteLine("Klei;#FFFFFF;Clay;17.500;17.500;3.500;18.500;210.00;0.001;None;0.700;0.220;False;10.000");
+ writer.WriteLine("Veen;#A4FFA6;Peat;11.000;11.000;2.000;20.500;210.00;0.001;None;0.700;0.220;False;10.000");
+ }
}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs
===================================================================
diff -u -r4145 -r4157
--- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 4145)
+++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/CsvImporterTestsNew.cs (.../CsvImporterTestsNew.cs) (revision 4157)
@@ -689,7 +689,7 @@
}
[Test]
- public void SoilsImporterCorrectFileTest()
+ public void SoilsImporterCorrectFileWithOnlyRequiredColumnDefinedTest()
{
const string importFile = "soils.csv";
string testFilePath = Path.Combine(importFolder, importFile);
@@ -698,30 +698,78 @@
File.Delete(testFilePath);
}
- CreateSoilsFile(testFilePath);
+ CreateMinimalSoilsFile(testFilePath);
var csvImporterSoils = new CsvImporterSoils(testFilePath);
+ Assert.That(csvImporterSoils.ImportedItems.Count, Is.EqualTo(2));
+ IList soilRecords = csvImporterSoils.ImportedItems;
+
+ CsvImporterSoils.SoilRecord soilRecord = soilRecords[0];
+ Assert.That(soilRecord.SoilName, Is.EqualTo("Klei"));
+ Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(255, 255, 255)));
+ Assert.That(soilRecord.SoilType, Is.EqualTo(SoilType.Clay));
+ Assert.That(soilRecord.SaturatedUnitWeight, Is.Null);
+ Assert.That(soilRecord.UnsaturatedUnitWeight, Is.Null);
+ Assert.That(soilRecord.Cohesion, Is.Null);
+ Assert.That(soilRecord.FrictionAngle, Is.Null);
+ Assert.That(soilRecord.DiameterD70, Is.Null);
+ Assert.That(soilRecord.PermeabilityX, Is.Null);
+ Assert.That(soilRecord.ShearStrengthModel, Is.EqualTo((ShearStrengthModel) 0));
+ Assert.That(soilRecord.StrengthIncreaseExponent, Is.Null);
+ Assert.That(soilRecord.RatioSuPc, Is.Null);
+ Assert.That(soilRecord.UsePop, Is.False);
+ Assert.That(soilRecord.Pop, Is.Null);
+
+ soilRecord = soilRecords[1];
+ Assert.That(soilRecord.SoilName, Is.EqualTo("Veen"));
+ Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(164, 255, 166)));
+ Assert.That(soilRecord.SoilType, Is.EqualTo(SoilType.Peat));
+ Assert.That(soilRecord.SaturatedUnitWeight, Is.Null);
+ Assert.That(soilRecord.UnsaturatedUnitWeight, Is.Null);
+ Assert.That(soilRecord.Cohesion, Is.Null);
+ Assert.That(soilRecord.FrictionAngle, Is.Null);
+ Assert.That(soilRecord.DiameterD70, Is.Null);
+ Assert.That(soilRecord.PermeabilityX, Is.Null);
+ Assert.That(soilRecord.ShearStrengthModel, Is.EqualTo((ShearStrengthModel) 0));
+ Assert.That(soilRecord.StrengthIncreaseExponent, Is.Null);
+ Assert.That(soilRecord.RatioSuPc, Is.Null);
+ Assert.That(soilRecord.UsePop, Is.False);
+ Assert.That(soilRecord.Pop, Is.Null);
+ }
+
+ [Test]
+ public void SoilsImporterCorrectFileWithAllColumnsDefinedTest()
+ {
+ const string importFile = "soils.csv";
+ string testFilePath = Path.Combine(importFolder, importFile);
+ if (File.Exists(testFilePath))
+ {
+ File.Delete(testFilePath);
+ }
+
+ CreateFullSoilsFile(testFilePath);
+ var csvImporterSoils = new CsvImporterSoils(testFilePath);
Assert.That(csvImporterSoils.ImportedItems.Count, Is.EqualTo(3));
IList soilRecords = csvImporterSoils.ImportedItems;
CsvImporterSoils.SoilRecord soilRecord = soilRecords[0];
Assert.That(soilRecord.SoilName, Is.EqualTo("Zand"));
Assert.That(soilRecord.SoilType, Is.EqualTo(SoilType.Sand));
- Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(166,235, 252)));
+ Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(166, 235, 252)));
Assert.That(soilRecord.SaturatedUnitWeight, Is.EqualTo(20.000));
Assert.That(soilRecord.UnsaturatedUnitWeight, Is.EqualTo(18.000));
Assert.That(soilRecord.Cohesion, Is.EqualTo(0.000));
Assert.That(soilRecord.FrictionAngle, Is.EqualTo(30.000));
Assert.That(soilRecord.DiameterD70, Is.EqualTo(210.00));
Assert.That(soilRecord.PermeabilityX, Is.EqualTo(0.001));
Assert.That(soilRecord.ShearStrengthModel, Is.EqualTo(ShearStrengthModel.None));
- Assert.That(soilRecord.StrengthIncreaseExponent, Is.Null);
- Assert.That(soilRecord.RatioSuPc, Is.Null);
+ Assert.That(soilRecord.StrengthIncreaseExponent, Is.EqualTo(0.700));
+ Assert.That(soilRecord.RatioSuPc, Is.EqualTo(0.220));
Assert.That(soilRecord.UsePop, Is.False);
Assert.That(soilRecord.Pop, Is.EqualTo(10.000));
soilRecord = soilRecords[1];
Assert.That(soilRecord.SoilName, Is.EqualTo("Klei"));
- Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(255,255, 255)));
+ Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(255, 255, 255)));
Assert.That(soilRecord.SoilType, Is.EqualTo(SoilType.Clay));
Assert.That(soilRecord.SaturatedUnitWeight, Is.EqualTo(17.500));
Assert.That(soilRecord.UnsaturatedUnitWeight, Is.EqualTo(17.500));
@@ -730,14 +778,14 @@
Assert.That(soilRecord.DiameterD70, Is.EqualTo(210.00));
Assert.That(soilRecord.PermeabilityX, Is.EqualTo(0.001));
Assert.That(soilRecord.ShearStrengthModel, Is.EqualTo(ShearStrengthModel.None));
- Assert.That(soilRecord.StrengthIncreaseExponent, Is.Null);
- Assert.That(soilRecord.RatioSuPc, Is.Null);
+ Assert.That(soilRecord.StrengthIncreaseExponent, Is.EqualTo(0.700));
+ Assert.That(soilRecord.RatioSuPc, Is.EqualTo(0.220));
Assert.That(soilRecord.UsePop, Is.False);
Assert.That(soilRecord.Pop, Is.EqualTo(10.000));
soilRecord = soilRecords[2];
Assert.That(soilRecord.SoilName, Is.EqualTo("Veen"));
- Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(164,255, 166)));
+ Assert.That(soilRecord.SoilColor, Is.EqualTo(Color.FromArgb(164, 255, 166)));
Assert.That(soilRecord.SoilType, Is.EqualTo(SoilType.Peat));
Assert.That(soilRecord.SaturatedUnitWeight, Is.EqualTo(11.000));
Assert.That(soilRecord.UnsaturatedUnitWeight, Is.EqualTo(11.000));
@@ -746,12 +794,12 @@
Assert.That(soilRecord.DiameterD70, Is.EqualTo(210.00));
Assert.That(soilRecord.PermeabilityX, Is.EqualTo(0.001));
Assert.That(soilRecord.ShearStrengthModel, Is.EqualTo(ShearStrengthModel.None));
- Assert.That(soilRecord.StrengthIncreaseExponent, Is.Null);
- Assert.That(soilRecord.RatioSuPc, Is.Null);
+ Assert.That(soilRecord.StrengthIncreaseExponent, Is.EqualTo(0.700));
+ Assert.That(soilRecord.RatioSuPc, Is.EqualTo(0.220));
Assert.That(soilRecord.UsePop, Is.False);
Assert.That(soilRecord.Pop, Is.EqualTo(10.000));
}
-
+
[Test]
public void SoilsImporterWithIllegalHeaderTest()
{
@@ -762,7 +810,7 @@
File.Delete(testFilePath);
}
- CreateSegmentsFor2DGeometriesFile(testFilePath);
+ CreateSoilProfilesFileWithIllegalHeader(testFilePath);
Assert.That(() => new CsvImporterSoils(testFilePath), Throws.InstanceOf());
}
@@ -858,15 +906,23 @@
writer.WriteLine("1DP2;-5.3;Alg-zand (0-30)");
}
- private static void CreateSoilsFile(string filePath)
+ private static void CreateFullSoilsFile(string filePath)
{
using StreamWriter writer = File.CreateText(filePath);
writer.WriteLine("soil_name;soil_color;soil_type;saturated_unit_weight;unsaturated_unit_weight;cohesion;friction_angle;diameter_d70;permeability_x;shear_strength_model;strength_increase_exponent;ratio_su_pc;use_pop;pop");
- writer.WriteLine("Zand;#A6EBFC;Sand;20.000;18.000;0.000;30.000;210.00;0.001;None;;;False;10.000");
- writer.WriteLine("Klei;#FFFFFF;Clay;17.500;17.500;3.500;18.500;210.00;0.001;None;;;False;10.000");
- writer.WriteLine("Veen;#A4FFA6;Peat;11.000;11.000;2.000;20.500;210.00;0.001;None;;;False;10.000");
+ writer.WriteLine("Zand;#A6EBFC;Sand;20.000;18.000;0.000;30.000;210.00;0.001;None;0.700;0.220;False;10.000");
+ writer.WriteLine("Klei;#FFFFFF;Clay;17.500;17.500;3.500;18.500;210.00;0.001;None;0.700;0.220;False;10.000");
+ writer.WriteLine("Veen;#A4FFA6;Peat;11.000;11.000;2.000;20.500;210.00;0.001;None;0.700;0.220;False;10.000");
}
-
+
+ private static void CreateMinimalSoilsFile(string filePath)
+ {
+ using StreamWriter writer = File.CreateText(filePath);
+ writer.WriteLine("soil_name;soil_color;soil_type");
+ writer.WriteLine("Klei;#FFFFFF;Clay");
+ writer.WriteLine("Veen;#A4FFA6;Peat");
+ }
+
private static void CreateSoilsFileWithIllegalValues(string filePath)
{
using StreamWriter writer = File.CreateText(filePath);
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs
===================================================================
diff -u -r4146 -r4157
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs (.../CsvImporterHelper.cs) (revision 4146)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs (.../CsvImporterHelper.cs) (revision 4157)
@@ -33,15 +33,15 @@
/// the calling object
/// the scv reader
///
- static public string[] GetFieldHeaders(Object caller, CsvReader csvReader)
+ public static string[] GetFieldHeaders(object caller, CsvReader csvReader)
{
try
{
return csvReader.GetFieldHeaders();
}
catch (Exception exception)
{
- string message = String.Format(LocalizationManager.GetTranslatedText(caller, "ErrorReadingCsvColumnNames"), exception.Message, caller.GetType());
+ string message = string.Format(LocalizationManager.GetTranslatedText(caller, "ErrorReadingCsvColumnNames"), exception.Message, caller.GetType());
throw new CsvImporterException(message);
}
}
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs
===================================================================
diff -u -r4148 -r4157
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs (.../CsvImporterSoils.cs) (revision 4148)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs (.../CsvImporterSoils.cs) (revision 4157)
@@ -54,15 +54,21 @@
using (var csv = new CsvReader(new StreamReader(fileName), true, ';'))
{
string[] headers = CsvImporterHelper.GetFieldHeaders(this, csv);
- if (headers.Length < 13)
+ if (headers.Length < 2)
{
string csvHeaderError = LocalizationManager.GetTranslatedText(GetType(), "csvHeaderError");
throw new CsvImporterSoilsException($"{fileName} : {csvHeaderError}");
}
int colIndexSoilName = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.SoilNameColumnName);
- int colIndexSoilColor = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.SoilColorColumnName);
+ CheckColumn(colIndexSoilName, fileName, CsvColumnNames.SoilNameColumnName);
+
+ int colIndexSoilColor = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.SoilNameColumnName);
+ CheckColumn(colIndexSoilName, fileName, CsvColumnNames.SoilColorColumnName);
+
int colIndexSoilType = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.SoilTypeColumnName);
+ CheckColumn(colIndexSoilType, fileName, CsvColumnNames.SoilTypeColumnName);
+
int colIndexSaturatedUnitWeight = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.SaturatedUnitWeightColumnName);
int colIndexUnsaturatedUnitWeight = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.UnsaturatedUnitWeightColumnName);
int colIndexCohesion = CsvReaderUtilities.GetHeaderIndexByString(headers, CsvColumnNames.CohesionColumnName);
@@ -81,24 +87,17 @@
int colIndex = -1; // Keep track of column for error message
try
{
- if (colIndexSoilName > -1)
- {
- colIndex = colIndexSoilName;
- soil.SoilName = csv[colIndex];
- }
+ // Required columns
+ colIndex = colIndexSoilName;
+ soil.SoilName = csv[colIndex];
- if (colIndexSoilColor > -1)
- {
- colIndex = colIndexSoilColor;
- soil.SoilColor = ColorTranslator.FromHtml(csv[colIndex]);
- }
+ colIndex = colIndexSoilColor;
+ soil.SoilColor = ColorTranslator.FromHtml(csv[colIndex]);
- if (colIndexSoilType > -1)
- {
- colIndex = colIndexSoilType;
- soil.SoilType = ConversionHelper.ConvertToSoilType(csv[colIndex]);
- }
+ colIndex = colIndexSoilType;
+ soil.SoilType = ConversionHelper.ConvertToSoilType(csv[colIndex]);
+ // Optional columns
if (colIndexSaturatedUnitWeight > -1)
{
colIndex = colIndexSaturatedUnitWeight;
@@ -150,19 +149,13 @@
if (colIndexStrengthIncreaseExponent > -1)
{
colIndex = colIndexStrengthIncreaseExponent;
- if (csv[colIndex] != "")
- {
- soil.StrengthIncreaseExponent = Convert.ToDouble(csv[colIndex]);
- }
+ soil.StrengthIncreaseExponent = Convert.ToDouble(csv[colIndex]);
}
if (colIndexRatioSuPc > -1)
{
colIndex = colIndexRatioSuPc;
- if (csv[colIndex] != "")
- {
- soil.RatioSuPc = Convert.ToDouble(csv[colIndex]);
- }
+ soil.RatioSuPc = Convert.ToDouble(csv[colIndex]);
}
if (colIndexUsePop > -1)
@@ -197,6 +190,15 @@
public List ErrorMessages { get; } = new();
+ private void CheckColumn(int index, string fileName, string fieldName)
+ {
+ if (index < 0)
+ {
+ string csvHeaderFieldError = LocalizationManager.GetTranslatedText(GetType(), "csvHeaderFieldError");
+ throw new CsvImporterSoilsException($"{fileName} : {csvHeaderFieldError} {fieldName}");
+ }
+ }
+
public class SoilRecord
{
public string SoilName { get; set; }