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.
///