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();
}
}
}