Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/BackwardCompatibility.cs
===================================================================
diff -u -r2871 -r2875
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/BackwardCompatibility.cs (.../BackwardCompatibility.cs) (revision 2871)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/BackwardCompatibility.cs (.../BackwardCompatibility.cs) (revision 2875)
@@ -19,36 +19,90 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
+using System.Globalization;
using System.Xml;
+using Deltares.Standard.Extensions;
namespace Deltares.Dam.Data.IO
{
+ ///
public class BackwardCompatibility
{
+ /// Updates the specified dam project data for backward compatibility.
+ /// The dam project data.
+ /// Name of the project file.
public static void Update(DamProjectData damProjectData, string projectFileName)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(projectFileName);
- XmlElement rootElement = GetElement(xmlDocument, "Locations");
+ XmlNodeList locationNodes = xmlDocument.GetElementsByTagName("Subject");
+ foreach (XmlNode node in locationNodes)
+ {
+ var attributeType = node.Attributes?["type"];
+ if ((attributeType != null) && (attributeType.Value == "Deltares.Dam.Data.Location"))
+ {
+ var attributeName = node.Attributes?["Name"];
+ var location = damProjectData.WaterBoard.Dikes[0].Locations.Find(item => item.Name.Equals(attributeName.Value));
+ double? value;
+ value = AttributeValueFromNode(node, "PolderLevel");
+ UpdatePolderLevel(location, value);
+ value = AttributeValueFromNode(node, "HeadPL2");
+ UpdateHeadPl2(location, value);
+ value = AttributeValueFromNode(node, "HeadPl3");
+ UpdateHeadPl3(location, value);
+ value = AttributeValueFromNode(node, "HeadPl4");
+ UpdateHeadPl4(location, value);
+ }
+ }
}
- private static XmlElement GetElement(XmlNode parent, string name)
+ private static double? AttributeValueFromNode(XmlNode node, string attributeName)
{
- foreach (var xmlNode in parent.ChildNodes)
+ double? value = null;
+ var attribute = node.Attributes?[attributeName];
+ if ((attribute != null) && !string.IsNullOrEmpty(attribute.Value))
{
- XmlElement element = xmlNode as XmlElement;
- if (element != null)
- {
- if (element.Name == name)
- {
- return element;
- }
+ value = Double.Parse(attribute.Value, CultureInfo.InvariantCulture);
+ }
+ return value;
+ }
+ private static void UpdatePolderLevel(Location location, double? value)
+ {
+ if (value != null)
+ {
+ foreach (var scenario in location.Scenarios)
+ {
+ scenario.PolderLevel = value.Value;
}
}
+ }
- return null;
+ private static void UpdateHeadPl2(Location location, double? value)
+ {
+ foreach (var scenario in location.Scenarios)
+ {
+ scenario.HeadPl2 = value;
+ }
}
+
+ private static void UpdateHeadPl3(Location location, double? value)
+ {
+ foreach (var scenario in location.Scenarios)
+ {
+ scenario.HeadPl3 = value;
+ }
+ }
+
+ private static void UpdateHeadPl4(Location location, double? value)
+ {
+ foreach (var scenario in location.Scenarios)
+ {
+ scenario.HeadPl4 = value;
+ }
+ }
+
}
}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/LoadCompatiblityTest.cs
===================================================================
diff -u -r2817 -r2875
--- DamClients/DamUI/trunk/src/Dam/Tests/LoadCompatiblityTest.cs (.../LoadCompatiblityTest.cs) (revision 2817)
+++ DamClients/DamUI/trunk/src/Dam/Tests/LoadCompatiblityTest.cs (.../LoadCompatiblityTest.cs) (revision 2875)
@@ -55,7 +55,7 @@
compare = new CompareLogic();
compare.Config.MaxDifferences = 100;
compare.Config.CompareChildren = false;
- compare.Config.DoublePrecision = 0.000000001;
+ compare.Config.DoublePrecision = 0.000001;
compare.Config.MembersToIgnore = new List
{
"SurfaceLineId",
Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/VersionInfo.cs
===================================================================
diff -u -r2864 -r2875
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/VersionInfo.cs (.../VersionInfo.cs) (revision 2864)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/VersionInfo.cs (.../VersionInfo.cs) (revision 2875)
@@ -28,7 +28,12 @@
[XmlNoKey]
public class VersionInfo
{
- public const int CurrentFileVersion = 1;
+
+ /// The current file version
+ /// FileVersion 0 is for versions 18.1.3 and earlier.
+ /// FileVersion 1 is for version 19.1.1.
+ /// FileVersion 2 is for version 20.1.1. and up
+ public const int CurrentFileVersion = 2;
/// Current File Version.
/// The file version.
///