Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/StochasticSoilProfile.cs =================================================================== diff -u -r5e70f173b3839314912e086b6c1c784b975ee646 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/StochasticSoilProfile.cs (.../StochasticSoilProfile.cs) (revision 5e70f173b3839314912e086b6c1c784b975ee646) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/StochasticSoilProfile.cs (.../StochasticSoilProfile.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -63,6 +63,17 @@ public PipingSoilProfile SoilProfile { get; set; } /// + /// Updates the probability of the + /// by adding . + /// + /// The amount to increase the + /// with. + public void AddProbability(double probability) + { + Probability += probability; + } + + /// /// Updates the with the properties /// from . /// Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs =================================================================== diff -u -r0df7cded06f5afbac08b97e025242ba55c90ec57 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs (.../PipingSoilProfileReader.cs) (revision 0df7cded06f5afbac08b97e025242ba55c90ec57) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/PipingSoilProfileReader.cs (.../PipingSoilProfileReader.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -320,7 +320,7 @@ "sp1d.SP1D_ID AS {20} " + "FROM Mechanism AS m " + "JOIN Segment AS segment USING(ME_ID) " + - "JOIN StochasticSoilProfile ssp USING(SSM_ID) " + + "JOIN (SELECT SSM_ID, SP1D_ID, SP2D_ID FROM StochasticSoilProfile GROUP BY SSM_ID, SP1D_ID, SP2D_ID) ssp USING(SSM_ID) " + "JOIN SoilProfile1D sp1d USING (SP1D_ID) " + "JOIN (" + subQueryGetNumberOfLayerProfile1D + @@ -381,7 +381,7 @@ "sp2d.SP2D_ID as {20} " + "FROM Mechanism AS m " + "JOIN Segment AS segment USING(ME_ID) " + - "JOIN StochasticSoilProfile ssp USING(SSM_ID) " + + "JOIN (SELECT SSM_ID, SP1D_ID, SP2D_ID FROM StochasticSoilProfile GROUP BY SSM_ID, SP1D_ID, SP2D_ID) ssp USING(SSM_ID) " + "JOIN SoilProfile2D sp2d USING (SP2D_ID) " + "JOIN (" + subQueryGetNumberOfLayerProfile2D + Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/StochasticSoilProfileReader.cs =================================================================== diff -u -rd73c509c93f18a87da76086c871eca2a2c903e12 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/StochasticSoilProfileReader.cs (.../StochasticSoilProfileReader.cs) (revision d73c509c93f18a87da76086c871eca2a2c903e12) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SoilProfile/StochasticSoilProfileReader.cs (.../StochasticSoilProfileReader.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -198,7 +198,7 @@ private StochasticSoilProfile ReadStochasticSoilProfileProbability() { var valueProbability = dataReader[StochasticSoilProfileDatabaseColumns.Probability]; - var probability = (valueProbability.Equals(DBNull.Value)) ? 0 : Convert.ToDouble(valueProbability); + var probability = valueProbability.Equals(DBNull.Value) ? 0 : Convert.ToDouble(valueProbability); var soilProfile1DId = ReadSoilProfile1DId(probability); if (soilProfile1DId != null) Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelImporter.cs =================================================================== diff -u -r0970881ada96a68e26a4453b25b3d7b6bd64479d -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelImporter.cs (.../StochasticSoilModelImporter.cs) (revision 0970881ada96a68e26a4453b25b3d7b6bd64479d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelImporter.cs (.../StochasticSoilModelImporter.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -92,6 +92,7 @@ } AddSoilProfilesToStochasticSoilModels(importSoilProfileResult.ImportedItems, importStochasticSoilModelResult.ImportedItems); + MergeStochasticSoilProfiles(importStochasticSoilModelResult.ImportedItems); CheckIfAllProfilesAreUsed(importSoilProfileResult.ImportedItems, importStochasticSoilModelResult.ImportedItems); if (Canceled) { @@ -117,27 +118,27 @@ { if (!stochasticSoilModel.StochasticSoilProfiles.Any()) { - log.WarnFormat(Resources.PipingSoilProfilesImporter_ValidateStochasticSoilModel_No_profiles_found_in_stochastic_soil_model_0, + log.WarnFormat(Resources.StochasticSoilModelImporter_ValidateStochasticSoilModel_No_profiles_found_in_stochastic_soil_model_0, stochasticSoilModel.Name); return false; } if (stochasticSoilModel.StochasticSoilProfiles.Any(ssp => ssp.SoilProfile == null)) { - log.WarnFormat(Resources.PipingSoilProfilesImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochastic_soil_profile_without_profile, + log.WarnFormat(Resources.StochasticSoilModelImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochastic_soil_profile_without_profile, stochasticSoilModel.Name); return false; } if (!IsSumOfAllProbabilitiesEqualToOne(stochasticSoilModel)) { - log.WarnFormat(Resources.PipingSoilProfilesImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_stochastic_soil_model_0_is_not_correct, + log.WarnFormat(Resources.StochasticSoilModelImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_stochastic_soil_model_0_is_not_correct, stochasticSoilModel.Name); } return true; } protected override void LogImportCanceledMessage() { - log.Info(Resources.PipingSoilProfilesImporter_Import_Import_canceled); + log.Info(Resources.StochasticSoilModelImporter_Import_Import_canceled); } private IEnumerable UpdatedInstances { get; set; } @@ -180,12 +181,35 @@ } } + private void MergeStochasticSoilProfiles(ICollection stochasticSoilModels) + { + foreach (var stochasticSoilModel in stochasticSoilModels) + { + var profiles = stochasticSoilModel.StochasticSoilProfiles.OrderBy(sp => sp.SoilProfileId).ToArray(); + for (int i = 1; i < profiles.Length; i++) + { + var previousProfile = profiles[i - 1]; + var currentProfile = profiles[i]; + if (currentProfile.SoilProfileId == previousProfile.SoilProfileId && + currentProfile.SoilProfileType == previousProfile.SoilProfileType) + { + log.Warn(string.Format(Resources.StochasticSoilModelImporter_MergeStochasticSoilProfiles_Multiple_SoilProfile_0_used_in_StochasticSoilModel_1_Probabilities_added_, + previousProfile.SoilProfile.Name, + stochasticSoilModel.Name)); + + previousProfile.AddProbability(currentProfile.Probability); + stochasticSoilModel.StochasticSoilProfiles.Remove(currentProfile); + } + } + } + } + private void CheckIfAllProfilesAreUsed(ICollection soilProfiles, ICollection stochasticSoilModels) { - NotifyProgress(Resources.PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profiles, 1, 1); + NotifyProgress(Resources.StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profiles, 1, 1); foreach (var soilProfile in soilProfiles.Where(soilProfile => !PipingSoilProfileIsUsed(soilProfile, stochasticSoilModels))) { - log.WarnFormat(Resources.PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_in_any_stochastic_soil_model, soilProfile.Name); + log.WarnFormat(Resources.StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_in_any_stochastic_soil_model, soilProfile.Name); } } @@ -196,7 +220,7 @@ private void HandleException(Exception e) { - var message = string.Format(Resources.PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped, + var message = string.Format(Resources.StochasticSoilModelImporter_CriticalErrorMessage_0_File_Skipped, e.Message); log.Error(message); } @@ -205,7 +229,7 @@ private ReadResult ReadStochasticSoilModels() { - NotifyProgress(Resources.PipingSoilProfilesImporter_Reading_database, 1, 1); + NotifyProgress(Resources.StochasticSoilModelImporter_Reading_database, 1, 1); try { using (var stochasticSoilModelReader = new StochasticSoilModelReader(FilePath)) @@ -234,12 +258,12 @@ } try { - NotifyProgress(Resources.PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Reading_stochastic_soil_models_from_database, currentStep++, totalNumberOfSteps); + NotifyProgress(Resources.StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Reading_stochastic_soil_models_from_database, currentStep++, totalNumberOfSteps); soilModels.Add(stochasticSoilModelReader.ReadStochasticSoilModel()); } catch (StochasticSoilProfileReadException e) { - var message = string.Format(Resources.PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_soil_model_skipped, e.Message); + var message = string.Format(Resources.StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_soil_model_skipped, e.Message); log.Error(message); } } @@ -255,7 +279,7 @@ private ReadResult ReadSoilProfiles() { - NotifyProgress(Resources.PipingSoilProfilesImporter_Reading_database, 1, 1); + NotifyProgress(Resources.StochasticSoilModelImporter_Reading_database, 1, 1); try { using (var soilProfileReader = new PipingSoilProfileReader(FilePath)) @@ -284,18 +308,18 @@ } try { - NotifyProgress(Resources.PipingSoilProfilesImporter_ReadingSoilProfiles, currentStep++, totalNumberOfSteps); + NotifyProgress(Resources.StochasticSoilModelImporter_ReadingSoilProfiles, currentStep++, totalNumberOfSteps); profiles.Add(soilProfileReader.ReadProfile()); } catch (PipingSoilProfileReadException e) { - var message = string.Format(Resources.PipingSoilProfilesImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skipped, + var message = string.Format(Resources.StochasticSoilModelImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skipped, e.Message); log.Error(message); } catch (CriticalFileReadException e) { - var message = string.Format(Resources.PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped, + var message = string.Format(Resources.StochasticSoilModelImporter_CriticalErrorMessage_0_File_Skipped, FilePath, e.Message); log.Error(message); return new ReadResult(true); Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelReplaceData.cs =================================================================== diff -u -r673bf2f4f4de6006444aae3a10183f9442eb0f23 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelReplaceData.cs (.../StochasticSoilModelReplaceData.cs) (revision 673bf2f4f4de6006444aae3a10183f9442eb0f23) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/FileImporter/StochasticSoilModelReplaceData.cs (.../StochasticSoilModelReplaceData.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -53,7 +53,7 @@ var stochasticSoilModel = targetCollection.FirstOrDefault(ssm => ssm.Id == readStochasticSoilModel.Id); if (stochasticSoilModel != null) { - log.WarnFormat(Properties.Resources.PipingSoilProfilesImporter_AddImportedDataToModel_Stochastisch_soil_model_0_already_exists, stochasticSoilModel.Name); + log.WarnFormat(Properties.Resources.StochasticSoilModelImporter_AddImportedDataToModel_Stochastisch_soil_model_0_already_exists, stochasticSoilModel.Name); } modelsToAdd.Add(readStochasticSoilModel); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.Designer.cs =================================================================== diff -u -r06d2a1e1525e818b3e71c4bcd61778e1ef4b2df7 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 06d2a1e1525e818b3e71c4bcd61778e1ef4b2df7) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -128,134 +128,6 @@ } /// - /// Looks up a localized string similar to Het stochastische ondergrondmodel '{0}' bestaat al in het toetsspoor.. - /// - public static string PipingSoilProfilesImporter_AddImportedDataToModel_Stochastisch_soil_model_0_already_exists { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_AddImportedDataToModel_Stochastisch_soil_model_0_alrea" + - "dy_exists", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to De uitgelezen ondergrondschematisatie '{0}' wordt niet gebruikt in een van de stochastische ondergrondmodellen.. - /// - public static string PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_in_any_stochastic_soil_model { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_in" + - "_any_stochastic_soil_model", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Controleren van ondergrondschematisaties.. - /// - public static string PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profiles { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profiles" + - "", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} - ///Het bestand wordt overgeslagen.. - /// - public static string PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} Dit stochastische ondergrondmodel wordt overgeslagen.. - /// - public static string PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_soil_model_skipped { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_so" + - "il_model_skipped", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inlezen van de stochastische ondergrondmodellen.. - /// - public static string PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Reading_stochastic_soil_models_from_database { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_GetStochasticSoilModelReadResult_Reading_stochastic_so" + - "il_models_from_database", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stochastische ondergrondmodellen importeren afgebroken. Geen data ingelezen.. - /// - public static string PipingSoilProfilesImporter_Import_Import_canceled { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_Import_Import_canceled", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inlezen van de D-Soil Model database.. - /// - public static string PipingSoilProfilesImporter_Reading_database { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_Reading_database", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Inlezen van de ondergrondschematisatie uit de D-Soil Model database.. - /// - public static string PipingSoilProfilesImporter_ReadingSoilProfiles { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_ReadingSoilProfiles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} - ///Deze ondergrondschematisatie wordt overgeslagen.. - /// - public static string PipingSoilProfilesImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skipped { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skipp" + - "ed", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Er zijn geen ondergrondschematisaties gevonden in het stochastische ondergrondmodel '{0}'. Dit model wordt overgeslagen.. - /// - public static string PipingSoilProfilesImporter_ValidateStochasticSoilModel_No_profiles_found_in_stochastic_soil_model_0 { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_ValidateStochasticSoilModel_No_profiles_found_in_stoch" + - "astic_soil_model_0", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Het stochastische ondergrondmodel '{0}' heeft een ongespecificeerde ondergrondschematisatie. Dit model wordt overgeslagen.. - /// - public static string PipingSoilProfilesImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochastic_soil_profile_without_profile { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochasti" + - "c_soil_profile_without_profile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to De som van de kansen van voorkomen in het stochastich ondergrondmodel '{0}' is niet gelijk aan 100%.. - /// - public static string PipingSoilProfilesImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_stochastic_soil_model_0_is_not_correct { - get { - return ResourceManager.GetString("PipingSoilProfilesImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_st" + - "ochastic_soil_model_0_is_not_correct", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Karakteristieke punten gevonden zonder bijbehorende profielschematisatie voor locatie '{0}'.. /// public static string PipingSurfaceLinesCsvImporter_AddImportedDataToModel_Characteristic_points_found_for_unknown_SurfaceLine_0_ { @@ -500,5 +372,143 @@ return ResourceManager.GetString("Soil_file_name", resourceCulture); } } + + /// + /// Looks up a localized string similar to Het stochastische ondergrondmodel '{0}' bestaat al in het toetsspoor.. + /// + public static string StochasticSoilModelImporter_AddImportedDataToModel_Stochastisch_soil_model_0_already_exists { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_AddImportedDataToModel_Stochastisch_soil_model_0_alre" + + "ady_exists", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De uitgelezen ondergrondschematisatie '{0}' wordt niet gebruikt in een van de stochastische ondergrondmodellen.. + /// + public static string StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_in_any_stochastic_soil_model { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_SoilProfile_0_is_not_used_i" + + "n_any_stochastic_soil_model", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Controleren van ondergrondschematisaties.. + /// + public static string StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profiles { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_CheckIfAllProfilesAreUsed_Start_checking_soil_profile" + + "s", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} + ///Het bestand wordt overgeslagen.. + /// + public static string StochasticSoilModelImporter_CriticalErrorMessage_0_File_Skipped { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_CriticalErrorMessage_0_File_Skipped", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} Dit stochastische ondergrondmodel wordt overgeslagen.. + /// + public static string StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_soil_model_skipped { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Error_0_stochastic_s" + + "oil_model_skipped", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Inlezen van de stochastische ondergrondmodellen.. + /// + public static string StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Reading_stochastic_soil_models_from_database { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_GetStochasticSoilModelReadResult_Reading_stochastic_s" + + "oil_models_from_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Stochastische ondergrondmodellen importeren afgebroken. Geen data ingelezen.. + /// + public static string StochasticSoilModelImporter_Import_Import_canceled { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_Import_Import_canceled", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld.. + /// + public static string StochasticSoilModelImporter_MergeStochasticSoilProfiles_Multiple_SoilProfile_0_used_in_StochasticSoilModel_1_Probabilities_added_ { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_MergeStochasticSoilProfiles_Multiple_SoilProfile_0_us" + + "ed_in_StochasticSoilModel_1_Probabilities_added.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Inlezen van de D-Soil Model database.. + /// + public static string StochasticSoilModelImporter_Reading_database { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_Reading_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Inlezen van de ondergrondschematisatie uit de D-Soil Model database.. + /// + public static string StochasticSoilModelImporter_ReadingSoilProfiles { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_ReadingSoilProfiles", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to {0} + ///Deze ondergrondschematisatie wordt overgeslagen.. + /// + public static string StochasticSoilModelImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skipped { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_ReadSoilProfiles_ParseErrorMessage_0_SoilProfile_skip" + + "ped", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Er zijn geen ondergrondschematisaties gevonden in het stochastische ondergrondmodel '{0}'. Dit model wordt overgeslagen.. + /// + public static string StochasticSoilModelImporter_ValidateStochasticSoilModel_No_profiles_found_in_stochastic_soil_model_0 { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_ValidateStochasticSoilModel_No_profiles_found_in_stoc" + + "hastic_soil_model_0", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Het stochastische ondergrondmodel '{0}' heeft een ongespecificeerde ondergrondschematisatie. Dit model wordt overgeslagen.. + /// + public static string StochasticSoilModelImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochastic_soil_profile_without_profile { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_ValidateStochasticSoilModel_SoilModel_0_with_stochast" + + "ic_soil_profile_without_profile", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De som van de kansen van voorkomen in het stochastich ondergrondmodel '{0}' is niet gelijk aan 100%.. + /// + public static string StochasticSoilModelImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_stochastic_soil_model_0_is_not_correct { + get { + return ResourceManager.GetString("StochasticSoilModelImporter_ValidateStochasticSoilModel_Sum_of_probabilities_of_s" + + "tochastic_soil_model_0_is_not_correct", resourceCulture); + } + } } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.resx =================================================================== diff -u -r06d2a1e1525e818b3e71c4bcd61778e1ef4b2df7 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 06d2a1e1525e818b3e71c4bcd61778e1ef4b2df7) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -134,21 +134,21 @@ {0} Deze profielschematisatie wordt overgeslagen. - + Stochastische ondergrondmodellen importeren afgebroken. Geen data ingelezen. - + Inlezen van de D-Soil Model database. - + {0} Het bestand wordt overgeslagen. - + {0} Deze ondergrondschematisatie wordt overgeslagen. - + Inlezen van de ondergrondschematisatie uit de D-Soil Model database. @@ -197,25 +197,25 @@ Inlezen van het profielschematisatiesbestand. - + Het stochastische ondergrondmodel '{0}' bestaat al in het toetsspoor. - + De uitgelezen ondergrondschematisatie '{0}' wordt niet gebruikt in een van de stochastische ondergrondmodellen. - + Er zijn geen ondergrondschematisaties gevonden in het stochastische ondergrondmodel '{0}'. Dit model wordt overgeslagen. - + Inlezen van de stochastische ondergrondmodellen. - + De som van de kansen van voorkomen in het stochastich ondergrondmodel '{0}' is niet gelijk aan 100%. - + {0} Dit stochastische ondergrondmodel wordt overgeslagen. - + Controleren van ondergrondschematisaties. @@ -227,7 +227,7 @@ Klaar met het inlezen van karakteristieke punten uit bestand '{0}'. - + Het stochastische ondergrondmodel '{0}' heeft een ongespecificeerde ondergrondschematisatie. Dit model wordt overgeslagen. @@ -252,4 +252,7 @@ Selecteer de nieuwe locatie van het geïmporteerde bestand + + Ondergrondschematisatie '{0}' is meerdere keren gevonden in ondergrondmodel '{1}'. Kansen van voorkomen worden opgeteld. + \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/StochasticSoilProfileTest.cs =================================================================== diff -u -r5e70f173b3839314912e086b6c1c784b975ee646 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/StochasticSoilProfileTest.cs (.../StochasticSoilProfileTest.cs) (revision 5e70f173b3839314912e086b6c1c784b975ee646) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/StochasticSoilProfileTest.cs (.../StochasticSoilProfileTest.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -45,6 +45,26 @@ } [Test] + [TestCase(0)] + [TestCase(2.3)] + [TestCase(0.55)] + [TestCase(double.NaN)] + [TestCase(double.MaxValue)] + [TestCase(double.MinValue)] + public void AddProbability_DifferentValues_ProbabilityIncreasedAsExpected(double probabilityToAdd) + { + // Setup + var startProbability = new Random(21).NextDouble(); + var profile = new StochasticSoilProfile(startProbability, SoilProfileType.SoilProfile1D, -1); + + // Call + profile.AddProbability(probabilityToAdd); + + // Assert + Assert.AreEqual(startProbability + probabilityToAdd, profile.Probability); + } + + [Test] public void Update_WithNullProfile_ThrowsArgumentNullException() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.IO.Test/test-data/PipingSoilProfilesReader/multipleStochasticSoilProfileForSameProfile.soil =================================================================== diff -u Binary files differ Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/StochasticSoilModelImporterTest.cs =================================================================== diff -u -rc6aafdb993afe50d270dc5531523c4163f9bd2c8 -r4e4ced94d27f939fc77f364201840814dc542af1 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/StochasticSoilModelImporterTest.cs (.../StochasticSoilModelImporterTest.cs) (revision c6aafdb993afe50d270dc5531523c4163f9bd2c8) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/FileImporter/StochasticSoilModelImporterTest.cs (.../StochasticSoilModelImporterTest.cs) (revision 4e4ced94d27f939fc77f364201840814dc542af1) @@ -104,7 +104,7 @@ messages => { string[] messageArray = messages.ToArray(); - var message = string.Format(Resources.PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped, string.Empty); + var message = $"{string.Empty} \r\nHet bestand wordt overgeslagen."; StringAssert.EndsWith(message, messageArray[0]); }); Assert.AreEqual(1, progress); @@ -135,7 +135,7 @@ messages => { string[] messageArray = messages.ToArray(); - var message = string.Format(Resources.PipingSoilProfilesImporter_CriticalErrorMessage_0_File_Skipped, string.Empty); + var message = $"{string.Empty} \r\nHet bestand wordt overgeslagen."; StringAssert.EndsWith(message, messageArray[0]); }); Assert.AreEqual(1, progress); @@ -569,6 +569,32 @@ } [Test] + public void Import_ModelWithTwoStochasticSoilProfileForSameProfile_ProbabilitiesAddedAndLog() + { + // Setup + string pathToFile = Path.Combine(testDataPath, "multipleStochasticSoilProfileForSameProfile.soil"); + + var failureMechanism = new PipingFailureMechanism(); + var importer = new StochasticSoilModelImporter(failureMechanism.StochasticSoilModels, pathToFile, new StochasticSoilModelReplaceData()); + importer.SetProgressChanged(IncrementProgress); + + var importResult = false; + + // Call + Action importAction = () => importResult = importer.Import(); + + // Assert + TestHelper.AssertLogMessageIsGenerated(importAction, "Ondergrondschematisatie 'Profile' is meerdere keren gevonden in ondergrondmodel 'StochasticSoilModelName'. Kansen van voorkomen worden opgeteld.", 1); + Assert.IsTrue(importResult); + StochasticSoilModelCollection importedModels = failureMechanism.StochasticSoilModels; + Assert.AreEqual(pathToFile, importedModels.SourcePath); + Assert.AreEqual(1, importedModels.Count); + var firstModel = importedModels.First(); + Assert.AreEqual(1, firstModel.StochasticSoilProfiles.Count); + Assert.AreEqual(1.0, firstModel.StochasticSoilProfiles[0].Probability); + } + + [Test] public void Import_ModelWithOneStochasticSoilProfile2DWithoutLayerPropertiesSet_ImportModelToCollection() { // Setup