Index: Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs =================================================================== diff -u -rfc204f9f1958c10c27c00e43fc2dba43565f7b35 -r5e9837463c9e1f6fcf8404b943e374650586f99e --- Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs (.../CalculationConfigurationImporter.cs) (revision fc204f9f1958c10c27c00e43fc2dba43565f7b35) +++ Ringtoets/Common/src/Ringtoets.Common.IO/FileImporters/CalculationConfigurationImporter.cs (.../CalculationConfigurationImporter.cs) (revision 5e9837463c9e1f6fcf8404b943e374650586f99e) @@ -20,10 +20,13 @@ // All rights reserved. using System; +using System.Collections.Generic; using Core.Common.Base.IO; +using Core.Common.IO.Readers; using log4net; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.IO.Properties; +using Ringtoets.Common.IO.Readers; namespace Ringtoets.Common.IO.FileImporters { @@ -49,5 +52,51 @@ { log.Info(Resources.CalculationConfigurationImporter_LogImportCanceledMessage_Import_canceled_no_data_read); } + + protected override bool OnImport() + { + NotifyProgress(Resources.CalculationConfigurationImporter_ProgressText_Reading_configuration, 1, 3); + + ReadResult readResult = ReadConfiguration(); + if (readResult.CriticalErrorOccurred || Canceled) + { + return false; + } + + NotifyProgress(Resources.CalculationConfigurationImporter_ProgressText_Validating_imported_data, 2, 3); + + var validCalculationItems = new List(); + + foreach (IReadConfigurationItem readItem in readResult.Items) + { + if (Canceled) + { + return false; + } + + ICalculationBase processedItem = ProcessReadItem(readItem); + if (processedItem != null) + { + validCalculationItems.Add(processedItem); + } + } + + NotifyProgress(Resources.Importer_ProgressText_Adding_imported_data_to_data_model, 3, 3); + AddItemsToModel(validCalculationItems); + + return true; + } + + protected abstract ICalculationBase ProcessReadItem(IReadConfigurationItem readItem); + + protected abstract ReadResult ReadConfiguration(); + + private void AddItemsToModel(IEnumerable validCalculationItems) + { + foreach (ICalculationBase validCalculationItem in validCalculationItems) + { + ImportTarget.Children.Add(validCalculationItem); + } + } } } \ No newline at end of file