Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs =================================================================== diff -u -r4173 -r4262 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs (.../CsvImporterSoils.cs) (revision 4173) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterSoils.cs (.../CsvImporterSoils.cs) (revision 4262) @@ -41,6 +41,8 @@ public class CsvImporterSoils { + private int currentColIndex = -1; // Keep track of column for error message + public CsvImporterSoils(string fileName) { ErrorMessages.Clear(); @@ -84,91 +86,48 @@ while (csv.ReadNextRecord()) { var soil = new SoilRecord(); - int colIndex = -1; // Keep track of column for error message try { // Required columns - colIndex = colIndexSoilName; - soil.SoilName = csv[colIndex]; + currentColIndex = colIndexSoilName; + soil.SoilName = csv[currentColIndex]; - colIndex = colIndexSoilColor; - soil.SoilColor = ColorTranslator.FromHtml(csv[colIndex]); + currentColIndex = colIndexSoilColor; + soil.SoilColor = ColorTranslator.FromHtml(csv[currentColIndex]); - colIndex = colIndexSoilType; - soil.SoilType = ConversionHelper.ConvertToSoilType(csv[colIndex]); + currentColIndex = colIndexSoilType; + soil.SoilType = ConversionHelper.ConvertToSoilType(csv[currentColIndex]); // Optional columns - if (colIndexSaturatedUnitWeight > -1) - { - colIndex = colIndexSaturatedUnitWeight; - soil.SaturatedUnitWeight = Convert.ToDouble(csv[colIndex]); - } + soil.SaturatedUnitWeight = FetchOptionalColumn(colIndexSaturatedUnitWeight, csv); + soil.UnsaturatedUnitWeight = FetchOptionalColumn(colIndexUnsaturatedUnitWeight, csv); + soil.Cohesion = FetchOptionalColumn(colIndexCohesion, csv); + soil.FrictionAngle = FetchOptionalColumn(colIndexFrictionAngle, csv); + soil.DiameterD70 = FetchOptionalColumn(colIndexDiameterD70, csv); + soil.PermeabilityX = FetchOptionalColumn(colIndexPermeabilityX, csv); - if (colIndexUnsaturatedUnitWeight > -1) - { - colIndex = colIndexUnsaturatedUnitWeight; - soil.UnsaturatedUnitWeight = Convert.ToDouble(csv[colIndex]); - } - - if (colIndexCohesion > -1) - { - colIndex = colIndexCohesion; - soil.Cohesion = Convert.ToDouble(csv[colIndex]); - } - - if (colIndexFrictionAngle > -1) - { - colIndex = colIndexFrictionAngle; - soil.FrictionAngle = Convert.ToDouble(csv[colIndex]); - } - - if (colIndexDiameterD70 > -1) - { - colIndex = colIndexDiameterD70; - soil.DiameterD70 = Convert.ToDouble(csv[colIndex]); - } - - if (colIndexPermeabilityX > -1) - { - colIndex = colIndexPermeabilityX; - soil.PermeabilityX = Convert.ToDouble(csv[colIndex]); - } - if (colIndexShearStrengthModel > -1) { - colIndex = colIndexShearStrengthModel; - soil.ShearStrengthModel = ConversionHelper.ConvertToShearStrengthModel(csv[colIndex]); + currentColIndex = colIndexShearStrengthModel; + soil.ShearStrengthModel = ConversionHelper.ConvertToShearStrengthModel(csv[currentColIndex]); } - if (colIndexStrengthIncreaseExponent > -1) - { - colIndex = colIndexStrengthIncreaseExponent; - soil.StrengthIncreaseExponent = Convert.ToDouble(csv[colIndex]); - } + soil.StrengthIncreaseExponent = FetchOptionalColumn(colIndexStrengthIncreaseExponent, csv); + soil.RatioSuPc = FetchOptionalColumn(colIndexRatioSuPc, csv); - if (colIndexRatioSuPc > -1) - { - colIndex = colIndexRatioSuPc; - soil.RatioSuPc = Convert.ToDouble(csv[colIndex]); - } - if (colIndexUsePop > -1) { - colIndex = colIndexUsePop; - soil.UsePop = Convert.ToBoolean(csv[colIndex]); + currentColIndex = colIndexUsePop; + soil.UsePop = Convert.ToBoolean(csv[currentColIndex]); } - if (colIndexPop > -1) - { - colIndex = colIndexPop; - soil.Pop = Convert.ToDouble(csv[colIndex]); - } + soil.Pop = FetchOptionalColumn(colIndexPop, csv); ImportedItems.Add(soil); } catch (Exception e) { - string csvSoilError = string.Format(LocalizationManager.GetTranslatedText(GetType(), "csvSoilError"), soil.SoilName, colIndex + 1); + string csvSoilError = string.Format(LocalizationManager.GetTranslatedText(GetType(), "csvSoilError"), soil.SoilName, currentColIndex + 1); ErrorMessages.Add(csvSoilError + e.Message); } } @@ -184,6 +143,17 @@ public List ErrorMessages { get; } = new(); + private double? FetchOptionalColumn(int colIndex, CsvReader csv) + { + if (colIndex > -1) + { + currentColIndex = colIndex; + return Convert.ToDouble(csv[colIndex]); + } + + return null; + } + private void CheckColumn(int index, string fileName, string fieldName) { if (index < 0) Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs =================================================================== diff -u -r4157 -r4262 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs (.../CsvImporterHelper.cs) (revision 4157) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterHelper.cs (.../CsvImporterHelper.cs) (revision 4262) @@ -25,7 +25,7 @@ namespace Deltares.Dam.Data.CsvImporters; -public class CsvImporterHelper +public abstract class CsvImporterHelper { /// /// Read field headers of csv file with improved error messages