Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs =================================================================== diff -u -r8e4f3d24c6dc2bb0536a5585358732bb74b7f9bf -r72ef8cf380c5528ec1d61dc62b8ea61e8920a361 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs (.../HydraulicLocationConfigurationDatabaseReader.cs) (revision 8e4f3d24c6dc2bb0536a5585358732bb74b7f9bf) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs (.../HydraulicLocationConfigurationDatabaseReader.cs) (revision 72ef8cf380c5528ec1d61dc62b8ea61e8920a361) @@ -66,8 +66,8 @@ { bool isScenarioInformationPresent = IsScenarioInformationTablePresent(); IEnumerable configurationSettings = - isScenarioInformationPresent - ? GetConfigurationSettings() + isScenarioInformationPresent + ? GetConfigurationSettings() : Enumerable.Empty(); return new ReadHydraulicLocationConfigurationDatabase(GetLocationIdsByTrackId(trackId), @@ -167,20 +167,35 @@ /// Determines whether the table related to the scenario information is present in the database. /// /// true if the table is present; false otherwise. - /// Thrown when the database query failed. - /// Thrown when the information could not be read from the database file.. + /// Thrown when the information could not be read from the database file. + /// Thrown when the database returned incorrect values for + /// required properties. private bool IsScenarioInformationTablePresent() { - const string validationQuery = "SELECT COUNT() = 1 AS IsScenarioInformationPresent FROM sqlite_master WHERE type = 'table' AND name='ScenarioInformation'"; - using (IDataReader dataReader = CreateDataReader(validationQuery)) + string query = HydraulicLocationConfigurationDatabaseQueryBuilder.GetIsScenarioInformationPresentQuery(); + + try { - if (dataReader.Read()) + using (IDataReader dataReader = CreateDataReader(query)) { - return Convert.ToBoolean(dataReader["IsScenarioInformationPresent"]); - } + if (dataReader.Read()) + { + return Convert.ToBoolean(dataReader[ScenarioInformationTableDefinitions.IsScenarioInformationPresent]); + } + string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); + throw new CriticalFileReadException(message); + } + } + catch (SQLiteException exception) + { + string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicLocationConfigurationDatabaseReader_Critical_Unexpected_Exception); + throw new CriticalFileReadException(message, exception); + } + catch (InvalidCastException exception) + { string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); - throw new CriticalFileReadException(message); + throw new LineParseException(message, exception); } } @@ -193,7 +208,7 @@ /// required properties. private IEnumerable GetConfigurationSettingsFromDatabase() { - const string query = "SELECT * FROM ScenarioInformation"; + string query = HydraulicLocationConfigurationDatabaseQueryBuilder.GetScenarioInformationQuery(); var readSettings = new List(); using (IDataReader dataReader = CreateDataReader(query)) { @@ -211,22 +226,21 @@ /// /// The which is used to read the data. /// The read . - /// Thrown when the settings could not be read. /// Thrown when the database returned incorrect values for /// required properties. private ReadHydraulicLocationConfigurationDatabaseSettings ReadSetting(IDataReader reader) { try { - var scenarioName = reader.Read("ScenarioName"); - var year = reader.Read("Year"); - var scope = reader.Read("Scope"); - var seaLevel = reader.Read("SeaLevel"); - var riverDischarge = reader.Read("RiverDischarge"); - var lakeLevel = reader.Read("LakeLevel"); - var windDirection = reader.Read("WindDirection"); - var windSpeed = reader.Read("WindSpeed"); - var comment = reader.Read("Comment"); + var scenarioName = reader.Read(ScenarioInformationTableDefinitions.ScenarioName); + var year = reader.Read(ScenarioInformationTableDefinitions.Year); + var scope = reader.Read(ScenarioInformationTableDefinitions.Scope); + var seaLevel = reader.Read(ScenarioInformationTableDefinitions.SeaLevel); + var riverDischarge = reader.Read(ScenarioInformationTableDefinitions.RiverDischarge); + var lakeLevel = reader.Read(ScenarioInformationTableDefinitions.LakeLevel); + var windDirection = reader.Read(ScenarioInformationTableDefinitions.WindDirection); + var windSpeed = reader.Read(ScenarioInformationTableDefinitions.WindSpeed); + var comment = reader.Read(ScenarioInformationTableDefinitions.Comment); return new ReadHydraulicLocationConfigurationDatabaseSettings(scenarioName, year, scope, seaLevel, riverDischarge, lakeLevel, @@ -237,11 +251,6 @@ string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); throw new LineParseException(message, e); } - catch (ArgumentException e) - { - string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); - throw new CriticalFileReadException(message, e); - } } } } \ No newline at end of file