Index: Core/Common/src/Core.Common.Base/IO/FileImporterBase.cs =================================================================== diff -u -r3c17d0ec1a154f1c5a19601fd8885366a01b2daa -rd8361fdbbf28e4fb7e236be6fbf5f6a15045334b --- Core/Common/src/Core.Common.Base/IO/FileImporterBase.cs (.../FileImporterBase.cs) (revision 3c17d0ec1a154f1c5a19601fd8885366a01b2daa) +++ Core/Common/src/Core.Common.Base/IO/FileImporterBase.cs (.../FileImporterBase.cs) (revision d8361fdbbf28e4fb7e236be6fbf5f6a15045334b) @@ -20,8 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.Linq; using Core.Common.Base.Properties; using log4net; @@ -80,11 +78,6 @@ } else { - if (AffectedNonTargetObservableInstances.Any()) - { - throw new InvalidOperationException("There should be no affected items in case of a canceled or failed import."); - } - if (Canceled) { LogImportCanceledMessage(); @@ -111,11 +104,6 @@ { observableTarget.NotifyObservers(); } - - foreach (var changedObservableObject in AffectedNonTargetObservableInstances) - { - changedObservableObject.NotifyObservers(); - } } /// @@ -136,21 +124,6 @@ protected bool Canceled { get; private set; } /// - /// Gets all objects that have been affected during the call - /// that implement and which are not the targeted object - /// to import the data to. - /// - /// If no changes were made to the data model (for example during a cancel), - /// no elements should be returned by the implementer. - protected virtual IEnumerable AffectedNonTargetObservableInstances - { - get - { - return Enumerable.Empty(); - } - } - - /// /// This method logs messages when the importer is cancelled in a cancelable state. /// protected virtual void LogImportCanceledMessage() {} Index: Core/Common/test/Core.Common.Base.Test/IO/FileImporterBaseTest.cs =================================================================== diff -u -r3c17d0ec1a154f1c5a19601fd8885366a01b2daa -rd8361fdbbf28e4fb7e236be6fbf5f6a15045334b --- Core/Common/test/Core.Common.Base.Test/IO/FileImporterBaseTest.cs (.../FileImporterBaseTest.cs) (revision 3c17d0ec1a154f1c5a19601fd8885366a01b2daa) +++ Core/Common/test/Core.Common.Base.Test/IO/FileImporterBaseTest.cs (.../FileImporterBaseTest.cs) (revision d8361fdbbf28e4fb7e236be6fbf5f6a15045334b) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; using Core.Common.Base.IO; using Core.Common.TestUtil; using NUnit.Framework; @@ -88,47 +87,14 @@ } [Test] - public void DoPostImportUpdates_HasAffectedOtherObjects_NotifyObservers() - { - // Setup - var mocks = new MockRepository(); - var observableInstance = mocks.Stub(); - observableInstance.Expect(o => o.NotifyObservers()); - mocks.ReplayAll(); - - var importTarget = new object(); - - var simpleImporter = new SimpleFileImporter(importTarget) - { - AffectedNonTargetObservableInstancesOverride = new[] - { - observableInstance - } - }; - - // Call - simpleImporter.DoPostImportUpdates(); - - // Assert - mocks.VerifyAll(); // Assert NotifyObservers is called - } - - [Test] public void DoPostImportUpdates_ImportCancelled_NoNotifyObserversCalled() { // Setup var mocks = new MockRepository(); - var observableInstance = mocks.StrictMock(); var observableTarget = mocks.StrictMock(); mocks.ReplayAll(); - var simpleImporter = new SimpleFileImporter(observableTarget) - { - AffectedNonTargetObservableInstancesOverride = new[] - { - observableInstance - } - }; + var simpleImporter = new SimpleFileImporter(observableTarget); simpleImporter.Cancel(); // Call @@ -217,40 +183,6 @@ Assert.IsTrue(simpleImporter.LogCanceledMessageCalled); } - [Test] - [TestCase(true)] - [TestCase(false)] - public void Import_UnsuccesfulAndHasAffectedNonTargetObservableInstances_ThrowsInvalidOperationException(bool isImportCancelled) - { - // Setup - var mocks = new MockRepository(); - var observableInstance = mocks.StrictMock(); - var observableTarget = mocks.StrictMock(); - mocks.ReplayAll(); - - var simpleImporter = new SimpleFileImporter(observableTarget) - { - AffectedNonTargetObservableInstancesOverride = new[] - { - observableInstance - }, - ImportSuccesful = false - }; - - if (isImportCancelled) - { - simpleImporter.SetProgressChanged((description, step, steps) => simpleImporter.Cancel()); - } - - // Call - TestDelegate call = () => simpleImporter.Import(); - - // Assert - string message = Assert.Throws(call).Message; - const string expectedMessage = "There should be no affected items in case of a canceled or failed import."; - Assert.AreEqual(expectedMessage, message); - } - private class SimpleFileImporter : FileImporterBase { public SimpleFileImporter(T importTarget) : this("", importTarget) {} @@ -264,21 +196,11 @@ public bool LogCanceledMessageCalled { get; private set; } - public IObservable[] AffectedNonTargetObservableInstancesOverride { private get; set; } - public void TestNotifyProgress(string currentStepName, int currentStep, int totalNumberOfSteps) { NotifyProgress(currentStepName, currentStep, totalNumberOfSteps); } - protected override IEnumerable AffectedNonTargetObservableInstances - { - get - { - return AffectedNonTargetObservableInstancesOverride ?? base.AffectedNonTargetObservableInstances; - } - } - protected override bool OnImport() { TestNotifyProgress(string.Empty, 1, 1); Index: Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLines/ReferenceLineImporter.cs =================================================================== diff -u -r05a4b5f35f68fcccf274c23bddfc05a4a7731919 -rd8361fdbbf28e4fb7e236be6fbf5f6a15045334b --- Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLines/ReferenceLineImporter.cs (.../ReferenceLineImporter.cs) (revision 05a4b5f35f68fcccf274c23bddfc05a4a7731919) +++ Ringtoets/Common/src/Ringtoets.Common.IO/ReferenceLines/ReferenceLineImporter.cs (.../ReferenceLineImporter.cs) (revision d8361fdbbf28e4fb7e236be6fbf5f6a15045334b) @@ -85,15 +85,18 @@ public override void DoPostImportUpdates() { + if (Canceled) + { + return; + } + replacementHandler.DoPostReplacementUpdates(); + base.DoPostImportUpdates(); - } - protected override IEnumerable AffectedNonTargetObservableInstances - { - get + foreach (var changedObservable in changedObservables) { - return changedObservables; + changedObservable.NotifyObservers(); } } Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs =================================================================== diff -u -r05a4b5f35f68fcccf274c23bddfc05a4a7731919 -rd8361fdbbf28e4fb7e236be6fbf5f6a15045334b --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs (.../ReferenceLineImporterTest.cs) (revision 05a4b5f35f68fcccf274c23bddfc05a4a7731919) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/ReferenceLines/ReferenceLineImporterTest.cs (.../ReferenceLineImporterTest.cs) (revision d8361fdbbf28e4fb7e236be6fbf5f6a15045334b) @@ -436,7 +436,7 @@ } [Test] - public void DoPostImportUpdates_CancellingImport_DoNotNotifyObservers() + public void DoPostImportUpdates_CancellingImport_DoNotNotifyObserversAndNotDoPostReplacementUpdates() { // Setup var path = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Common.IO, "traject_10-2.shp"); @@ -449,8 +449,6 @@ assessmentSection.Expect(section => section.Attach(contextObserver)); var handler = mocks.StrictMock(); - handler.Expect(h => h.DoPostReplacementUpdates()); - var importer = new ReferenceLineImporter(assessmentSection, handler, path); handler.Expect(h => h.ConfirmReplace()) .WhenCalled(invocation => importer.Cancel())