Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs =================================================================== diff -u -rfab2798bdc0feb4454b6384aefbe9db3f9a294fb -r950036d17f885045ddc733fb05b1bb8719ca94d8 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs (.../PipingSoilProfileReader.cs) (revision fab2798bdc0feb4454b6384aefbe9db3f9a294fb) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs (.../PipingSoilProfileReader.cs) (revision 950036d17f885045ddc733fb05b1bb8719ca94d8) @@ -37,7 +37,6 @@ /// public class PipingSoilProfileReader : SqLiteDatabaseReaderBase, IRowBasedDatabaseReader { - private const string databaseRequiredVersion = "15.0.5.0"; private const string pipingMechanismName = "Piping"; private const string mechanismParameterName = "mechanism"; @@ -58,6 +57,18 @@ /// public PipingSoilProfileReader(string databaseFilePath) : base(databaseFilePath) { + using (var versionReader = new SoilDatabaseVersionReader(databaseFilePath)) + { + try + { + versionReader.VerifyVersion(); + } + catch (CriticalFileReadException) + { + CloseConnection(); + throw; + } + } InitializeReader(); } @@ -193,7 +204,6 @@ try { PrepareReader(); - CheckVersion(); GetCount(); } catch (SQLiteException e) @@ -213,11 +223,6 @@ /// A query could not be executed on the database schema. private void PrepareReader() { - string versionQuery = string.Format( - "SELECT Value FROM _Metadata WHERE Key = 'VERSION' AND Value = '{0}';", - databaseRequiredVersion - ); - string countQuery = string.Format(string.Join( " ", "SELECT", @@ -346,30 +351,14 @@ layer2DPropertiesQuery, mechanismParameterName); - dataReader = CreateDataReader(versionQuery + countQuery + query2D + query1D, new SQLiteParameter + dataReader = CreateDataReader(countQuery + query2D + query1D, new SQLiteParameter { DbType = DbType.String, Value = pipingMechanismName, ParameterName = mechanismParameterName }); } - /// - /// Checks the version read from the metadata table against the . - /// - /// Thrown when versions don't match. - private void CheckVersion() - { - if (!dataReader.HasRows) - { - Dispose(); - throw new CriticalFileReadException(string.Format( - Resources.PipingSoilProfileReader_Database_incorrect_version_requires_Version_0_, - databaseRequiredVersion)); - } - dataReader.NextResult(); - } - private void GetCount() { dataReader.Read(); Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilDatabaseVersionReader.cs =================================================================== diff -u -r0415d97c8733babb1a31bc11de23ee4b0c5038b6 -r950036d17f885045ddc733fb05b1bb8719ca94d8 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilDatabaseVersionReader.cs (.../SoilDatabaseVersionReader.cs) (revision 0415d97c8733babb1a31bc11de23ee4b0c5038b6) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/SoilDatabaseVersionReader.cs (.../SoilDatabaseVersionReader.cs) (revision 950036d17f885045ddc733fb05b1bb8719ca94d8) @@ -81,7 +81,7 @@ } catch (SQLiteException exception) { - var message = new FileReaderErrorMessageBuilder(Path).Build(Resources.StochasticSoilModelDatabaseReader_failed_to_read_database); + var message = new FileReaderErrorMessageBuilder(Path).Build(Resources.PipingSoilProfileReader_Critical_Unexpected_value_on_column); throw new CriticalFileReadException(message, exception); } } Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/PipingSoilProfileReaderTest.cs =================================================================== diff -u -r0415d97c8733babb1a31bc11de23ee4b0c5038b6 -r950036d17f885045ddc733fb05b1bb8719ca94d8 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/PipingSoilProfileReaderTest.cs (.../PipingSoilProfileReaderTest.cs) (revision 0415d97c8733babb1a31bc11de23ee4b0c5038b6) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/PipingSoilProfileReaderTest.cs (.../PipingSoilProfileReaderTest.cs) (revision 950036d17f885045ddc733fb05b1bb8719ca94d8) @@ -79,6 +79,7 @@ { // Setup var dbFile = Path.Combine(testDataPath, dbName); + var expectedMessage = new FileReaderErrorMessageBuilder(dbFile).Build(String.Format(Resources.PipingSoilProfileReader_Critical_Unexpected_value_on_column, dbName)); // Precondition Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile), "Precondition: file can be opened for edits."); @@ -87,8 +88,7 @@ TestDelegate test = () => { using (new PipingSoilProfileReader(dbFile)) {} }; // Assert - var exception = Assert.Throws(test); - var expectedMessage = new FileReaderErrorMessageBuilder(dbFile).Build(String.Format(Resources.Error_SoilProfile_read_from_database, dbName)); + CriticalFileReadException exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); } Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/StochasticSoilModelDatabaseReaderTest.cs =================================================================== diff -u -r0415d97c8733babb1a31bc11de23ee4b0c5038b6 -r950036d17f885045ddc733fb05b1bb8719ca94d8 --- Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/StochasticSoilModelDatabaseReaderTest.cs (.../StochasticSoilModelDatabaseReaderTest.cs) (revision 0415d97c8733babb1a31bc11de23ee4b0c5038b6) +++ Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/SoilProfile/StochasticSoilModelDatabaseReaderTest.cs (.../StochasticSoilModelDatabaseReaderTest.cs) (revision 950036d17f885045ddc733fb05b1bb8719ca94d8) @@ -81,7 +81,7 @@ // Setup var dbFile = Path.Combine(testDataPath, dbName); var expectedMessage = new FileReaderErrorMessageBuilder(dbFile). - Build(String.Format(Resources.StochasticSoilModelDatabaseReader_failed_to_read_database, dbName)); + Build(String.Format(Resources.PipingSoilProfileReader_Critical_Unexpected_value_on_column, dbName)); // Precondition Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile), "Precondition: file can be opened for edits."); @@ -90,7 +90,7 @@ TestDelegate test = () => new StochasticSoilModelDatabaseReader(dbFile).Dispose(); // Assert - var exception = Assert.Throws(test); + CriticalFileReadException exception = Assert.Throws(test); Assert.AreEqual(expectedMessage, exception.Message); Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile)); } Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs =================================================================== diff -u -re04155c0cc0efa8bbd13e0a82cb8643711a2dfd6 -r950036d17f885045ddc733fb05b1bb8719ca94d8 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs (.../PipingSoilProfilesImporterTest.cs) (revision e04155c0cc0efa8bbd13e0a82cb8643711a2dfd6) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/PipingSoilProfilesImporterTest.cs (.../PipingSoilProfilesImporterTest.cs) (revision 950036d17f885045ddc733fb05b1bb8719ca94d8) @@ -250,7 +250,7 @@ Action call = () => importResult = importer.Import(observableSoilProfileList, corruptPath); // Assert - var internalErrorMessage = new FileReaderErrorMessageBuilder(corruptPath).Build(RingtoetsIOResources.Error_SoilProfile_read_from_database); + var internalErrorMessage = new FileReaderErrorMessageBuilder(corruptPath).Build(RingtoetsIOResources.PipingSoilProfileReader_Critical_Unexpected_value_on_column); var expectedLogMessage = string.Format(ApplicationResources.PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped, internalErrorMessage); TestHelper.AssertLogMessageIsGenerated(call, expectedLogMessage, 1);