Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml =================================================================== diff -u -r2802 -r2826 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 2802) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/Translations.xml (.../Translations.xml) (revision 2826) @@ -362,7 +362,8 @@ - + + Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs =================================================================== diff -u -r2795 -r2826 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs (.../CsvImporterScenarios.cs) (revision 2795) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/CsvImporters/CsvImporterScenarios.cs (.../CsvImporterScenarios.cs) (revision 2826) @@ -68,7 +68,7 @@ public double? HeadPl3 { get; set; } //optional public double? HeadPl4 { get; set; } //optional - public double? PolderLevel { get; set; } // required + public double? PolderLevel { get; set; } // optional public double? HeadPl2 { get; set; } // Optional Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs =================================================================== diff -u -r2803 -r2826 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2803) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/IO/CombineImportedData.cs (.../CombineImportedData.cs) (revision 2826) @@ -637,7 +637,7 @@ { // Add to location scenario list var dikeScenario = dikeLocation.Scenarios.FirstOrDefault(s => s.Location.Name == scenarioRecord.LocationId && - s.LocationScenarioID == scenarioRecord.LocationScenarioId.ToString()); + s.LocationScenarioID == scenarioRecord.LocationScenarioId); if (dikeScenario != null) { var duplicateScenarioRecordError = LocalizationManager.GetTranslatedText(GetType(), "duplicateScenarioRecordError"); @@ -649,56 +649,82 @@ else { var locationRecord = LocationRecords.FirstOrDefault(l => l.LocationId == scenarioRecord.LocationId); - // set values in scenario (1 from scenariorecord, 2 from locationrecord, 3 default) - var modelFactors = new ModelFactors(); - modelFactors.RequiredSafetyFactorStabilityInnerSlope = scenarioRecord.RequiredSafetyFactorStabilityInnerSlope ?? - (locationRecord.RequiredSafetyFactorStabilityInnerSlope ?? modelFactors.RequiredSafetyFactorStabilityInnerSlope); - modelFactors.RequiredSafetyFactorStabilityOuterSlope = scenarioRecord.RequiredSafetyFactorStabilityOuterSlope ?? - (locationRecord.RequiredSafetyFactorStabilityOuterSlope ?? modelFactors.RequiredSafetyFactorStabilityOuterSlope); - modelFactors.RequiredSafetyFactorPiping = scenarioRecord.RequiredSafetyFactorPiping ?? - (locationRecord.RequiredSafetyFactorPiping ?? modelFactors.RequiredSafetyFactorPiping); - modelFactors.UpliftCriterionStability = scenarioRecord.UpliftCriterionStability ?? - (locationRecord.UpliftCriterionStability ?? modelFactors.UpliftCriterionStability); - modelFactors.UpliftCriterionPiping = scenarioRecord.UpliftCriterionPiping ?? - (locationRecord.UpliftCriterionPiping ?? modelFactors.UpliftCriterionPiping); - var scenario = new Scenario - { - Location = dikeLocation, - LocationScenarioID = scenarioRecord.LocationScenarioId, - ModelFactors = modelFactors - }; - scenario.PlLineOffsetBelowDikeToeAtPolder = scenarioRecord.PlLineOffsetBelowDikeToeAtPolder ?? - (locationRecord.PlLineOffsetBelowDikeToeAtPolder ?? scenario.PlLineOffsetBelowDikeToeAtPolder); - scenario.PlLineOffsetBelowDikeTopAtPolder = scenarioRecord.PlLineOffsetBelowDikeTopAtPolder ?? - (locationRecord.PlLineOffsetBelowDikeTopAtPolder ?? scenario.PlLineOffsetBelowDikeTopAtPolder); - scenario.PlLineOffsetBelowDikeTopAtRiver = scenarioRecord.PlLineOffsetBelowDikeTopAtRiver ?? - (locationRecord.PlLineOffsetBelowDikeTopAtRiver ?? scenario.PlLineOffsetBelowDikeTopAtRiver); - scenario.PlLineOffsetBelowShoulderBaseInside = scenarioRecord.PlLineOffsetBelowShoulderBaseInside ?? - (locationRecord.PlLineOffsetBelowShoulderBaseInside ?? scenario.PlLineOffsetBelowShoulderBaseInside); - // set values in scenario (1 from scenariorecord, 2 from locationrecord, 3 stays null) - scenario.PlLineOffsetBelowDikeCrestMiddle = scenarioRecord.PlLineOffsetBelowDikeCrestMiddle ?? - locationRecord.PlLineOffsetBelowDikeCrestMiddle; - scenario.PlLineOffsetFactorBelowShoulderCrest = scenarioRecord.PlLineOffsetFactorBelowShoulderCrest ?? - locationRecord.PlLineOffsetFactorBelowShoulderCrest; - scenario.UsePlLineOffsetBelowDikeCrestMiddle = scenarioRecord.UsePlLineOffsetBelowDikeCrestMiddle ?? - locationRecord.UsePlLineOffsetBelowDikeCrestMiddle; - scenario.UsePlLineOffsetFactorBelowShoulderCrest = scenarioRecord.UsePlLineOffsetFactorBelowShoulderCrest ?? - locationRecord.UsePlLineOffsetFactorBelowShoulderCrest; - scenario.HeadPl3 = scenarioRecord.HeadPl3 ?? locationRecord.HeadPl3; - scenario.HeadPl4 = scenarioRecord.HeadPl4 ?? locationRecord.HeadPl4; - scenario.PolderLevel = scenarioRecord.PolderLevel ?? locationRecord.PolderLevel ?? scenario.PolderLevel; - scenario.HeadPl2 = scenarioRecord.HeadPl2 ?? locationRecord.HeadPl2; - scenario.DikeTableHeight = scenarioRecord.DikeTableHeight ?? locationRecord.DikeTableHeight; - scenario.RiverLevel = scenarioRecord.RiverLevel ?? locationRecord.RiverLevel; - scenario.RiverLevelLow = scenarioRecord.RiverLevelLow ?? locationRecord.RiverLevelLow; - dikeLocation.Scenarios.Add(scenario); + // Check if polder is present in either the location or the scenario record. This + // value is mandatory and must be present in either one. + if (locationRecord?.PolderLevel == null && scenarioRecord.PolderLevel == null) + { + string missingPolderLevelError = LocalizationManager.GetTranslatedText(GetType(), "missingPolderLevel"); + LogMessage logmessage = new LogMessage(LogMessageType.Error, null, string.Format("Record {0} : {1}", + scenarioRecord.ScenarioRecordId, missingPolderLevelError)); + ErrorMessages.Add(logmessage); + } + else + { + var scenario = CreateScenario(dikeLocation, scenarioRecord, locationRecord); + dikeLocation.Scenarios.Add(scenario); + } } } } } /// + /// Creates a based on its input arguments. + /// + /// The that belongs to the . + /// The to retrieve the data from. + /// The to retrieve the data from. + /// A . + private static Scenario CreateScenario(Location dikeLocation, CsvImporterScenarios.ScenarioRecord scenarioRecord, + CsvImporterLocations.LocationRecord locationRecord) + { + // set values in scenario (1 from scenariorecord, 2 from locationrecord, 3 default) + var modelFactors = new ModelFactors(); + modelFactors.RequiredSafetyFactorStabilityInnerSlope = scenarioRecord.RequiredSafetyFactorStabilityInnerSlope ?? + (locationRecord.RequiredSafetyFactorStabilityInnerSlope ?? modelFactors.RequiredSafetyFactorStabilityInnerSlope); + modelFactors.RequiredSafetyFactorStabilityOuterSlope = scenarioRecord.RequiredSafetyFactorStabilityOuterSlope ?? + (locationRecord.RequiredSafetyFactorStabilityOuterSlope ?? modelFactors.RequiredSafetyFactorStabilityOuterSlope); + modelFactors.RequiredSafetyFactorPiping = scenarioRecord.RequiredSafetyFactorPiping ?? + (locationRecord.RequiredSafetyFactorPiping ?? modelFactors.RequiredSafetyFactorPiping); + modelFactors.UpliftCriterionStability = scenarioRecord.UpliftCriterionStability ?? + (locationRecord.UpliftCriterionStability ?? modelFactors.UpliftCriterionStability); + modelFactors.UpliftCriterionPiping = scenarioRecord.UpliftCriterionPiping ?? + (locationRecord.UpliftCriterionPiping ?? modelFactors.UpliftCriterionPiping); + var scenario = new Scenario + { + Location = dikeLocation, + LocationScenarioID = scenarioRecord.LocationScenarioId, + ModelFactors = modelFactors + }; + scenario.PlLineOffsetBelowDikeToeAtPolder = scenarioRecord.PlLineOffsetBelowDikeToeAtPolder ?? + (locationRecord.PlLineOffsetBelowDikeToeAtPolder ?? scenario.PlLineOffsetBelowDikeToeAtPolder); + scenario.PlLineOffsetBelowDikeTopAtPolder = scenarioRecord.PlLineOffsetBelowDikeTopAtPolder ?? + (locationRecord.PlLineOffsetBelowDikeTopAtPolder ?? scenario.PlLineOffsetBelowDikeTopAtPolder); + scenario.PlLineOffsetBelowDikeTopAtRiver = scenarioRecord.PlLineOffsetBelowDikeTopAtRiver ?? + (locationRecord.PlLineOffsetBelowDikeTopAtRiver ?? scenario.PlLineOffsetBelowDikeTopAtRiver); + scenario.PlLineOffsetBelowShoulderBaseInside = scenarioRecord.PlLineOffsetBelowShoulderBaseInside ?? + (locationRecord.PlLineOffsetBelowShoulderBaseInside ?? scenario.PlLineOffsetBelowShoulderBaseInside); + // set values in scenario (1 from scenariorecord, 2 from locationrecord, 3 stays null) + scenario.PlLineOffsetBelowDikeCrestMiddle = scenarioRecord.PlLineOffsetBelowDikeCrestMiddle ?? + locationRecord.PlLineOffsetBelowDikeCrestMiddle; + scenario.PlLineOffsetFactorBelowShoulderCrest = scenarioRecord.PlLineOffsetFactorBelowShoulderCrest ?? + locationRecord.PlLineOffsetFactorBelowShoulderCrest; + scenario.UsePlLineOffsetBelowDikeCrestMiddle = scenarioRecord.UsePlLineOffsetBelowDikeCrestMiddle ?? + locationRecord.UsePlLineOffsetBelowDikeCrestMiddle; + scenario.UsePlLineOffsetFactorBelowShoulderCrest = scenarioRecord.UsePlLineOffsetFactorBelowShoulderCrest ?? + locationRecord.UsePlLineOffsetFactorBelowShoulderCrest; + scenario.HeadPl3 = scenarioRecord.HeadPl3 ?? locationRecord.HeadPl3; + scenario.HeadPl4 = scenarioRecord.HeadPl4 ?? locationRecord.HeadPl4; + scenario.PolderLevel = scenarioRecord.PolderLevel ?? locationRecord.PolderLevel.Value; + scenario.HeadPl2 = scenarioRecord.HeadPl2 ?? locationRecord.HeadPl2; + scenario.DikeTableHeight = scenarioRecord.DikeTableHeight ?? locationRecord.DikeTableHeight; + scenario.RiverLevel = scenarioRecord.RiverLevel ?? locationRecord.RiverLevel; + scenario.RiverLevelLow = scenarioRecord.RiverLevelLow ?? locationRecord.RiverLevelLow; + return scenario; + } + + /// /// Transfers the locations data. /// /// The dike.