Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs =================================================================== diff -u -raf0e6f596d42879533b372801ab6620959e9708f -r96c0c7582ebd622c7808fa4a8dbd99ca249a9512 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision af0e6f596d42879533b372801ab6620959e9708f) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 96c0c7582ebd622c7808fa4a8dbd99ca249a9512) @@ -21,8 +21,10 @@ using System; using Core.Common.Base.IO; -using Ringtoets.Common.Data.AssessmentSection; +using Core.Common.IO.Readers; using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.IO.FileImporters; +using Ringtoets.HydraRing.IO.HydraulicBoundaryDatabase; using Ringtoets.Integration.IO.Handlers; namespace Ringtoets.Integration.IO.Importers @@ -60,7 +62,38 @@ protected override bool OnImport() { - throw new System.NotImplementedException(); + ReadResult readResult = ReadHydraulicBoundaryDatabase(); + + return !readResult.CriticalErrorOccurred; } + + private ReadResult ReadHydraulicBoundaryDatabase() + { + try + { + using (HydraulicBoundaryDatabaseReader reader = new HydraulicBoundaryDatabaseReader(FilePath)) + { + ReadResult readResult = ReadHydraulicBoundaryDatabase(reader); + + return readResult; + } + } + catch (CriticalFileReadException e) + { + return HandleCriticalFileReadError(e); + } + } + + private ReadResult ReadHydraulicBoundaryDatabase(HydraulicBoundaryDatabaseReader reader) + { + return new ReadResult(false); + } + + private ReadResult HandleCriticalFileReadError(Exception e) + { + string errorMessage = $"{e.Message} {Environment.NewLine}Er is geen hydraulische belastingen database gekoppeld."; + Log.Error(errorMessage); + return new ReadResult(true); + } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj =================================================================== diff -u -re0ef595a605d8f3c5ed9abf7b5e1b149976bb892 -r96c0c7582ebd622c7808fa4a8dbd99ca249a9512 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj (.../Ringtoets.Integration.IO.csproj) (revision e0ef595a605d8f3c5ed9abf7b5e1b149976bb892) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Ringtoets.Integration.IO.csproj (.../Ringtoets.Integration.IO.csproj) (revision 96c0c7582ebd622c7808fa4a8dbd99ca249a9512) @@ -184,6 +184,11 @@ Ringtoets.HeightStructures.Data False + + {B69D5B6C-6E14-4FA9-9EBC-8F97678CDB70} + Ringtoets.HydraRing.IO + False + {83d6b73e-91d5-46b0-9218-955da1f75f7c} Ringtoets.MacroStabilityInwards.Data Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs =================================================================== diff -u -raf0e6f596d42879533b372801ab6620959e9708f -r96c0c7582ebd622c7808fa4a8dbd99ca249a9512 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision af0e6f596d42879533b372801ab6620959e9708f) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Importers/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 96c0c7582ebd622c7808fa4a8dbd99ca249a9512) @@ -20,7 +20,9 @@ // All rights reserved. using System; +using System.IO; using Core.Common.Base.IO; +using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.Hydraulics; @@ -57,5 +59,53 @@ Assert.IsInstanceOf>(importer); mocks.VerifyAll(); } + + [Test] + public void Import_FilePathIsDirectory_CancelImportWithErrorMessage() + { + // Setup + var mocks = new MockRepository(); + var handler = mocks.StrictMock(); + mocks.ReplayAll(); + + string path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.IO, Path.DirectorySeparatorChar.ToString()); + + var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path); + + // Call + var importSuccessful = true; + Action call = () => importSuccessful = importer.Import(); + + // Assert + string expectedMessage = $@"Fout bij het lezen van bestand '{path}': bestandspad mag niet verwijzen naar een lege bestandsnaam. " + + $"{Environment.NewLine}Er is geen hydraulische belastingen database gekoppeld."; + TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); + Assert.IsFalse(importSuccessful); + mocks.VerifyAll(); + } + + [Test] + public void Import_FileDoesNotExist_CancelImportWithErrorMessage() + { + // Setup + var mocks = new MockRepository(); + var handler = mocks.StrictMock(); + mocks.ReplayAll(); + + string path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.IO, "I_dont_exist"); + + var importer = new HydraulicBoundaryDatabaseImporter(new HydraulicBoundaryDatabase(), handler, path); + + // Call + var importSuccessful = true; + Action call = () => importSuccessful = importer.Import(); + + // Assert + string expectedMessage = $@"Fout bij het lezen van bestand '{path}': het bestand bestaat niet. " + + $"{Environment.NewLine}Er is geen hydraulische belastingen database gekoppeld."; + TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); + Assert.IsFalse(importSuccessful); + mocks.VerifyAll(); + } } } \ No newline at end of file