Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r1536 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 1536) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 1553) @@ -82,13 +82,14 @@ } [Test] - public void CanAquiferListBeHandledOK() + public void CanAquiferListBeHandledOk() { const string inputFileName = @"TestFiles\AquiferListInputFile.xml"; var input = DamXmlSerialization.LoadInputFromXmlFile(inputFileName); Assert.AreEqual(28, input.AquiferSoils.Length); DamProjectData actualDamProjectData = FillDamFromXmlInput.CreateDamProjectData(input); Assert.AreEqual(11, actualDamProjectData.Dike.SoilList.AquiferDictionary.Count); + Assert.AreEqual(7, actualDamProjectData.CalculationMessages.Count); } private void AddPointToSurfaceLine(SurfaceLine2 surfaceLine, double xCoordinate, double zCoordinate, CharacteristicPointType characteristicPointType) Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj =================================================================== diff -u -r1497 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj (.../Deltares.DamEngine.Interface.csproj) (revision 1497) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj (.../Deltares.DamEngine.Interface.csproj) (revision 1553) @@ -73,6 +73,7 @@ ResXFileCodeGenerator Resources.Designer.cs + Designer Designer Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.Designer.cs =================================================================== diff -u -r877 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 877) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 1553) @@ -61,6 +61,15 @@ } /// + /// Looks up a localized string similar to Soil '{0}' is encountered more than once in the aquifer list. Aquifer is set as value.. + /// + internal static string DoubleAquiferSoil { + get { + return ResourceManager.GetString("DoubleAquiferSoil", resourceCulture); + } + } + + /// /// Looks up a localized string similar to End calculation. /// internal static string EndCalculation { Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r1536 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1536) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 1553) @@ -27,6 +27,7 @@ using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.Data.Standard.Logging; using Deltares.DamEngine.Interface.Properties; using Deltares.DamEngine.Io.XmlInput; using Location = Deltares.DamEngine.Data.General.Location; @@ -69,7 +70,11 @@ TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2); dike.SoilList = new SoilList(); TransferSoils(input.Soils, dike.SoilList.Soils); - TransferAquiferSoils(input.AquiferSoils, dike.SoilList); + var messages = TransferAquiferSoils(input.AquiferSoils, dike.SoilList); + if (messages.Count > 0) + { + damProjectData.CalculationMessages = messages; + } TransferSoilProfiles1D(input.SoilProfiles1D, dike.SoilProfiles, dike.SoilList); TransferSoilProfiles2D(input.SoilProfiles2D, dike.SoilProfiles2D, dike.SoilList); TransferSegments(input.Segments, damProjectData.Segments); @@ -79,8 +84,9 @@ return damProjectData; } - private static void TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) + private static List TransferAquiferSoils(InputAquiferSoil[] inputAquiferSoils, SoilList soilList) { + List validationMessages = new List(); if (inputAquiferSoils != null) { soilList.AquiferDictionary = new Dictionary(); @@ -93,13 +99,16 @@ } else { + // If a soil is (wrongly) in the list more than once, then prefer aquifer true. if (aquiferSoil.IsAquifer) - { + { + validationMessages.Add(new LogMessage(LogMessageType.Warning, aquiferSoil, string.Format(Resources.DoubleAquiferSoil, aquiferSoil.Soilname))); soilList.AquiferDictionary[soil] = true; } } } } + return validationMessages; } private static void TransferAnalysisSpecification(Input input, DamProjectData damProjectData) Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.resx =================================================================== diff -u -r877 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.resx (.../Resources.resx) (revision 877) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.resx (.../Resources.resx) (revision 1553) @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Soil '{0}' is encountered more than once in the aquifer list. Aquifer is set as value. + End calculation Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.nl-NL.resx =================================================================== diff -u -r877 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 877) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 1553) @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Materiaal '{0}' komt meerdere keren voor in de aquifer lijst. Aquifer is hiervoor aangehouden. + Eind berekening Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs =================================================================== diff -u -r1432 -r1553 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 1432) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/EngineInterface.cs (.../EngineInterface.cs) (revision 1553) @@ -150,6 +150,22 @@ public string Validate() { SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = Resources.StartValidation }); + List validationMessages = null; + //validationMessages = DamProjectData.Validate(); or something like this.... + // Local validation can give messages and these have to be added to the results but note that there + // already can be messages added by instantiation of the interface too. So add the local to the global + if (validationMessages != null && validationMessages.Count > 0) + { + DamProjectData.CalculationMessages.AddRange(validationMessages); + } + // Now check if there are any messages at all, if so return them. + if (DamProjectData.CalculationMessages.Count > 0) + { + Output output = FillXmlOutputFromDam.CreateOutput(DamProjectData); + string outputXml = DamXmlSerialization.SaveOutputAsXmlString(output); + SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = Resources.EndValidation }); + return outputXml; + } SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = Resources.EndValidation }); return null; } @@ -163,7 +179,6 @@ string outputXml; SendMessage(new LogMessage() { MessageType = LogMessageType.Info, Message = Resources.StartCalculation }); - List calculationMessages = null; switch (DamProjectData.DamProjectType) { case DamProjectType.AssessmentRegional: