Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMerger.cs =================================================================== diff -u -rd82ab38fadcd577385b43e5951c2f4ace3180275 -rec4f74f82ab2f95e1ea20313b1bba8404f3222c9 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision d82ab38fadcd577385b43e5951c2f4ace3180275) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision ec4f74f82ab2f95e1ea20313b1bba8404f3222c9) @@ -25,7 +25,6 @@ using log4net; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Integration.Data; -using Ringtoets.Integration.Data.Merge; using Ringtoets.Integration.Forms.Merge; using Ringtoets.Integration.Plugin.Handlers; using Ringtoets.Integration.Plugin.Properties; @@ -42,7 +41,7 @@ private static readonly ILog log = LogManager.GetLogger(typeof(AssessmentSectionMerger)); private readonly IAssessmentSectionMergeFilePathProvider filePathProvider; - private readonly Action getAssessmentSectionsAction; + private readonly IAssessmentSectionProvider assessmentSectionProvider; private readonly IAssessmentSectionMergeComparer comparer; private readonly IMergeDataProvider mergeDataProvider; private readonly IAssessmentSectionMergeHandler mergeHandler; @@ -51,23 +50,22 @@ /// Creates a new instance of , /// /// The provider to get the file path of the file to merge. - /// The action for getting the assessment sections - /// to merge. + /// The provider to the assessment sections to merge. /// The comparer to compare the assessment sections with. /// The provider to get the data to merge from. /// The handler to perform the merge. /// Thrown when any parameter is null. - public AssessmentSectionMerger(IAssessmentSectionMergeFilePathProvider filePathProvider, Action getAssessmentSectionsAction, + public AssessmentSectionMerger(IAssessmentSectionMergeFilePathProvider filePathProvider, IAssessmentSectionProvider assessmentSectionProvider, IAssessmentSectionMergeComparer comparer, IMergeDataProvider mergeDataProvider, IAssessmentSectionMergeHandler mergeHandler) { if (filePathProvider == null) { throw new ArgumentNullException(nameof(filePathProvider)); } - if (getAssessmentSectionsAction == null) + if (assessmentSectionProvider == null) { - throw new ArgumentNullException(nameof(getAssessmentSectionsAction)); + throw new ArgumentNullException(nameof(assessmentSectionProvider)); } if (comparer == null) @@ -86,7 +84,7 @@ } this.filePathProvider = filePathProvider; - this.getAssessmentSectionsAction = getAssessmentSectionsAction; + this.assessmentSectionProvider = assessmentSectionProvider; this.comparer = comparer; this.mergeDataProvider = mergeDataProvider; this.mergeHandler = mergeHandler; @@ -113,10 +111,14 @@ return; } - IEnumerable assessmentSections = GetAssessmentSections(filePath); + IEnumerable assessmentSections; - if (assessmentSections == null) + try { + assessmentSections = assessmentSectionProvider.GetAssessmentSections(filePath); + } + catch (AssessmentSectionProviderException) + { return; } @@ -152,13 +154,6 @@ PerformMerge(assessmentSection, assessmentSectionToMerge, failureMechanismToMerge); } - private IEnumerable GetAssessmentSections(string filePath) - { - var assessmentSectionsOwner = new AssessmentSectionsOwner(); - getAssessmentSectionsAction(filePath, assessmentSectionsOwner); - return assessmentSectionsOwner.AssessmentSections; - } - private void PerformMerge(AssessmentSection assessmentSection, AssessmentSection assessmentSectionToMerge, IEnumerable failureMechanismToMerge) { log.InfoFormat(Resources.AssessmentSectionMerger_PerformMerge_Merging_AssessmentSection_0_with_AssessmentSection_1_started, Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -rd82ab38fadcd577385b43e5951c2f4ace3180275 -rec4f74f82ab2f95e1ea20313b1bba8404f3222c9 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision d82ab38fadcd577385b43e5951c2f4ace3180275) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision ec4f74f82ab2f95e1ea20313b1bba8404f3222c9) @@ -94,7 +94,6 @@ using Ringtoets.Integration.Plugin.Properties; using Ringtoets.Integration.Service; using Ringtoets.Integration.Service.Comparers; -using Ringtoets.Integration.Service.Merge; using Ringtoets.MacroStabilityInwards.Data; using Ringtoets.MacroStabilityInwards.Forms.PresentationObjects; using Ringtoets.Piping.Data; @@ -103,7 +102,6 @@ using Ringtoets.StabilityPointStructures.Forms.PresentationObjects; using Ringtoets.StabilityStoneCover.Data; using Ringtoets.StabilityStoneCover.Forms.PresentationObjects; -using Ringtoets.Storage.Core; using Ringtoets.WaveImpactAsphaltCover.Data; using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects; using RingtoetsDataResources = Ringtoets.Integration.Data.Properties.Resources; @@ -280,13 +278,7 @@ assessmentSectionFromFileCommandHandler = new AssessmentSectionFromFileCommandHandler(Gui.MainWindow, Gui, Gui.DocumentViewController); hydraulicBoundaryLocationCalculationGuiService = new HydraulicBoundaryLocationCalculationGuiService(Gui.MainWindow); assessmentSectionMerger = new AssessmentSectionMerger(new AssessmentSectionMergeFilePathProvider(new DialogBasedInquiryHelper(Gui.MainWindow)), - (filePath, assessmentSectionOwner) => - { - ActivityProgressDialogRunner.Run(Gui.MainWindow, - LoadAssessmentSectionsActivityFactory.CreateLoadAssessmentSectionsActivity( - assessmentSectionOwner, new LoadAssessmentSectionService(new StorageSqLite()), - filePath)); - }, + new AssessmentSectionProvider(Gui.MainWindow), new AssessmentSectionMergeComparer(), new AssessmentSectionMergeDataProviderDialog(Gui.MainWindow), new AssessmentSectionMergeHandlerStub()); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergerTest.cs =================================================================== diff -u -rd82ab38fadcd577385b43e5951c2f4ace3180275 -rec4f74f82ab2f95e1ea20313b1bba8404f3222c9 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision d82ab38fadcd577385b43e5951c2f4ace3180275) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision ec4f74f82ab2f95e1ea20313b1bba8404f3222c9) @@ -28,7 +28,6 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Integration.Data; -using Ringtoets.Integration.Data.Merge; using Ringtoets.Integration.Forms.Merge; using Ringtoets.Integration.Plugin.Handlers; using Ringtoets.Integration.Plugin.Merge; @@ -44,13 +43,14 @@ { // Setup var mocks = new MockRepository(); + var assessmentSectionProvider = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(null, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); + TestDelegate call = () => new AssessmentSectionMerger(null, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -59,7 +59,7 @@ } [Test] - public void Constructor_GetAssessmentSectionsActionNull_ThrowsArgumentNullException() + public void Constructor_AssessmentSectionProvider_ThrowsArgumentNullException() { // Setup var mocks = new MockRepository(); @@ -74,7 +74,7 @@ // Assert var exception = Assert.Throws(call); - Assert.AreEqual("getAssessmentSectionsAction", exception.ParamName); + Assert.AreEqual("assessmentSectionProvider", exception.ParamName); mocks.VerifyAll(); } @@ -84,12 +84,13 @@ // Setup var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); + var assessmentSectionProvider = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, null, mergeDataProvider, mergeHandler); + TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, null, mergeDataProvider, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -103,12 +104,13 @@ // Setup var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); + var assessmentSectionProvider = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, comparer, null, mergeHandler); + TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, null, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -122,12 +124,13 @@ // Setup var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); + var assessmentSectionProvider = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, comparer, mergeDataProvider, null); + TestDelegate call = () => new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, null); // Assert var exception = Assert.Throws(call); @@ -141,12 +144,13 @@ // Setup var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); + var assessmentSectionProvider = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); // Call TestDelegate call = () => merger.StartMerge(null); @@ -164,12 +168,13 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(null); + var assessmentSectionProvider = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); // Call Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -180,18 +185,21 @@ } [Test] - public void GivenValidFilePath_WhenGetAssessmentSectionActionReturnNull_ThenAbort() + public void GivenValidFilePath_WhenAssessmentSectionProviderThrowsAssessmentSectionProviderException_ThenAbort() { // Given var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Throw(new AssessmentSectionProviderException()); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(filePathProvider, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -208,15 +216,16 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(Enumerable.Empty()); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => { owner.AssessmentSections = Enumerable.Empty(); }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -232,22 +241,20 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(new[] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(false); var mergeDataProvider = mocks.StrictMock(); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - new AssessmentSection(AssessmentSectionComposition.Dike) - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -263,23 +270,21 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(new[] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); var mergeDataProvider = mocks.StrictMock(); mergeDataProvider.Expect(mdp => mdp.SelectData(null)).IgnoreArguments().Return(false); var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - new AssessmentSection(AssessmentSectionComposition.Dike) - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -295,6 +300,12 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(new[] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); var mergeDataProvider = mocks.StrictMock(); @@ -304,16 +315,8 @@ var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - new AssessmentSection(AssessmentSectionComposition.Dike) - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -329,6 +332,12 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(new[] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); var mergeDataProvider = mocks.StrictMock(); @@ -338,16 +347,8 @@ var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - new AssessmentSection(AssessmentSectionComposition.Dike) - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -360,6 +361,7 @@ public void GivenMatchedAssessmentSection_WhenAllDataValid_ThenMergePerformedAndLogged() { // Given + var filePath = "Filepath"; var originalAssessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var assessmentSectionToMerge = new AssessmentSection(AssessmentSectionComposition.Dike); var failureMechanismsToMerge = new IFailureMechanism[] @@ -369,7 +371,13 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); - filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + filePathProvider.Expect(helper => helper.GetFilePath()).Return(filePath); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(filePath)) + .Return(new[] + { + assessmentSectionToMerge + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(originalAssessmentSection, assessmentSectionToMerge)).Return(true); var mergeDataProvider = mocks.StrictMock(); @@ -380,16 +388,8 @@ mergeHandler.Expect(mh => mh.PerformMerge(originalAssessmentSection, assessmentSectionToMerge, failureMechanismsToMerge)); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - assessmentSectionToMerge - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(originalAssessmentSection); @@ -418,6 +418,12 @@ var mocks = new MockRepository(); var filePathProvider = mocks.StrictMock(); filePathProvider.Expect(helper => helper.GetFilePath()).Return(string.Empty); + var assessmentSectionProvider = mocks.StrictMock(); + assessmentSectionProvider.Expect(asp => asp.GetAssessmentSections(null)).IgnoreArguments() + .Return(new[] + { + assessmentSectionToMerge + }); var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(originalAssessmentSection, assessmentSectionToMerge)).Return(true); var mergeDataProvider = mocks.StrictMock(); @@ -428,16 +434,8 @@ mergeHandler.Expect(mh => mh.PerformMerge(originalAssessmentSection, assessmentSectionToMerge, failureMechanismsToMerge)).Throw(new Exception()); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = new[] - { - assessmentSectionToMerge - }; - }; + var merger = new AssessmentSectionMerger(filePathProvider, assessmentSectionProvider, comparer, mergeDataProvider, mergeHandler); - var merger = new AssessmentSectionMerger(filePathProvider, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); - // When Action call = () => merger.StartMerge(originalAssessmentSection);