Index: Riskeer/HydraRing/src/Riskeer.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs =================================================================== diff -u -rc3e28395183857eb5c79a1c8744045bbe23721bb -r3c9c72303fa1f883f5696ae44453ade32cbaabf7 --- Riskeer/HydraRing/src/Riskeer.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs (.../HydraulicLocationConfigurationDatabaseReader.cs) (revision c3e28395183857eb5c79a1c8744045bbe23721bb) +++ Riskeer/HydraRing/src/Riskeer.HydraRing.IO/HydraulicLocationConfigurationDatabase/HydraulicLocationConfigurationDatabaseReader.cs (.../HydraulicLocationConfigurationDatabaseReader.cs) (revision 3c9c72303fa1f883f5696ae44453ade32cbaabf7) @@ -150,32 +150,36 @@ /// Thrown when the database query failed. /// Thrown when the database returned incorrect values for /// required properties. - private bool GetTracksFromDatabase() + private IEnumerable GetTracksFromDatabase() { string query = HydraulicLocationConfigurationDatabaseQueryBuilder.GetTracksQuery(); using (IDataReader dataReader = CreateDataReader(query)) { - DataTable schemaTable = dataReader.GetSchemaTable(); - DataColumn columnName = schemaTable.Columns[schemaTable.Columns.IndexOf("ColumnName")]; + bool hasUsePreprocessorClosureColumn = HasUsePreprocessorClosureColumn(dataReader); - if (schemaTable.Rows.Cast().All(row => row[columnName].ToString() != RegionsTableDefinitions.UsePreprocessorClosure)) + while (MoveNext(dataReader)) { - return false; + yield return new ReadTrack(dataReader.Read(TracksTableDefinitions.TrackId), + dataReader.Read(TracksTableDefinitions.HrdFileName), + hasUsePreprocessorClosureColumn && dataReader.Read(RegionsTableDefinitions.UsePreprocessorClosure)); } + } + } - if (MoveNext(dataReader)) - { - return Convert.ToBoolean(dataReader[RegionsTableDefinitions.UsePreprocessorClosure]); - } + /// + /// Determines whether the use preprocessor closure column is present in the database. + /// + /// true if the column is present; false otherwise. + /// Thrown when the information could not be read from the database file. + private static bool HasUsePreprocessorClosureColumn(IDataReader dataReader) + { + DataTable schemaTable = dataReader.GetSchemaTable(); + DataColumn columnName = schemaTable.Columns[schemaTable.Columns.IndexOf("ColumnName")]; - string message = new FileReaderErrorMessageBuilder(Path).Build(Resources.HydraulicLocationConfigurationDatabaseReader_Critical_Unexpected_Exception); - throw new CriticalFileReadException(message); - } + return schemaTable.Rows.Cast().Any(row => row[columnName].ToString() == RegionsTableDefinitions.UsePreprocessorClosure); } - - /// /// Gets the preprocessor closure indicator from the database. ///