Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundarySqLiteDatabaseReader.cs =================================================================== diff -u -r06f9145d8180df7fd26eac086a3f431c181e4d64 -r7d124cef8960a865cc8d7db24b3359f7ff9958be --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundarySqLiteDatabaseReader.cs (.../HydraulicBoundarySqLiteDatabaseReader.cs) (revision 06f9145d8180df7fd26eac086a3f431c181e4d64) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.IO/HydraulicBoundarySqLiteDatabaseReader.cs (.../HydraulicBoundarySqLiteDatabaseReader.cs) (revision 7d124cef8960a865cc8d7db24b3359f7ff9958be) @@ -37,7 +37,7 @@ /// public class HydraulicBoundarySqLiteDatabaseReader : SqLiteDatabaseReaderBase { - private SQLiteDataReader dataReader; + private SQLiteDataReader sqliteDataReader; /// /// Creates a new instance of , which will use @@ -68,9 +68,11 @@ /// required properties. public void PrepareReadLocation() { - var locationsQuery = HydraulicBoundaryDatabaseQueryBuilder.GetLocationsQuery(); + CloseDataReader(); + HasNext = false; - CreateDataReader(locationsQuery, new SQLiteParameter + var locationsQuery = HydraulicBoundaryDatabaseQueryBuilder.GetRelevantLocationsQuery(); + sqliteDataReader = CreateDataReader(locationsQuery, new SQLiteParameter { DbType = DbType.String }); @@ -99,59 +101,63 @@ /// /// Gets the database version from the metadata table. /// - /// + /// Thrown when the database returned incorrect values for + /// required properties. public string GetVersion() { - var versionQuery = HydraulicBoundaryDatabaseQueryBuilder.GetVersionQuery(); + string versionQuery = HydraulicBoundaryDatabaseQueryBuilder.GetVersionQuery(); var sqliteParameter = new SQLiteParameter { DbType = DbType.String }; - CreateDataReader(versionQuery, sqliteParameter); - - if (!dataReader.Read()) + using (var dataReader = CreateDataReader(versionQuery, sqliteParameter)) { - return ""; + if (!dataReader.Read()) + { + return ""; + } + try + { + return (string) dataReader[GeneralTableDefinitions.GeneratedVersion]; + } + catch (InvalidCastException e) + { + var message = new FileReaderErrorMessageBuilder(Path). + Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); + throw new LineParseException(message, e); + } } - try - { - return Read(HydraulicBoundaryDatabaseColumns.Version); - } - catch (InvalidCastException e) - { - var message = new FileReaderErrorMessageBuilder(Path). - Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); - throw new LineParseException(message, e); - } } /// /// Gets the amount of locations that can be read from the database. /// - /// + /// Thrown when the database returned incorrect values for + /// required properties. public int GetLocationCount() { - var locationCountQuery = HydraulicBoundaryDatabaseQueryBuilder.GetLocationsCountQuery(); + string locationCountQuery = HydraulicBoundaryDatabaseQueryBuilder.GetRelevantLocationsCountQuery(); var sqliteParameter = new SQLiteParameter { DbType = DbType.String }; - CreateDataReader(locationCountQuery, sqliteParameter); - - if (!dataReader.Read()) + using (var dataReader = CreateDataReader(locationCountQuery, sqliteParameter)) { - return 0; + if (!dataReader.Read()) + { + return 0; + } + try + { + return (int) (long) dataReader[HrdLocationsTableDefinitions.Count]; + } + catch (InvalidCastException e) + { + var message = new FileReaderErrorMessageBuilder(Path). + Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); + throw new LineParseException(message, e); + } } - try - { - return (int) Read(HydraulicBoundaryDatabaseColumns.LocationCount); - } - catch (InvalidCastException e) - { - var message = new FileReaderErrorMessageBuilder(Path). - Build(Resources.HydraulicBoundaryDatabaseReader_Critical_Unexpected_value_on_column); - throw new LineParseException(message, e); - } } public override void Dispose() @@ -165,7 +171,7 @@ /// private void MoveNext() { - HasNext = dataReader.Read() || (dataReader.NextResult() && dataReader.Read()); + HasNext = sqliteDataReader.Read() || (sqliteDataReader.NextResult() && sqliteDataReader.Read()); } /// @@ -178,7 +184,7 @@ /// . private T Read(string columnName) { - return (T) dataReader[columnName]; + return (T) sqliteDataReader[columnName]; } /// @@ -191,10 +197,10 @@ { try { - var id = Read(HydraulicBoundaryDatabaseColumns.LocationId); - var name = Read(HydraulicBoundaryDatabaseColumns.LocationName); - var x = Read(HydraulicBoundaryDatabaseColumns.LocationX); - var y = Read(HydraulicBoundaryDatabaseColumns.LocationY); + var id = Read(HrdLocationsTableDefinitions.HrdLocationId); + var name = Read(HrdLocationsTableDefinitions.Name); + var x = Read(HrdLocationsTableDefinitions.XCoordinate); + var y = Read(HrdLocationsTableDefinitions.YCoordinate); MoveNext(); return new HydraulicBoundaryLocation(id, name, x, y); } @@ -214,9 +220,8 @@ /// A query could not be executed on the database schema. /// /// - private void CreateDataReader(string queryString, params SQLiteParameter[] parameters) + private SQLiteDataReader CreateDataReader(string queryString, params SQLiteParameter[] parameters) { - CloseDataReader(); using (var query = new SQLiteCommand(Connection) { CommandText = queryString @@ -226,7 +231,7 @@ try { - dataReader = query.ExecuteReader(); + return query.ExecuteReader(); } catch (SQLiteException exception) { @@ -239,10 +244,9 @@ private void CloseDataReader() { - if (dataReader != null) + if (sqliteDataReader != null) { - dataReader.Dispose(); - + sqliteDataReader.Dispose(); } } }