Index: src/Deltares.DSoilModel.Tests/SosSoilProfilesImporterTests.cs
===================================================================
diff -u -r7 -r262
--- src/Deltares.DSoilModel.Tests/SosSoilProfilesImporterTests.cs (.../SosSoilProfilesImporterTests.cs) (revision 7)
+++ src/Deltares.DSoilModel.Tests/SosSoilProfilesImporterTests.cs (.../SosSoilProfilesImporterTests.cs) (revision 262)
@@ -227,5 +227,22 @@
Assert.AreEqual(Color.Maroon, project.SoilProfiles1D[2].Layers[5].Soil.Color);
}
}
+
+ [Test]
+ public void DSoilModelIO_ImportFromCsvFileWithInvalidHeaders()
+ {
+ const string csvFileNameAndRelativePath = @"TestFiles\DSoilModelsoilprofilesWithInvalidHeaders.csv";
+
+ // Locate the test files.
+ var currentDirectory = Directory.GetCurrentDirectory();
+ var csvFullFileName = Path.Combine(currentDirectory, csvFileNameAndRelativePath);
+ LogManager.Messages.Clear();
+ using (var project = new DSoilModelProject())
+ {
+ project.ReadSoilProfiles1DFromFile(csvFullFileName);
+ Assert.AreEqual(5,LogManager.Messages.Count, "Expected five messages");
+ Assert.AreNotEqual(0,project.SoilProfiles1D.Count, "Expected the profiles were read anyway");
+ }
+ }
}
}
\ No newline at end of file
Index: src/Deltares.DSoilModel.Data/Translations.xml
===================================================================
diff -u -r67 -r262
--- src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 67)
+++ src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 262)
@@ -14,7 +14,7 @@
-
@@ -24,6 +24,8 @@
+
+
@@ -41,4 +43,4 @@
-
\ No newline at end of file
+
Index: utils/svn_insert_version.cmd
===================================================================
diff -u -r6 -r262
--- utils/svn_insert_version.cmd (.../svn_insert_version.cmd) (revision 6)
+++ utils/svn_insert_version.cmd (.../svn_insert_version.cmd) (revision 262)
@@ -28,7 +28,7 @@
ECHO "setting custom in and out files."
SET INTEXTFILE=%2
SET OUTTEXTFILE=%3
-)
+)
ECHO "parsing svn info in directory %CD%"
@@ -64,13 +64,11 @@
)
ECHO "writing new %OUTTEXTFILE%"
-FOR /f "tokens=1,* delims=�" %%A IN ( '"type %INTEXTFILE%"') DO (
- SET string=%%A
- SET modified=!string:%SEARCHTEXT%=%SVN_REV%!
- SET modified=!modified:%SEARCHROOT%=%SVN_ROOT%!
- ECHO !modified! >> %OUTTEXTFILE%
+
+call powershell -Command "(gc %INTEXTFILE%) -replace '%SEARCHTEXT%', '%SVN_REV%' | Out-File -encoding ASCII %OUTTEXTFILE%
+
)
CD %ORG_DIR%
ECHO "%0 done"
-:EOF
\ No newline at end of file
+:EOF
Index: src/Deltares.DSoilModel.Forms/Translations.xml
===================================================================
diff -u -r224 -r262
--- src/Deltares.DSoilModel.Forms/Translations.xml (.../Translations.xml) (revision 224)
+++ src/Deltares.DSoilModel.Forms/Translations.xml (.../Translations.xml) (revision 262)
@@ -30,12 +30,12 @@
nl-NL="Importeer een sondering vanuit een GEF bestand" />
-
+
-
+
@@ -46,19 +46,19 @@
nl-NL="Het importeren van de volgende bestanden is mislukt:" />
-
-
+
-
+
@@ -90,4 +90,4 @@
-
\ No newline at end of file
+
Index: src/Deltares.DSoilModel.Data/SosSoilProfilesImporter.cs
===================================================================
diff -u -r63 -r262
--- src/Deltares.DSoilModel.Data/SosSoilProfilesImporter.cs (.../SosSoilProfilesImporter.cs) (revision 63)
+++ src/Deltares.DSoilModel.Data/SosSoilProfilesImporter.cs (.../SosSoilProfilesImporter.cs) (revision 262)
@@ -43,15 +43,34 @@
using (var csv = new CsvReader(new StreamReader(fileName), true, ';'))
{
string[] headers = csv.GetFieldHeaders();
- // The definition of the csv contains one extra column (soiltype) which is now optional.
+
+ string[] validHeaders = new string[]
+ {
+ "soilprofile_id",
+ "top_level",
+ "soil_name",
+ "soil_color",
+ "soil_type",
+ "max-d",
+ "min-d",
+ "remark",
+ "extra"
+ };
+ // The definition of the csv contains one extra column (soil_type) which is now optional.
// Next to that 5 extra optional columns are added for the SOS-import of which one (named extra) is unused for now
// So number of columns may vary from 3 to 9.
if ((headers.Count() < 3) || (headers.Count() > 9))
{
- string csvHeaderError = LocalizationManager.GetTranslatedText(typeof(SoilProfilesImporter),
- "csvHeaderError");
+ string csvHeaderError = LocalizationManager.GetTranslatedText(this, "csvHeaderError");
throw new CsvImporterSoilProfilesException(String.Format("{0} : {1}", fileName, csvHeaderError));
}
+ //Check that all column names are known
+ var invalidNames = GetInvalidSoilProfileHeaders(headers, validHeaders);
+ if (invalidNames != "")
+ {
+ string csvHeaderError = LocalizationManager.GetTranslatedText(this, "csvHeaderInvalidColumns");
+ LogManager.Messages.Add(new LogMessage(LogMessageType.Warning, this, String.Format("{0} : {1} -- {2}", fileName, csvHeaderError, invalidNames)));
+ }
const string fieldsoilprofile_id = "soilprofile_id";
int colIndexSoilProfileId = CsvReaderUtilities.GetHeaderIndexByString(headers, fieldsoilprofile_id);
CheckColumn(colIndexSoilProfileId, fileName, fieldsoilprofile_id);
@@ -254,5 +273,34 @@
return type;
return SoilType.Sand;
}
+
+ private string GetInvalidSoilProfileHeaders(string[] headers, string[] validHeaders)
+ {
+ string invalidHeaders = "";
+ foreach (var name in headers)
+ {
+ bool found = false;
+ foreach (var validName in validHeaders)
+ {
+ if (name.Equals(validName))
+ {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ {
+ if (invalidHeaders == "")
+ {
+ invalidHeaders = name;
+ }
+ else
+ {
+ invalidHeaders = invalidHeaders + ", " + name;
+ }
+ }
+ }
+ return invalidHeaders;
+ }
}
}
\ No newline at end of file
Index: src/Deltares.DSoilModel.Tests/TestFiles/DSoilModelsoilprofilesWithInvalidHeaders.csv
===================================================================
diff -u
--- src/Deltares.DSoilModel.Tests/TestFiles/DSoilModelsoilprofilesWithInvalidHeaders.csv (revision 0)
+++ src/Deltares.DSoilModel.Tests/TestFiles/DSoilModelsoilprofilesWithInvalidHeaders.csv (revision 262)
@@ -0,0 +1,8 @@
+soilprofile_id;top_level;Soil_name;soiltype
+10Z_286_STBI;33;ZAND;zand
+10Z_286_STBI;-11.5;ZAND;Zand
+10Z_311_STBI;60;VEEN;Veen
+10Z_311_STBI;-3.2;VEEN;Zand
+10Z_327_STBI;60;kLEI (0);Veen
+10Z_400_STBI;60;WL_zanD;Veen
+10Z_400_STBI;-0.9;wl_zand;Veen