Index: Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs =================================================================== diff -u -r0320ab3a413cb6a55e3f615d8c62706a48121588 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs (.../HydraulicBoundaryLocationCalculationGuiService.cs) (revision 0320ab3a413cb6a55e3f615d8c62706a48121588) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs (.../HydraulicBoundaryLocationCalculationGuiService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -74,6 +74,7 @@ } return RunActivities(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory, locations.Select(location => new DesignWaterLevelCalculationActivity(new DesignWaterLevelCalculation(location), hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, @@ -98,16 +99,19 @@ } return RunActivities(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory, locations.Select(location => new WaveHeightCalculationActivity(new WaveHeightCalculation(location), hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, norm, messageProvider)).ToArray()); } - private bool RunActivities(string hydraulicBoundaryDatabasePath, IEnumerable activities) where TActivity : Activity + private bool RunActivities(string hydraulicBoundaryDatabasePath, string preprocessorDirectory, + IEnumerable activities) where TActivity : Activity { - string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabasePath); + string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabasePath, + preprocessorDirectory); if (string.IsNullOrEmpty(validationProblem)) { ActivityProgressDialogRunner.Run(viewParent, activities); Index: Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs =================================================================== diff -u -r09c47b676fdd8a2a9f891f226e1c2a676a3dec08 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs (.../HydraRingSettingsDatabaseReader.cs) (revision 09c47b676fdd8a2a9f891f226e1c2a676a3dec08) +++ Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseReader.cs (.../HydraRingSettingsDatabaseReader.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -31,7 +31,6 @@ using Ringtoets.Common.IO.Properties; using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Settings; -using Ringtoets.HydraRing.Calculation.Readers; namespace Ringtoets.Common.IO.HydraRing { @@ -121,8 +120,6 @@ $"WHERE LocationID = {locationIdParameterName}"; excludedPreprocessorLocationsQuery = $"SELECT {locationIdColumn} FROM ExcludedLocationsPreprocessor"; - - ValidateSchema(); } /// @@ -154,7 +151,7 @@ } catch (ConversionException) { - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); + throw new CriticalFileReadException(Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema); } } } @@ -196,7 +193,7 @@ } catch (ConversionException) { - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); + throw new CriticalFileReadException(Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema); } } } @@ -231,7 +228,7 @@ } catch (ConversionException) { - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); + throw new CriticalFileReadException(Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema); } } } @@ -276,7 +273,7 @@ } catch (ConversionException) { - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); + throw new CriticalFileReadException(Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema); } } } @@ -315,29 +312,10 @@ } catch (ConversionException) { - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); + throw new CriticalFileReadException(Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema); } } - /// - /// Verifies that the schema of the opened settings database is valid. - /// - /// Thrown when the - /// opened database doesn't have the expected schema. - private void ValidateSchema() - { - if (!ContainsRequiredTables(GetColumnDefinitions(Connection))) - { - CloseConnection(); - throw new CriticalFileReadException(Resources.HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema); - } - } - - private bool ContainsRequiredTables(List> definitions) - { - return GetValidSchema().All(definitions.Contains); - } - private IDataReader CreateDesignTablesDataReader(long locationId, HydraRingFailureMechanismType calculationType) { var locationParameter = new SQLiteParameter @@ -435,34 +413,5 @@ { return CreateDataReader(excludedPreprocessorLocationsQuery); } - - private List> GetValidSchema() - { - using (var validSchemaConnection = new SQLiteConnection("Data Source=:memory:")) - using (SQLiteCommand command = validSchemaConnection.CreateCommand()) - { - validSchemaConnection.Open(); - command.CommandText = Resources.settings_schema; - command.ExecuteNonQuery(); - return GetColumnDefinitions(validSchemaConnection); - } - } - - private static List> GetColumnDefinitions(SQLiteConnection connection) - { - DataTable columns = connection.GetSchema("COLUMNS"); - - var definitions = new List>(); - for (var i = 0; i < columns.Rows.Count; i++) - { - DataRow dataRow = columns.Rows[i]; - definitions.Add( - Tuple.Create( - ((string) dataRow["TABLE_NAME"]).ToLower(), - ((string) dataRow["COLUMN_NAME"]).ToLower() - )); - } - return definitions; - } } } \ No newline at end of file Fisheye: Tag eb9d359e7bedaf1748daa626087432fde5b196d9 refers to a dead (removed) revision in file `Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraRingSettingsDatabaseValidator.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraulicBoundaryDatabaseHelper.cs =================================================================== diff -u -r90f8f834521f65ed3b1044e345b172040404e41e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraulicBoundaryDatabaseHelper.cs (.../HydraulicBoundaryDatabaseHelper.cs) (revision 90f8f834521f65ed3b1044e345b172040404e41e) +++ Ringtoets/Common/src/Ringtoets.Common.IO/HydraRing/HydraulicBoundaryDatabaseHelper.cs (.../HydraulicBoundaryDatabaseHelper.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -45,9 +45,10 @@ /// database with a Hydraulic Location Configurations database next to it. /// /// The path of the Hydraulic Boundary Locations database file. + /// The preprocessor directory. /// A describing the problem when trying to connect to the /// or null if a connection could be correctly made. - public static string ValidatePathForCalculation(string filePath) + public static string ValidatePathForCalculation(string filePath, string preprocessorDirectory) { try { @@ -78,14 +79,20 @@ } string hlcdFilePath = Path.Combine(directoryName, hlcdFileName); using (new HydraulicLocationConfigurationDatabaseReader(hlcdFilePath)) {} - using (new DesignTablesSettingsProvider(settingsDatabaseFileName)) {} - using (new TimeIntegrationSettingsProvider(settingsDatabaseFileName)) {} - using (new NumericsSettingsProvider(settingsDatabaseFileName)) {} + + using (var validator = new HydraRingSettingsDatabaseValidator(settingsDatabaseFileName, preprocessorDirectory)) + { + if (!validator.ValidateSchema()) + { + return Resources.HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema; + } + } } catch (CriticalFileReadException e) { return e.Message; } + return null; } Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs =================================================================== diff -u -r90f8f834521f65ed3b1044e345b172040404e41e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 90f8f834521f65ed3b1044e345b172040404e41e) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -902,10 +902,10 @@ /// /// Looks up a localized string similar to De rekeninstellingen database heeft niet het juiste schema.. /// - public static string HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_database_has_invalid_schema { + public static string HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_schema { get { - return ResourceManager.GetString("HydraRingSettingsDatabaseReader_ValidateSchema_Hydraulic_calculation_settings_dat" + - "abase_has_invalid_schema", resourceCulture); + return ResourceManager.GetString("HydraRingSettingsDatabase_Hydraulic_calculation_settings_database_has_invalid_sch" + + "ema", resourceCulture); } } @@ -1581,6 +1581,23 @@ } /// + /// Looks up a localized string similar to BEGIN TRANSACTION; + ///CREATE TABLE "TimeIntegrationSettings" ( + /// "LocationID" INTEGER NOT NULL, + /// "CalculationTypeID" INTEGER NOT NULL, + /// "TimeIntegrationSchemeID" INTEGER NOT NULL, + /// CONSTRAINT timeintegrationsettings_pk PRIMARY KEY ("LocationID", "CalculationTypeID"), + /// CONSTRAINT calculationtypes_timeintegrationsettings_fk FOREIGN KEY ("CalculationTypeID") REFERENCES CalculationTypes ("CalculationTypeID") ON DELETE NO ACTION ON UPDATE NO ACTION + ///); + ///CREATE TABLE [rest of string was truncated]";. + /// + public static string settings_schema_preprocessor { + get { + return ResourceManager.GetString("settings_schema_preprocessor", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Shapebestand. /// public static string Shape_file_filter_Description { Index: Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx =================================================================== diff -u -r90f8f834521f65ed3b1044e345b172040404e41e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision 90f8f834521f65ed3b1044e345b172040404e41e) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Properties/Resources.resx (.../Resources.resx) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -465,7 +465,7 @@ Kon het rekeninstellingen bestand niet openen. {0} - + De rekeninstellingen database heeft niet het juiste schema. @@ -886,4 +886,7 @@ De bestandsmap bestaat niet. + + ..\Resources\settings-schema-preprocessor.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.IO/Resources/settings-schema-preprocessor.sql =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.IO/Resources/settings-schema-preprocessor.sql (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Resources/settings-schema-preprocessor.sql (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -0,0 +1,70 @@ +BEGIN TRANSACTION; +CREATE TABLE "TimeIntegrationSettings" ( + "LocationID" INTEGER NOT NULL, + "CalculationTypeID" INTEGER NOT NULL, + "TimeIntegrationSchemeID" INTEGER NOT NULL, + CONSTRAINT timeintegrationsettings_pk PRIMARY KEY ("LocationID", "CalculationTypeID"), + CONSTRAINT calculationtypes_timeintegrationsettings_fk FOREIGN KEY ("CalculationTypeID") REFERENCES CalculationTypes ("CalculationTypeID") ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE TABLE "NumericsSettings" ( + "LocationId" INTEGER NOT NULL, + "MechanismID" INTEGER NOT NULL, + "SubMechanismID" INTEGER NOT NULL, + "CalculationMethod" INTEGER NOT NULL, + "FORM_StartMethod" INTEGER NOT NULL, + "FORM_NIterations" INTEGER NOT NULL, + "FORM_RelaxationFactor" REAL NOT NULL, + "FORM_EpsBeta" REAL NOT NULL, + "FORM_EpsHOH" REAL NOT NULL, + "FORM_EpsZFunc" REAL NOT NULL, + "DS_StartMethod" INTEGER NOT NULL, + "DS_Min" INTEGER NOT NULL, + "DS_Max" INTEGER NOT NULL, + "DS_VarCoefficient" REAL NOT NULL, + "NI_UMin" REAL NOT NULL, + "NI_UMax" REAL NOT NULL, + "NI_NumberSteps" INTEGER NOT NULL, + CONSTRAINT numericsettings_pk PRIMARY KEY ("LocationId", "MechanismID", "SubMechanismID") +); +CREATE TABLE "General" ( + "CreationDate" VARCHAR(20), + "HRDName" VARCHAR(60) NOT NULL, + "HRDCreationDate" VARCHAR(60), + "HRDTrackID" INTEGER NOT NULL, + "HRDNameRegion" VARCHAR(20) NOT NULL +); +CREATE TABLE "ExcludedWindDirections" ( + "CalculationTypeID" INTEGER NOT NULL, + "LocationID" INTEGER NOT NULL, + "HRDWindDirectionID" INTEGER NOT NULL, + CONSTRAINT excludedwinddirections_pk PRIMARY KEY ("CalculationTypeID", "LocationID", "HRDWindDirectionID"), + CONSTRAINT calculationtypes_excludedwinddirections_fk FOREIGN KEY ("CalculationTypeID") REFERENCES CalculationTypes ("CalculationTypeID") ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE TABLE "ExcludedLocations" ( + "LocationID" INTEGER NOT NULL, + CONSTRAINT excludedlocations_pk PRIMARY KEY ("LocationID") +); +CREATE TABLE "DesignTablesSettings" ( + "LocationID" INTEGER NOT NULL, + "CalculationTypeID" INTEGER NOT NULL, + "Min" REAL NOT NULL, + "Max" REAL NOT NULL, + CONSTRAINT designtablessettings_pk PRIMARY KEY ("LocationID", "CalculationTypeID"), + CONSTRAINT calculationtypes_designtablessettings_fk FOREIGN KEY ("CalculationTypeID") REFERENCES CalculationTypes ("CalculationTypeID") ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE TABLE "CalculationTypes" ( + "CalculationTypeID" INTEGER NOT NULL, + "CalculationType" INTEGER NOT NULL, + CONSTRAINT calculationtypes_pk PRIMARY KEY ("CalculationTypeID") +); +CREATE TABLE "ExcludedLocationsPreprocessor" ( + "LocationID" INTEGER NOT NULL, + CONSTRAINT excludedPreprocessorLocations_pk PRIMARY KEY ("LocationID") +); +CREATE TABLE "PreprocessorSettings" ( + "LocationID" INTEGER NOT NULL, + "MinValueRunPreprocessor" REAL NOT NULL, + "MaxValueRunPreprocessor" REAL NOT NULL, + CONSTRAINT preprocessorSettingsLocatoins_pk PRIMARY KEY ("LocationID") +); +COMMIT; Index: Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj =================================================================== diff -u -reb9d359e7bedaf1748daa626087432fde5b196d9 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision eb9d359e7bedaf1748daa626087432fde5b196d9) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Ringtoets.Common.IO.csproj (.../Ringtoets.Common.IO.csproj) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -58,6 +58,7 @@ + @@ -251,6 +252,7 @@ + Index: Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs =================================================================== diff -u -re2892835ceb1c916be9a9122ba372858f20b981a -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision e2892835ceb1c916be9a9122ba372858f20b981a) +++ Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -61,7 +61,8 @@ CalculationServiceHelper.LogValidationBegin(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { CalculationServiceHelper.LogMessagesAsError(Resources.Hydraulic_boundary_database_connection_failed_0_, Index: Ringtoets/Common/src/Ringtoets.Common.Service/HydraulicBoundaryDatabaseConnectionValidator.cs =================================================================== diff -u -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.Service/HydraulicBoundaryDatabaseConnectionValidator.cs (.../HydraulicBoundaryDatabaseConnectionValidator.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) +++ Ringtoets/Common/src/Ringtoets.Common.Service/HydraulicBoundaryDatabaseConnectionValidator.cs (.../HydraulicBoundaryDatabaseConnectionValidator.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -42,7 +42,8 @@ return Resources.HydraulicBoundaryDatabaseConnectionValidator_No_hydraulic_boundary_database_imported; } - string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(database.FilePath); + string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(database.FilePath, + database.EffectivePreprocessorDirectory()); if (!string.IsNullOrEmpty(validationProblem)) { return string.Format(Resources.Hydraulic_boundary_database_connection_failed_0_, Index: Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs =================================================================== diff -u -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs (.../StructuresCalculationServiceBase.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Structures/StructuresCalculationServiceBase.cs (.../StructuresCalculationServiceBase.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -339,13 +339,15 @@ { var validationResults = new List(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(assessmentSection.HydraulicBoundaryDatabase.FilePath); + string preprocessorDirectory = assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(assessmentSection.HydraulicBoundaryDatabase.FilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { validationResults.Add(databaseFilePathValidationProblem); } - string preprocessorDirectoryValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePreprocessorDirectory(assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory()); + string preprocessorDirectoryValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePreprocessorDirectory(preprocessorDirectory); if (!string.IsNullOrEmpty(preprocessorDirectoryValidationProblem)) { validationResults.Add(preprocessorDirectoryValidationProblem); Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs =================================================================== diff -u -re2892835ceb1c916be9a9122ba372858f20b981a -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision e2892835ceb1c916be9a9122ba372858f20b981a) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -62,7 +62,8 @@ CalculationServiceHelper.LogValidationBegin(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { CalculationServiceHelper.LogMessagesAsError(Resources.Hydraulic_boundary_database_connection_failed_0_, Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs =================================================================== diff -u -r81e1fdca83c2788db4466fca8055b3a5cea16171 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 81e1fdca83c2788db4466fca8055b3a5cea16171) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -186,28 +186,6 @@ } [Test] - public void Import_ExistingFileWithInvalidSettingsDatabaseSchema_ThrowCriticalFileReadException() - { - // Setup - var mocks = new MockRepository(); - var assessmentSection = mocks.StrictMock(); - mocks.ReplayAll(); - - string validFilePath = Path.Combine(testDataPath, "invalidSettingsSchema", "complete.sqlite"); - - // Call - TestDelegate test = () => importer.Import(assessmentSection, validFilePath); - - // Assert - string expectedMessage = new FileReaderErrorMessageBuilder(validFilePath).Build( - "Kon het rekeninstellingen bestand niet openen. De rekeninstellingen database heeft niet het juiste schema."); - var exception = Assert.Throws(test); - Assert.AreEqual(expectedMessage, exception.Message); - - mocks.VerifyAll(); - } - - [Test] public void Import_ValidFileWithCanUsePreprocessorFalse_DataImportedAndAssessmentSectionNotified() { // Setup Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs =================================================================== diff -u -r09c47b676fdd8a2a9f891f226e1c2a676a3dec08 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs (.../HydraRingSettingsDatabaseReaderTest.cs) (revision 09c47b676fdd8a2a9f891f226e1c2a676a3dec08) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseReaderTest.cs (.../HydraRingSettingsDatabaseReaderTest.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -30,7 +30,6 @@ using Ringtoets.Common.IO.HydraRing; using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Settings; -using Ringtoets.HydraRing.Calculation.Readers; namespace Ringtoets.Common.IO.Test.HydraRing { @@ -67,18 +66,6 @@ } [Test] - public void Validate_InvalidSchema_ReturnsFalseFileNotLocked() - { - // Call - TestDelegate test = () => new HydraRingSettingsDatabaseReader(invalidSchemaDatabasePath); - - // Assert - string message = Assert.Throws(test).Message; - Assert.AreEqual("De rekeninstellingen database heeft niet het juiste schema.", message); - Assert.IsTrue(TestHelper.CanOpenFileForWrite(invalidSchemaDatabasePath)); - } - - [Test] [TestCase(-1)] [TestCase(12)] [TestCase(15)] Fisheye: Tag eb9d359e7bedaf1748daa626087432fde5b196d9 refers to a dead (removed) revision in file `Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraRingSettingsDatabaseValidatorTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraulicBoundaryDatabaseHelperTest.cs =================================================================== diff -u -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraulicBoundaryDatabaseHelperTest.cs (.../HydraulicBoundaryDatabaseHelperTest.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/HydraRing/HydraulicBoundaryDatabaseHelperTest.cs (.../HydraulicBoundaryDatabaseHelperTest.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -42,7 +42,7 @@ string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath, ""); // Assert Assert.IsNull(result); @@ -56,7 +56,7 @@ string filePath = Path.Combine(testDataPath, nonexistingSqlite); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(filePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(filePath, ""); // Assert StringAssert.StartsWith($"Fout bij het lezen van bestand '{filePath}':", result); @@ -70,7 +70,7 @@ invalidPath = invalidPath.Replace('c', Path.GetInvalidPathChars()[0]); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(invalidPath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(invalidPath, testDataPath); // Assert StringAssert.StartsWith($"Fout bij het lezen van bestand '{invalidPath}':", result); @@ -83,7 +83,7 @@ string filePath = Path.Combine(testDataPath, "/"); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(filePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(filePath, testDataPath); // Assert StringAssert.StartsWith($"Fout bij het lezen van bestand '{filePath}':", result); @@ -96,7 +96,7 @@ string validFilePath = Path.Combine(testDataPath, "withoutHLCD", "empty.sqlite"); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath, testDataPath); // Assert StringAssert.StartsWith($"Fout bij het lezen van bestand '{validFilePath}':", result); @@ -109,7 +109,7 @@ string validFilePath = Path.Combine(testDataPath, "withoutSettings", "empty.sqlite"); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath, testDataPath); // Assert StringAssert.StartsWith($"Fout bij het lezen van bestand '{validFilePath}':", result); @@ -122,7 +122,7 @@ string validFilePath = Path.Combine(testDataPath, "invalidSettingsSchema", "complete.sqlite"); // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(validFilePath, testDataPath); // Assert Assert.AreEqual("De rekeninstellingen database heeft niet het juiste schema.", result); @@ -138,7 +138,7 @@ "\\followedbythefile"; // Call - string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(invalidFilePath); + string result = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(invalidFilePath, testDataPath); // Assert Assert.AreEqual($"Het opgegeven bestandspad ({invalidFilePath}) is niet geldig.", result); Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj =================================================================== diff -u -reb9d359e7bedaf1748daa626087432fde5b196d9 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision eb9d359e7bedaf1748daa626087432fde5b196d9) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/Ringtoets.Common.IO.Test.csproj (.../Ringtoets.Common.IO.Test.csproj) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -59,6 +59,7 @@ + Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/HydraRingSettingsDatabaseValidator/invalid-settings-schema.config.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/HydraRingSettingsDatabaseValidator/withPreprocessor.config.sqlite =================================================================== diff -u Binary files differ Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/test-data/HydraRingSettingsDatabaseValidator/withoutPreprocessor.config.sqlite =================================================================== diff -u -r3e3b756b315a775864f633495e60c43503e66864 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 Binary files differ Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/GuiServices/DuneLocationCalculationGuiService.cs =================================================================== diff -u -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/GuiServices/DuneLocationCalculationGuiService.cs (.../DuneLocationCalculationGuiService.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Forms/GuiServices/DuneLocationCalculationGuiService.cs (.../DuneLocationCalculationGuiService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -77,7 +77,8 @@ throw new ArgumentNullException(nameof(locations)); } - string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); + string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(validationProblem)) { log.ErrorFormat(RingtoetsCommonFormsResources.CalculateHydraulicBoundaryLocation_Start_calculation_failed_0_, Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs =================================================================== diff -u -re2892835ceb1c916be9a9122ba372858f20b981a -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs (.../DuneErosionBoundaryCalculationService.cs) (revision e2892835ceb1c916be9a9122ba372858f20b981a) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionBoundaryCalculationService.cs (.../DuneErosionBoundaryCalculationService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -60,7 +60,8 @@ CalculationServiceHelper.LogValidationBegin(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { CalculationServiceHelper.LogMessagesAsError(RingtoetsCommonServiceResources.Hydraulic_boundary_database_connection_failed_0_, Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs =================================================================== diff -u -re14ae58fe3639b6850b6e0bece9bbaa8a6267fdc -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision e14ae58fe3639b6850b6e0bece9bbaa8a6267fdc) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -772,13 +772,15 @@ { var validationResults = new List(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(assessmentSection.HydraulicBoundaryDatabase.FilePath); + string preprocessorDirectory = assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory(); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(assessmentSection.HydraulicBoundaryDatabase.FilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { validationResults.Add(databaseFilePathValidationProblem); } - string preprocessorDirectoryValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePreprocessorDirectory(assessmentSection.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory()); + string preprocessorDirectoryValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePreprocessorDirectory(preprocessorDirectory); if (!string.IsNullOrEmpty(preprocessorDirectoryValidationProblem)) { validationResults.Add(preprocessorDirectoryValidationProblem); Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -r6b8f6422c0a6f96f8e563bb6afb82a7a192142b4 -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 6b8f6422c0a6f96f8e563bb6afb82a7a192142b4) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -839,8 +839,8 @@ IEnumerable sectionsWithDatabase = ringtoetsProject.AssessmentSections.Where(i => i.HydraulicBoundaryDatabase != null); foreach (AssessmentSection section in sectionsWithDatabase) { - string selectedFile = section.HydraulicBoundaryDatabase.FilePath; - string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(selectedFile); + string validationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(section.HydraulicBoundaryDatabase.FilePath, + section.HydraulicBoundaryDatabase.EffectivePreprocessorDirectory()); if (validationProblem != null) { log.WarnFormat( Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs =================================================================== diff -u -rf8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs (.../HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs) (revision f8c28b3b04cdabb62ea37772efcb1f4ebbbf2b9e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs (.../HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -470,55 +470,6 @@ [Test] [Apartment(ApartmentState.STA)] - public void GivenNoFilePathIsSet_WhenOpeneningValidFileWithInvalidSettingsDatabaseFromContextMenu_ThenPathWillNotBeSetAndLogMessageAdded() - { - // Given - string testFile = Path.Combine(testDataPathInvalidSettings, "HRD dutch coast south.sqlite"); - - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; - - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); - - using (var treeViewControl = new TreeViewControl()) - using (var plugin = new RingtoetsPlugin()) - { - var mainWindow = mocks.Stub(); - - var gui = mocks.Stub(); - gui.Stub(g => g.MainWindow).Return(mainWindow); - gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); - gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); - gui.Stub(cmp => cmp.Get(hydraulicBoundaryDatabaseContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - mocks.ReplayAll(); - - DialogBoxHandler = (name, wnd) => - { - var tester = new OpenFileDialogTester(wnd); - tester.OpenFile(testFile); - }; - - TreeNodeInfo info = GetInfo(plugin); - plugin.Gui = gui; - - using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(hydraulicBoundaryDatabaseContext, null, treeViewControl)) - { - // When - Action action = () => contextMenuStrip.Items[contextMenuImportHydraulicBoundaryDatabaseIndex].PerformClick(); - - // Then - string expectedMessage = - $"Fout bij het lezen van bestand '{testFile}': kon het rekeninstellingen bestand niet openen. De rekeninstellingen database heeft niet het juiste schema."; - TestHelper.AssertLogMessageIsGenerated(action, expectedMessage); - - Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); - } - } - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] public void GivenFilePathIsSet_WhenOpeningSameFileFromContextMenu_ThenCalculationsWillNotBeClearedAndNoNotifyObservers() { // Given Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs =================================================================== diff -u -re2892835ceb1c916be9a9122ba372858f20b981a -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision e2892835ceb1c916be9a9122ba372858f20b981a) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) @@ -205,7 +205,8 @@ { var validationResults = new List(); - string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath); + string databaseFilePathValidationProblem = HydraulicBoundaryDatabaseHelper.ValidatePathForCalculation(hydraulicBoundaryDatabaseFilePath, + preprocessorDirectory); if (!string.IsNullOrEmpty(databaseFilePathValidationProblem)) { validationResults.Add(databaseFilePathValidationProblem);