Index: Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculation.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculation.cs (.../ICalculation.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculation.cs (.../ICalculation.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -37,5 +37,10 @@ /// Clears the assessment level. /// void ClearHydraulicBoundaryLocation(); + + /// + /// Gets the input of the calculation. + /// + ICalculationInput Input { get; } } } \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculationInput.cs =================================================================== diff -u --- Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculationInput.cs (revision 0) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Calculation/ICalculationInput.cs (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -0,0 +1,30 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Core.Common.Base; + +namespace Ringtoets.Common.Data.Calculation +{ + /// + /// A calculation input related item. + /// + public interface ICalculationInput : IObservable {} +} \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Ringtoets.Common.Data.csproj (.../Ringtoets.Common.Data.csproj) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -42,6 +42,7 @@ + Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/FailureMechanismResultView.cs (.../FailureMechanismResultView.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -42,7 +42,8 @@ { private readonly Observer failureMechanismObserver; private readonly RecursiveObserver failureMechanismSectionResultObserver; - private readonly RecursiveObserver calculationScenarioObserver; + private readonly RecursiveObserver calculationScenarioObserver; + private readonly RecursiveObserver calculationInputObserver; private IEnumerable failureMechanismSectionResult; private IFailureMechanism failureMechanism; @@ -61,8 +62,8 @@ failureMechanismObserver = new Observer(UpdataDataGridViewDataSource); failureMechanismSectionResultObserver = new RecursiveObserver(RefreshDataGridView, mechanism => mechanism.SectionResults); - calculationScenarioObserver = new RecursiveObserver(UpdataDataGridViewDataSource, mechanism => mechanism.SectionResults.Select(sr => sr.CalculationScenarios)); - + calculationScenarioObserver = new RecursiveObserver(UpdataDataGridViewDataSource, mechanism => mechanism.SectionResults.SelectMany(sr => sr.CalculationScenarios)); + calculationInputObserver = new RecursiveObserver(UpdataDataGridViewDataSource, mechanism => mechanism.SectionResults.SelectMany(sr => sr.CalculationScenarios).Select(cs => cs.Input)); Load += OnLoad; } @@ -81,6 +82,8 @@ failureMechanismObserver.Observable = failureMechanism; failureMechanismSectionResultObserver.Observable = failureMechanism; + calculationScenarioObserver.Observable = failureMechanism; + calculationInputObserver.Observable = failureMechanism; } } @@ -97,12 +100,10 @@ if (failureMechanismSectionResult != null) { UpdataDataGridViewDataSource(); - calculationScenarioObserver.Observable = failureMechanism; } else { dataGridView.DataSource = null; - calculationScenarioObserver.Observable = null; } } } @@ -111,6 +112,11 @@ { FailureMechanism = null; + failureMechanismObserver.Dispose(); + failureMechanismSectionResultObserver.Dispose(); + calculationScenarioObserver.Dispose(); + calculationInputObserver.Dispose(); + if (disposing && (components != null)) { components.Dispose(); Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs =================================================================== diff -u -rd847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision d847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Dynamic; using Core.Common.Base; using Ringtoets.Common.Data.Calculation; using Ringtoets.GrassCoverErosionInwards.Data.Properties; @@ -49,6 +50,14 @@ /// public GrassCoverErosionInwardsOutput Output { get; set; } + public ICalculationInput Input + { + get + { + return InputParameters; + } + } + public string Comments { get; set; } public string Name { get; set; } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs =================================================================== diff -u -rd847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs (.../GrassCoverErosionInwardsInput.cs) (revision d847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs (.../GrassCoverErosionInwardsInput.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -22,7 +22,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Core.Common.Base; using Core.Common.Base.Data; +using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Probabilistics; using Ringtoets.HydraRing.Data; @@ -31,7 +33,7 @@ /// /// Class that holds all grass cover erosion inwards calculation specific input parameters. /// - public class GrassCoverErosionInwardsInput + public class GrassCoverErosionInwardsInput : Observable, ICalculationInput { private IEnumerable geometry; Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs =================================================================== diff -u -rd847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision d847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -233,6 +233,20 @@ // Assert Assert.IsNull(calculation.InputParameters.HydraulicBoundaryLocation); } + + [Test] + public void Input_Always_ReturnsInputParamaters() + { + // Setup + var calculation = new GrassCoverErosionInwardsCalculation(); + var inputParameters = calculation.InputParameters; + + // Call + var input = calculation.Input; + + // Assert + Assert.AreEqual(inputParameters, input); + } } public class TestGrassCoverErosionInwardsOutput : GrassCoverErosionInwardsOutput Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs =================================================================== diff -u -rd847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision d847955b7a8b9bd4cd80c5e10e6a055c9d5daa8b) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -21,9 +21,11 @@ using System; using System.Linq; +using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using NUnit.Framework; +using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Probabilistics; namespace Ringtoets.GrassCoverErosionInwards.Data.Test @@ -38,7 +40,8 @@ var input = new GrassCoverErosionInwardsInput(); // Assert - Assert.IsNotNull(input); + Assert.IsInstanceOf(input); + Assert.IsInstanceOf(input); CollectionAssert.IsEmpty(input.DikeGeometry); Assert.IsNull(input.HydraulicBoundaryLocation); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (.../IPipingCalculationItemExtensions.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/IPipingCalculationItemExtensions.cs (.../IPipingCalculationItemExtensions.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -23,7 +23,6 @@ using System.Collections.Generic; using System.Linq; using Core.Common.Base.Geometry; -using Ringtoets.Common.Data; using Ringtoets.Common.Data.Calculation; namespace Ringtoets.Piping.Data Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -76,6 +76,14 @@ /// public PipingSemiProbabilisticOutput SemiProbabilisticOutput { get; set; } + public ICalculationInput Input + { + get + { + return InputParameters; + } + } + /// /// Gets or sets the name of this calculation. /// Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs (.../PipingCalculationScenario.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculationScenario.cs (.../PipingCalculationScenario.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -22,7 +22,6 @@ using System; using Core.Common.Base.Data; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.FailureMechanism; namespace Ringtoets.Piping.Data { Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs =================================================================== diff -u -r1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -24,6 +24,7 @@ using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Geometry; +using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Probabilistics; using Ringtoets.HydraRing.Data; using Ringtoets.Piping.Data.Properties; @@ -35,7 +36,7 @@ /// Class that holds all piping calculation specific input parameters, e.g. the values /// that can differ across various calculations. /// - public class PipingInput : Observable + public class PipingInput : Observable, ICalculationInput { private readonly GeneralPipingInput generalInputParameters; private readonly NormalDistribution phreaticLevelExit; Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -176,7 +176,7 @@ data.WrappedData.SurfaceLine = value; PipingInputService.SetMatchingStochasticSoilModel(data.WrappedData, GetAvailableStochasticSoilModels()); - PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine((PipingCalculationScenario) data.PipingCalculation, new PipingFailureMechanism(), oldSurfaceLine); + PipingCalculationScenarioService.SyncCalculationScenarioWithNewSurfaceLine((PipingCalculationScenario) data.PipingCalculation, data.PipingFailureMechanism, oldSurfaceLine); data.WrappedData.NotifyObservers(); } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingCalculationsView.cs (.../PipingCalculationsView.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -36,7 +36,6 @@ using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Properties; -using Ringtoets.Piping.Primitives; using Ringtoets.Piping.Service; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs =================================================================== diff -u -r0b081b2391e73b7e3ff04ef31fafd2df1b1571e3 -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs (.../PipingCalculationScenarioService.cs) (revision 0b081b2391e73b7e3ff04ef31fafd2df1b1571e3) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationScenarioService.cs (.../PipingCalculationScenarioService.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -57,10 +57,8 @@ return; } - if (RemoveScenarioFromOldSectionResult(calculationScenario, failureMechanism)) - { - AddScenarioToNewSectionResult(calculationScenario, failureMechanism); - } + RemoveScenarioFromOldSectionResult(calculationScenario, failureMechanism); + AddScenarioToNewSectionResult(calculationScenario, failureMechanism); } private static void AddScenarioToNewSectionResult(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism) @@ -77,14 +75,13 @@ } } - private static bool RemoveScenarioFromOldSectionResult(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism) + private static void RemoveScenarioFromOldSectionResult(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism) { foreach (var sectionResult in failureMechanism.SectionResults.Where(sectionResult => sectionResult.CalculationScenarios.Contains(calculationScenario))) { sectionResult.CalculationScenarios.Remove(calculationScenario); - return true; + break; } - return false; } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs =================================================================== diff -u -r8c60e937f4b8009fea80f3702879e100fe03b63f -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 8c60e937f4b8009fea80f3702879e100fe03b63f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -254,5 +254,19 @@ // Assert Assert.IsNaN(calculation.InputParameters.AssessmentLevel); } + + [Test] + public void Input_Always_ReturnsInputParamaters() + { + // Setup + var calculation = new PipingCalculation(new GeneralPipingInput(), new SemiProbabilisticPipingInput()); + var inputParameters = calculation.InputParameters; + + // Call + var input = calculation.Input; + + // Assert + Assert.AreEqual(inputParameters, input); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs =================================================================== diff -u -r1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e -r4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 1e4d77c17c6eac78bfd705efdff9e52b4fca2c7e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 4af59f05cb6ced6464d51c8dff8cb0b8bfca8edd) @@ -25,6 +25,7 @@ using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Probabilistics; using Ringtoets.HydraRing.Data; using Ringtoets.Piping.Data.Properties; @@ -50,6 +51,7 @@ // Assert Assert.IsInstanceOf(inputParameters); + Assert.IsInstanceOf(inputParameters); Assert.IsInstanceOf(inputParameters.PhreaticLevelExit); Assert.AreEqual(0, inputParameters.PhreaticLevelExit.Mean.Value);