Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CalculationParameters.cs =================================================================== diff -u -r2089 -r2648 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CalculationParameters.cs (.../CalculationParameters.cs) (revision 2089) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CalculationParameters.cs (.../CalculationParameters.cs) (revision 2648) @@ -34,9 +34,6 @@ public bool PipingWti { get; set; } public bool PipingBligh { get; set; } public bool PipingSellmeijer { get; set; } - public bool PipingSellmeijerProbabilistic { get; set; } - public bool PipingIJkdijk { get; set; } - public bool Overtopping { get; set; } } public class CalculationParameters Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj =================================================================== diff -u -r1515 -r2648 --- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj (.../Deltares.Dam.TestHelper.csproj) (revision 1515) +++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj (.../Deltares.Dam.TestHelper.csproj) (revision 2648) @@ -81,6 +81,7 @@ + Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Assemblers/CalculationParametersAssembler.cs =================================================================== diff -u -r2631 -r2648 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Assemblers/CalculationParametersAssembler.cs (.../CalculationParametersAssembler.cs) (revision 2631) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Assemblers/CalculationParametersAssembler.cs (.../CalculationParametersAssembler.cs) (revision 2648) @@ -44,15 +44,17 @@ private const string EmbeddedResourcePath = "Deltares.Dam.Data.Xsd"; public const string XmlCalculationModulesElementName = "CalculationModules"; - public const string XmlStabilityElementName = "Stability"; public const string XmlStabilityInsideElementName = "StabilityInside"; public const string XmlStabilityOutsideElementName = "StabilityOutside"; public const string XmlPipingWtiElementName = "PipingWti"; public const string XmlPipingBlighElementName = "PipingBligh"; public const string XmlPipingSellmeijerElementName = "PipingSellmeijer"; - public const string XmlPipingSellmeijerProbabilisticElementName = "PipingSellmeijerProbabilistic"; - public const string XmlPipingIJkdijkElementName = "PipingIJkdijk"; - public const string XmlOvertoppingElementName = "Overtopping"; + // Obsolete module names + public const string XmlObsoletePipingSellmeijerProbabilisticElementName = "PipingSellmeijerProbabilistic"; + public const string XmlObsoleteStabilityElementName = "Stability"; + public const string XmlObsoletePipingIJkdijkElementName = "PipingIJkdijk"; + public const string XmlObsoleteOvertoppingElementName = "Overtopping"; + public const string XmlMStabParametersElementName = "MStabParameters"; public const string XmlMStabIsCalculateAllStabilityProjectsAtOnceElementName = "IsCalculateAllStabilityProjectsAtOnce"; public const string XmlMStabCalculationModelElementName = "CalculationModel"; @@ -107,18 +109,12 @@ // For backward compatibility: // This line is needed, so old files (with identifier Stability i.s.o. StabilityInside) still can be processed - XElement element = calculationModulesElement.Element(CalculationParametersAssembler.XmlStabilityElementName); + XElement element = calculationModulesElement.Element(CalculationParametersAssembler.XmlStabilityInsideElementName); if (element != null) { calculationModules.StabilityInside = int.Parse(element.Value) != 0; } - element = calculationModulesElement.Element(CalculationParametersAssembler.XmlStabilityInsideElementName); - if (element != null) - { - calculationModules.StabilityInside = int.Parse(element.Value) != 0; - } - element = calculationModulesElement.Element(CalculationParametersAssembler.XmlStabilityOutsideElementName); if (element != null) { @@ -143,24 +139,13 @@ calculationModules.PipingSellmeijer = int.Parse(element.Value) != 0; } - element = calculationModulesElement.Element(CalculationParametersAssembler.XmlPipingSellmeijerProbabilisticElementName); - if (element != null) - { - calculationModules.PipingSellmeijerProbabilistic = int.Parse(element.Value) != 0; - } + // Check for obsolete keys + ThrowIfObsoleteKeyNameFound(calculationModulesElement, XmlObsoleteStabilityElementName); + ThrowIfObsoleteKeyNameFound(calculationModulesElement, XmlObsoletePipingSellmeijerProbabilisticElementName); + ThrowIfObsoleteKeyNameFound(calculationModulesElement, XmlObsoletePipingIJkdijkElementName); + ThrowIfObsoleteKeyNameFound(calculationModulesElement, XmlObsoleteOvertoppingElementName); + - element = calculationModulesElement.Element(CalculationParametersAssembler.XmlPipingIJkdijkElementName); - if (element != null) - { - calculationModules.PipingIJkdijk = int.Parse(element.Value) != 0; - } - - element = calculationModulesElement.Element(CalculationParametersAssembler.XmlOvertoppingElementName); - if (element != null) - { - calculationModules.Overtopping = int.Parse(element.Value) != 0; - } - calculationParameters.CalculationModules = calculationModules; } @@ -234,6 +219,15 @@ return calculationParameters; } + private static void ThrowIfObsoleteKeyNameFound(XElement calculationModulesElement, string obsoleteElementKeyName) + { + XElement obsoleteElement = calculationModulesElement.Element(obsoleteElementKeyName); + if (obsoleteElement != null) + { + throw new DtoAssemblerException(String.Format("The specified calculation module '{0}' is obsolete", obsoleteElementKeyName)); + } + } + #region Schema Validator Method public bool ValidateSchema(XDocument doc, out string message) Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/XmlAdapter.cs =================================================================== diff -u --- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/XmlAdapter.cs (revision 0) +++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/XmlAdapter.cs (revision 2648) @@ -0,0 +1,48 @@ +// Copyright (C) Stichting Deltares 2019. All rights reserved. +// +// This file is part of the application DAM - UI. +// +// DAM - UI 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 System.Text.RegularExpressions; + +namespace Deltares.Dam.TestHelper +{ + /// + /// Helper class for adapting xml in tests + /// + public class XmlAdapter + { + /// Changes in an XML all specified keynames to a new keyname. + /// The input. + /// Name of the key. + /// New name of the key. + /// + public static string ChangeKeyName(string input, string keyName, string newKeyName) + { + string result = input; + string searchString = "<" + keyName + ">"; + string replacement = "<" + newKeyName + ">"; + result = Regex.Replace(input, searchString, replacement, RegexOptions.IgnorePatternWhitespace); + searchString = ""; + replacement = ""; + result = Regex.Replace(result, searchString, replacement, RegexOptions.IgnorePatternWhitespace); + return result; + } + } +} Index: DamClients/DamUI/trunk/src/Dam/Tests/TestData/SampleCalculationParameters.xml =================================================================== diff -u -r2632 -r2648 --- DamClients/DamUI/trunk/src/Dam/Tests/TestData/SampleCalculationParameters.xml (.../SampleCalculationParameters.xml) (revision 2632) +++ DamClients/DamUI/trunk/src/Dam/Tests/TestData/SampleCalculationParameters.xml (.../SampleCalculationParameters.xml) (revision 2648) @@ -2,12 +2,9 @@ - 1 + 1 1 1 - 1 - 1 - 1 1 1 Index: DamClients/DamUI/trunk/src/Dam/Tests/CalculationParametersAssemblerTest.cs =================================================================== diff -u -r2632 -r2648 --- DamClients/DamUI/trunk/src/Dam/Tests/CalculationParametersAssemblerTest.cs (.../CalculationParametersAssemblerTest.cs) (revision 2632) +++ DamClients/DamUI/trunk/src/Dam/Tests/CalculationParametersAssemblerTest.cs (.../CalculationParametersAssemblerTest.cs) (revision 2648) @@ -19,9 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.IO; using System.Xml.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.Assemblers; +using Deltares.Dam.TestHelper; +using Deltares.Standard; using NUnit.Framework; namespace Deltares.Dam.Tests @@ -53,6 +57,22 @@ } [Test] + [TestCase("Stability")] + [TestCase("PipingSellmeijerProbabilistic")] + [TestCase("PipingIJkdijk")] + [TestCase("Overtopping")] + public void GivenParameterFileWithObsoleteCalculationModuleWhenParsingThenExceptionIsThrown(string obsoleteElement) + { + // Given ParameterFile with obsolete Calculation Module + string inputString = File.ReadAllText(testFileName); + inputString = XmlAdapter.ChangeKeyName(inputString, "StabilityOutside", obsoleteElement); + XDocument inputDocument = XDocument.Parse(inputString); + + // When parsing, then exception is thrown + Assert.That(() => this.assembler.CreateDomainObject(inputDocument), Throws.TypeOf(typeof(DtoAssemblerException)).With.Message.EqualTo(String.Format("The specified calculation module '{0}' is obsolete", obsoleteElement))); + } + + [Test] public void CreateEntityFromDto() { // First validate test XML against schema @@ -75,9 +95,6 @@ Assert.IsTrue(calculationParameters.CalculationModules.PipingWti, "CalculationModules.PipingWti"); Assert.IsTrue(calculationParameters.CalculationModules.PipingBligh, "CalculationModules.PipingBligh"); Assert.IsTrue(calculationParameters.CalculationModules.PipingSellmeijer, "CalculationModules.PipingSellmeijer"); - Assert.IsTrue(calculationParameters.CalculationModules.PipingSellmeijerProbabilistic, "CalculationModules.PipingSellmeijerProbabilistic"); - Assert.IsTrue(calculationParameters.CalculationModules.PipingIJkdijk, "CalculationModules.PipingIJkdijk"); - Assert.IsTrue(calculationParameters.CalculationModules.Overtopping, "CalculationModules.Overtopping"); // MStab parameters Assert.IsNotNull(calculationParameters.MStabParameters);