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 = "" + keyName + ">";
+ replacement = "" + newKeyName + ">";
+ 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);