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. ///