// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.Linq; using Core.Common.Utils.Extensions; using Ringtoets.Common.Data.Properties; namespace Ringtoets.Common.Data.IllustrationPoints { /// /// Illustration point which contains the results. /// public class SubMechanismIllustrationPoint : IllustrationPointBase { /// /// Creates a new instance of . /// /// The name of the illustration point result. /// The beta value that was realized. /// The stochasts for the sub mechanism illustration point. /// The output variables. /// Thrown when any of the following parameters is null: /// /// ; /// ; /// . /// /// Thrown when the aren't unique. public SubMechanismIllustrationPoint(string name, double beta, IEnumerable stochasts, IEnumerable illustrationPointResults) : base(name, beta) { if (stochasts == null) { throw new ArgumentNullException(nameof(stochasts)); } if (illustrationPointResults == null) { throw new ArgumentNullException(nameof(illustrationPointResults)); } StochastValidator.ValidateStochasts(stochasts); ValidateResults(illustrationPointResults); Stochasts = stochasts; IllustrationPointResults = illustrationPointResults; } /// /// Gets the stochasts that belong to this sub mechanism illustration point. /// public IEnumerable Stochasts { get; private set; } /// /// Gets the output variables. /// public IEnumerable IllustrationPointResults { get; private set; } public override object Clone() { var clone = (SubMechanismIllustrationPoint) base.Clone(); clone.Stochasts = Stochasts.Select(s => (SubMechanismIllustrationPointStochast) s.Clone()).ToArray(); clone.IllustrationPointResults = IllustrationPointResults.Select(r => (IllustrationPointResult) r.Clone()).ToArray(); return clone; } /// /// Validates a collection of /// by checking for duplicate descriptions. /// /// The collection of /// to be validated. /// Thrown when /// contains results with duplicate descriptions. private static void ValidateResults(IEnumerable illustrationPointResults) { if (illustrationPointResults.HasDuplicates(i => i.Description)) { throw new ArgumentException(string.Format(Resources.SubMechanismIllustrationPoint_ValidateResults_Results_not_unique)); } } } }