// Copyright (C) Stichting Deltares 2018. 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.ComponentModel;
using System.Linq;
using Assembly.Kernel.Exceptions;
using Riskeer.AssemblyTool.KernelWrapper.Properties;
namespace Riskeer.AssemblyTool.KernelWrapper.Creators
{
///
/// Class that creates to localized error messages for the assembly tool.
///
public static class AssemblyErrorMessageCreator
{
///
/// Creates a localized string based on the contents of .
///
/// The collection of to localize.
/// A localized string containing the error messages.
/// Thrown when is null.
/// Thrown when contains an
/// invalid value of .
public static string CreateErrorMessage(IEnumerable errorMessages)
{
if (errorMessages == null)
{
throw new ArgumentNullException(nameof(errorMessages));
}
return errorMessages.Count() == 1
? GetErrorMessage(errorMessages.Single().ErrorCode)
: errorMessages.Aggregate(string.Empty, (current, message) => current + "- " + GetErrorMessage(message.ErrorCode) + "\n");
}
///
/// Creates a generic error message.
///
/// A generic error message.
public static string CreateGenericErrorMessage()
{
return Resources.AssemblyErrorMessageCreator_GenericErrorMessage;
}
///
/// Gets the localized error message that belongs to the given .
///
/// The to localize.
/// A localized string.
/// Thrown when
/// is an invalid value of .
/// Thrown when is a valid value,
/// but unsupported.
private static string GetErrorMessage(EAssemblyErrors assemblyError)
{
if (!Enum.IsDefined(typeof(EAssemblyErrors), assemblyError))
{
throw new InvalidEnumArgumentException(nameof(assemblyError), (int) assemblyError, typeof(EAssemblyErrors));
}
switch (assemblyError)
{
case EAssemblyErrors.SignallingLimitOutOfRange:
return Resources.AssemblyErrorMessageCreator_SignalingLimitOutOfRange;
case EAssemblyErrors.LowerLimitOutOfRange:
return Resources.AssemblyErrorMessageCreator_LowerLimitOutOfRange;
case EAssemblyErrors.FailurePropbabilityMarginOutOfRange:
return Resources.AssemblyErrorMessageCreator_FailureProbabilityMarginOutOfRange;
case EAssemblyErrors.LengthEffectFactorOutOfRange:
return Resources.AssemblyErrorMessageCreator_LengthEffectFactorOutOfRange;
case EAssemblyErrors.SectionLengthOutOfRange:
return Resources.AssemblyErrorMessageCreator_SectionLengthOutOfRange;
case EAssemblyErrors.SignallingLimitAboveLowerLimit:
return Resources.AssemblyErrorMessageCreator_SignalingLimitAboveLowerLimit;
case EAssemblyErrors.PsigDsnAbovePsig:
return Resources.AssemblyErrorMessageCreator_PsigDsnAbovePsig;
case EAssemblyErrors.PlowDsnAbovePlow:
return Resources.AssemblyErrorMessageCreator_PlowDsnAbovePlow;
case EAssemblyErrors.LowerLimitIsAboveUpperLimit:
return Resources.AssemblyErrorMessageCreator_LowerLimitIsAboveUpperLimit;
case EAssemblyErrors.CategoryLowerLimitOutOfRange:
return Resources.AssemblyErrorMessageCreator_CategoryLowerLimitOutOfRange;
case EAssemblyErrors.CategoryUpperLimitOutOfRange:
return Resources.AssemblyErrorMessageCreator_CategoryUpperLimitOutOfRange;
case EAssemblyErrors.TranslateAssessmentInvalidInput:
return Resources.AssemblyErrorMessageCreator_TranslateAssessmentInvalidInput;
case EAssemblyErrors.ValueMayNotBeNull:
return Resources.AssemblyErrorMessageCreator_ValueMayNotBeNull;
case EAssemblyErrors.CategoryNotAllowed:
return Resources.AssemblyErrorMessageCreator_CategoryNotAllowed;
case EAssemblyErrors.DoesNotComplyAfterComply:
return Resources.AssemblyErrorMessageCreator_DoesNotComplyAfterComply;
case EAssemblyErrors.FmSectionLengthInvalid:
return Resources.AssemblyErrorMessageCreator_FmSectionLengthInvalid;
case EAssemblyErrors.FmSectionSectionStartEndInvalid:
return Resources.AssemblyErrorMessageCreator_FmSectionSectionStartEndInvalid;
case EAssemblyErrors.FailureProbabilityOutOfRange:
return Resources.AssemblyErrorMessageCreator_FailureProbabilityOutOfRange;
case EAssemblyErrors.InputNotTheSameType:
return Resources.AssemblyErrorMessageCreator_InputNotTheSameType;
case EAssemblyErrors.FailureMechanismAssemblerInputInvalid:
return Resources.AssemblyErrorMessageCreator_NoSectionsImported;
case EAssemblyErrors.CommonFailureMechanismSectionsInvalid:
return Resources.AssemblyErrorMessageCreator_CommonFailureMechanismSectionsInvalid;
case EAssemblyErrors.CommonFailureMechanismSectionsNotConsecutive:
return Resources.AssemblyErrorMessageCreator_CommonFailureMechanismSectionsNotConsecutive;
case EAssemblyErrors.RequestedPointOutOfRange:
return Resources.AssemblyErrorMessageCreator_RequestedPointOutOfRange;
case EAssemblyErrors.SectionsWithoutCategory:
return Resources.AssemblyErrorMessageCreator_SectionsWithoutCategory;
case EAssemblyErrors.InvalidCategoryLimits:
return Resources.AssemblyErrorMessageCreator_GetErrorMessage_InvalidCategoryLimits;
default:
throw new NotSupportedException();
}
}
}
}