Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs =================================================================== diff -u -r4070 -r4390 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs (.../FillXmlOutputFromDamUi.cs) (revision 4070) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlOutputFromDamUi.cs (.../FillXmlOutputFromDamUi.cs) (revision 4390) @@ -45,6 +45,21 @@ TransferOutputTimeSeries(damProjectData.OutputTimeSerieCollection, output.Results.OperationalOutputTimeSeries); } + if (damProjectData.DesignCalculations != null && damProjectData.DesignCalculations.Count > 0) + { + output.Results.CalculationResults = new DesignResult[damProjectData.DesignCalculations.Count]; + for (int i = 0; i < damProjectData.DesignCalculations.Count; i++) + { + var designResult = new DesignResult(); + designResult.CalculationSubDir = damProjectData.DesignCalculations[i].CalculationSubDir; + designResult.LocationName = damProjectData.DesignCalculations[i].LocationName; + designResult.BaseFileName = damProjectData.DesignCalculations[i].BaseFileName; + designResult.ScenarioName = damProjectData.DesignCalculations[i].ScenarioName; + designResult.StabilityDesignResults = new DesignResultStabilityDesignResults(); + output.Results.CalculationResults[i] = designResult; + } + } + return output; } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvExportData.cs =================================================================== diff -u -r4388 -r4390 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvExportData.cs (.../CsvExportData.cs) (revision 4388) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvExportData.cs (.../CsvExportData.cs) (revision 4390) @@ -1343,7 +1343,8 @@ { fileName = PipingResultFile; } - else if ((failureMechanismSystemType == FailureMechanismSystemType.StabilityInside || failureMechanismSystemType == FailureMechanismSystemType.StabilityOutside) && + else if ((failureMechanismSystemType == FailureMechanismSystemType.StabilityInside || + failureMechanismSystemType == FailureMechanismSystemType.StabilityOutside) && File.Exists(GetDesignResultFile())) { fileName = GetDesignResultFile(); Index: DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs =================================================================== diff -u -r4384 -r4390 --- DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 4384) +++ DamClients/DamUI/trunk/src/Dam/Deltares.Dam.Tests/DamEngineIo/FillDamUiFromXmlOutputTests.cs (.../FillDamUiFromXmlOutputTests.cs) (revision 4390) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.DamEngineIo; using Deltares.DamEngine.Io; @@ -70,8 +71,42 @@ actualDamProjectData = FillDamUiFromXmlOutput.AddOutputToDamProjectData(actualDamProjectData, output); CompareDamProjectData(actualDamProjectData, expectedDamProjectData); } - + [Test] + public void ThrowWhenCalculationSubDirIsEmpty() + { + DamProjectData expectedDamProjectData = CreateDamProjectDataWithCalculationMessagesAndOneResult(); + + Output output = FillXmlOutputFromDamUi.CreateOutput(expectedDamProjectData); + output.Results.CalculationResults.First().CalculationSubDir = ""; + string outputString = DamXmlSerialization.SaveOutputAsXmlString(output); + output = DamXmlSerialization.LoadOutputFromXmlString(outputString); + var actualDamProjectData = new DamProjectData(); + actualDamProjectData.WaterBoard.Dikes.Add(new Dike()); + actualDamProjectData.DamProjectCalculationSpecification.CurrentSpecification = new DamFailureMechanismeCalculationSpecification(); + Assert.That(() => FillDamUiFromXmlOutput.AddOutputToDamProjectData(actualDamProjectData, output), + Throws.InstanceOf()); + } + + [Test] + public void WhenOriginallyBaseFileNameIsEmptyItIsReset() + { + DamProjectData expectedDamProjectData = CreateDamProjectDataWithCalculationMessagesAndOneResult(); + + Output output = FillXmlOutputFromDamUi.CreateOutput(expectedDamProjectData); + output.Results.CalculationResults.First().BaseFileName = ""; + string outputString = DamXmlSerialization.SaveOutputAsXmlString(output); + output = DamXmlSerialization.LoadOutputFromXmlString(outputString); + var actualDamProjectData = new DamProjectData(); + actualDamProjectData.WaterBoard.Dikes.Add(new Dike()); + actualDamProjectData.DamProjectCalculationSpecification.CurrentSpecification = + new DamFailureMechanismeCalculationSpecification(); + actualDamProjectData = FillDamUiFromXmlOutput.AddOutputToDamProjectData(actualDamProjectData, output); + Assert.IsFalse(string.IsNullOrEmpty(actualDamProjectData.DesignCalculations.First().BaseFileName), + "BaseFileName should be reset"); + } + + [Test] public void SimpleTestPiping() { DamProjectData inputProjectData = CreateInputProjectDataForPiping(); @@ -196,6 +231,16 @@ return damProjectData; } + private static DamProjectData CreateDamProjectDataWithCalculationMessagesAndOneResult() + { + var damProjectData = CreateDamProjectDataWithCalculationMessages(); + var designResult = new CsvExportData("locationName", "scenarioName"); + designResult.BaseFileName = "base"; + designResult.CalculationSubDir = "aFolder"; + damProjectData.DesignCalculations.Add(designResult); + return damProjectData; + } + private static void FillOutputTimeSeries(DamProjectData damProjectData) { const int timeSeriesCount = 2; Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs =================================================================== diff -u -r4388 -r4390 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 4388) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlOutput.cs (.../FillDamUiFromXmlOutput.cs) (revision 4390) @@ -168,12 +168,15 @@ desResult.CalculationResult = ConversionHelper.ConvertToCalculationResult(designResult.CalculationResult); Scenario scenario = GetScenarioByName(damProjectData, designResult.LocationName, designResult.ScenarioName); desResult.Scenario = scenario; - desResult.LocationScenarioCount = scenario.Location.Scenarios.Count; - desResult.SoilProfile = GetSoilProfileByName(damProjectData, designResult.ProfileName); - if (desResult.SoilProfile == null) + var soilProfile = GetSoilProfileByName(damProjectData, designResult.ProfileName); + if (soilProfile == null) { desResult.SoilGeometry2DName = designResult.ProfileName; } + else + { + desResult.SoilProfile = soilProfile; + } if (designResult.PipingDesignResults != null) { @@ -187,6 +190,7 @@ if (desResult.Scenario != null) { + desResult.LocationScenarioCount = scenario.Location.Scenarios.Count; desResult.Scenario.CalculationResult = desResult.CalculationResult; desResult.Scenario.CalculationResults.Add(desResult); }