Index: Riskeer/Integration/src/Riskeer.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs =================================================================== diff -u -r187ac427d51e9876689ea12c5d5b111b52342482 -r2cfb940b86cd22d9aafbd1716d86d55425734b97 --- Riskeer/Integration/src/Riskeer.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 187ac427d51e9876689ea12c5d5b111b52342482) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Importers/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 2cfb940b86cd22d9aafbd1716d86d55425734b97) @@ -69,26 +69,17 @@ protected override bool OnImport() { - if (Path.GetDirectoryName(ImportTarget.HydraulicLocationConfigurationDatabase.FilePath) != Path.GetDirectoryName(FilePath)) + if (!IsHrdFileInSameFolderAsHlcdFile() || !IsNewHrdFile()) { - Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicBoundaryDatabaseImporter_Hrd_file_not_in_same_folder_as_hlcd_file)); return false; } - if (ImportTarget.HydraulicBoundaryDatabases.Any(hbd => hbd.FilePath == FilePath)) + ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase = TryReadHydraulicBoundaryDatabase(); + if (readHydraulicBoundaryDatabase == null) { - Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicBoundaryDatabaseImporter_Hrd_file_already_added)); return false; } - ReadResult readHydraulicBoundaryDatabaseResult = ReadHydraulicBoundaryDatabase(); - if (readHydraulicBoundaryDatabaseResult.CriticalErrorOccurred || Canceled) - { - return false; - } - - ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase = readHydraulicBoundaryDatabaseResult.Items.Single(); - string hlcdFilePath = ImportTarget.HydraulicLocationConfigurationDatabase.FilePath; ReadResult readHydraulicLocationConfigurationDatabaseResult = ReadHydraulicLocationConfigurationDatabase( @@ -100,7 +91,7 @@ } ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = readHydraulicLocationConfigurationDatabaseResult.Items.Single(); - + bool usePreprocessorClosure = readHydraulicLocationConfigurationDatabase.ReadTracks.First(rt => rt.TrackId == readHydraulicBoundaryDatabase.TrackId).UsePreprocessorClosure; if (usePreprocessorClosure && !File.Exists(HydraulicBoundaryDataHelper.GetPreprocessorClosureFilePath(hlcdFilePath))) { @@ -120,7 +111,7 @@ return true; } - + protected override void LogImportCanceledMessage() { Log.Info(Resources.HydraulicBoundaryDatabaseImporter_ProgressText_Import_canceled_No_data_changed); @@ -138,9 +129,44 @@ } } + private bool IsHrdFileInSameFolderAsHlcdFile() + { + if (Path.GetDirectoryName(ImportTarget.HydraulicLocationConfigurationDatabase.FilePath) == Path.GetDirectoryName(FilePath)) + { + return true; + } + + Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicBoundaryDatabaseImporter_Hrd_file_not_in_same_folder_as_hlcd_file)); + return false; + } + + private bool IsNewHrdFile() + { + if (ImportTarget.HydraulicBoundaryDatabases.All(hbd => hbd.FilePath != FilePath)) + { + return true; + } + + Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicBoundaryDatabaseImporter_Hrd_file_already_added)); + return false; + } + + private ReadHydraulicBoundaryDatabase TryReadHydraulicBoundaryDatabase() + { + ReadResult readHydraulicBoundaryDatabaseResult = ReadHydraulicBoundaryDatabase(); + + if (readHydraulicBoundaryDatabaseResult.CriticalErrorOccurred || Canceled) + { + return null; + } + + return readHydraulicBoundaryDatabaseResult.Items.Single(); + } + private ReadResult ReadHydraulicBoundaryDatabase() { NotifyProgress(Resources.HydraulicBoundaryDatabaseImporter_ProgressText_Reading_Hrd_file, 1, numberOfSteps); + try { using (var reader = new HydraulicBoundaryDatabaseReader(FilePath))