Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs =================================================================== diff -u -r0e801c8485332bd9cdd1a907619f1f93e495ba4c -r088f1f6f74733f2b37f6b79b434026bdbc34c941 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs (.../HydraulicBoundaryDatabaseContext.cs) (revision 0e801c8485332bd9cdd1a907619f1f93e495ba4c) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PresentationObjects/HydraulicBoundaryDatabaseContext.cs (.../HydraulicBoundaryDatabaseContext.cs) (revision 088f1f6f74733f2b37f6b79b434026bdbc34c941) @@ -25,7 +25,6 @@ using Ringtoets.Common.Data; using Ringtoets.HydraRing.Data; -using Ringtoets.Integration.Data; namespace Ringtoets.Integration.Forms.PresentationObjects { Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/FileImporters/HydraulicBoundaryDatabaseImporter.cs =================================================================== diff -u -r2d656f68a5c217425ddf438761a177739f04c75b -r088f1f6f74733f2b37f6b79b434026bdbc34c941 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/FileImporters/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 2d656f68a5c217425ddf438761a177739f04c75b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/FileImporters/HydraulicBoundaryDatabaseImporter.cs (.../HydraulicBoundaryDatabaseImporter.cs) (revision 088f1f6f74733f2b37f6b79b434026bdbc34c941) @@ -194,6 +194,7 @@ private static void AddImportedDataToModel(AssessmentSectionBase assessmentSection, HydraulicBoundaryDatabase importedData) { assessmentSection.HydraulicBoundaryDatabase = importedData; + assessmentSection.NotifyObservers(); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs =================================================================== diff -u -r2f01022374461fa646d0d4185ca5c248c330de7e -r088f1f6f74733f2b37f6b79b434026bdbc34c941 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 2f01022374461fa646d0d4185ca5c248c330de7e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/FileImporters/HydraulicBoundaryDatabaseImporterTest.cs (.../HydraulicBoundaryDatabaseImporterTest.cs) (revision 088f1f6f74733f2b37f6b79b434026bdbc34c941) @@ -144,8 +144,11 @@ // Setup var mocks = new MockRepository(); var assessmentSection = mocks.StrictMock(); + var observer = mocks.StrictMock(); mocks.ReplayAll(); + assessmentSection.Attach(observer); + var context = new HydraulicBoundaryDatabaseContext(assessmentSection); var expectedMessage = "Er is nog geen bestand geopend."; @@ -160,13 +163,19 @@ } [Test] - public void Import_ImportingToValidTargetWithValidFile_ImportHydraulicBoundaryLocationsToCollection() + public void Import_ImportingToValidTargetWithValidFile_ImportHydraulicBoundaryLocationsToCollectionAndAssessmentSectionNotified() { // Setup var mocks = new MockRepository(); var assessmentSection = mocks.StrictMock(); + var observer = mocks.StrictMock(); + + observer.Expect(o => o.UpdateObserver()); + mocks.ReplayAll(); + assessmentSection.Attach(observer); + var importTarget = new HydraulicBoundaryDatabaseContext(assessmentSection); string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); @@ -199,17 +208,17 @@ { // Setup var mocks = new MockRepository(); - var observer = mocks.StrictMock(); var assessmentSection = mocks.StrictMock(); + var observer = mocks.StrictMock(); mocks.ReplayAll(); + assessmentSection.Attach(observer); + var importTarget = new HydraulicBoundaryDatabaseContext(assessmentSection); string corruptPath = Path.Combine(testDataPath, "corruptschema.sqlite"); var expectedLogMessage = string.Format("Fout bij het lezen van bestand '{0}': Kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database. Het bestand wordt overgeslagen.", corruptPath); - importTarget.Attach(observer); - var importResult = true; importer.ValidateAndConnectTo(corruptPath); @@ -222,18 +231,21 @@ Assert.IsFalse(importResult); Assert.IsNull(importTarget.Parent.HydraulicBoundaryDatabase, "No HydraulicBoundaryDatabase object should be created when import from corrupt database."); - mocks.VerifyAll(); // Expect no calls on 'observer' + mocks.VerifyAll(); } [Test] public void Import_CorruptSchemaFile_ReturnsFalse() { // Setup var mocks = new MockRepository(); - var assessmentSectionMock = mocks.StrictMock(); - var importTarget = mocks.StrictMock(assessmentSectionMock); + var assessmentSection = mocks.StrictMock(); + var observer = mocks.StrictMock(); + var importTarget = mocks.StrictMock(assessmentSection); mocks.ReplayAll(); + assessmentSection.Attach(observer); + string validFilePath = Path.Combine(testDataPath, "corruptschema.sqlite"); string expectedMessage = new FileReaderErrorMessageBuilder(validFilePath) .Build("Kritieke fout opgetreden bij het uitlezen van waardes uit kolommen in de database. Het bestand wordt overgeslagen."); Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.Designer.cs =================================================================== diff -u -r0c05978e0502e47090bffa6f5716c91dae3e7150 -r088f1f6f74733f2b37f6b79b434026bdbc34c941 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.Designer.cs (.../PipingCalculationsView.Designer.cs) (revision 0c05978e0502e47090bffa6f5716c91dae3e7150) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.Designer.cs (.../PipingCalculationsView.Designer.cs) (revision 088f1f6f74733f2b37f6b79b434026bdbc34c941) @@ -141,6 +141,7 @@ this.dataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader; this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.dataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; this.dataGridView.Location = new System.Drawing.Point(3, 20); this.dataGridView.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0); this.dataGridView.Name = "dataGridView"; Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs =================================================================== diff -u -re4c1ee9fe5170ccf7794006d572461d3f88e7740 -r088f1f6f74733f2b37f6b79b434026bdbc34c941 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision e4c1ee9fe5170ccf7794006d572461d3f88e7740) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 088f1f6f74733f2b37f6b79b434026bdbc34c941) @@ -39,8 +39,9 @@ /// public partial class PipingCalculationsView : UserControl, IView { - private readonly RecursiveObserver pipingCalculationGroupObserver; private readonly Observer pipingSoilProfilesObserver; + private readonly Observer assessmentSectionObserver; + private readonly RecursiveObserver pipingCalculationGroupObserver; private AssessmentSectionBase assessmentSection; private PipingFailureMechanism pipingFailureMechanism; private PipingCalculationGroup pipingCalculationGroup; @@ -55,8 +56,9 @@ InitializeComponent(); InitializeDataGridView(); - pipingCalculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pg => pg.Children.OfType()); pipingSoilProfilesObserver = new Observer(UpdateSoilProfileColumn); + assessmentSectionObserver = new Observer(UpdateHydraulicBoundaryLocationsColumn); + pipingCalculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pg => pg.Children.OfType()); } /// @@ -91,11 +93,9 @@ { assessmentSection = value; - var hydraulicBoundaryLocations = assessmentSection != null && assessmentSection.HydraulicBoundaryDatabase != null - ? assessmentSection.HydraulicBoundaryDatabase.Locations - : null; + assessmentSectionObserver.Observable = assessmentSection; - hydraulicBoundaryLocationColumn.DataSource = GetHydraulicBoundaryLocationsDataSource(hydraulicBoundaryLocations); + UpdateHydraulicBoundaryLocationsColumn(); } } @@ -203,11 +203,13 @@ dataGridView.Columns.AddRange(nameColumn, soilProfileColumn, hydraulicBoundaryLocationColumn, dampingFactorExitMeanColumn, phreaticLevelExitMeanColumn, entryPointLColumn, exitPointLColumn); } - private void UpdateDataGridViewDataSource() + private void UpdateHydraulicBoundaryLocationsColumn() { - dataGridView.DataSource = pipingCalculationGroup.GetPipingCalculations() - .Select(pc => new PipingCalculationRow(pc)) - .ToList(); + var hydraulicBoundaryLocations = assessmentSection != null && assessmentSection.HydraulicBoundaryDatabase != null + ? assessmentSection.HydraulicBoundaryDatabase.Locations + : null; + + hydraulicBoundaryLocationColumn.DataSource = GetHydraulicBoundaryLocationsDataSource(hydraulicBoundaryLocations); } private void UpdateSoilProfileColumn() @@ -217,6 +219,13 @@ soilProfileColumn.DataSource = GetSoilProfilesDataSource(pipingSoilProfiles); } + private void UpdateDataGridViewDataSource() + { + dataGridView.DataSource = pipingCalculationGroup.GetPipingCalculations() + .Select(pc => new PipingCalculationRow(pc)) + .ToList(); + } + private static List> GetSoilProfilesDataSource(IEnumerable soilProfiles = null) { var dataGridViewComboBoxItemWrappers = new List>