// 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 Core.Common.Base.Geometry; using log4net; using Ringtoets.Common.IO.Properties; using Ringtoets.Common.IO.SurfaceLines; using Ringtoets.MacroStabilityInwards.Primitives; namespace Ringtoets.MacroStabilityInwards.IO.Importers { /// /// Extension methods for the class. /// public static class RingtoetsMacroStabilityInwardsSurfaceLineExtensions { private static readonly ILog log = LogManager.GetLogger(typeof(RingtoetsMacroStabilityInwardsSurfaceLineExtensions)); /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetDitchPolderSide(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetDitchPolderSideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetBottomDitchPolderSide(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetBottomDitchPolderSideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetBottomDitchDikeSide(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetBottomDitchDikeSideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetDitchDikeSide(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetDitchDikeSideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetSurfaceLevelInside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetSurfaceLevelInsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetSurfaceLevelOutside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetSurfaceLevelOutsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetDikeTopAtPolder(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetDikeTopAtPolderAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetShoulderBaseInside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetShoulderBaseInsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetShoulderTopInside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetShoulderTopInsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetTrafficLoadInside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetTrafficLoadInsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetTrafficLoadOutside(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetTrafficLoadOutsideAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetDikeToeAtRiver(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetDikeToeAtRiverAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the at the location of /// . /// /// The to set the /// for. /// The point at which to set the . /// true if the was set, false if /// is null or there is no point in at the location /// of . public static bool TrySetDikeToeAtPolder(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, Point3D point) { if (point != null) { try { surfaceLine.SetDikeToeAtPolderAt(point); return true; } catch (ArgumentException e) { LogError(surfaceLine, e); } } return false; } /// /// Tries to set the relevant characteristic points from the /// on the . /// /// The surface line to set characteristic points for. /// The characteristic points to set, if the collection is valid. /// true if the characteristic points could be set; false otherwise. /// Thrown when is null. public static bool SetCharacteristicPoints(this RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, CharacteristicPoints characteristicPoints) { if (surfaceLine == null) { throw new ArgumentNullException(nameof(surfaceLine)); } if (characteristicPoints == null) { return false; } surfaceLine.TrySetSurfaceLevelOutside(characteristicPoints.SurfaceLevelOutside); surfaceLine.TrySetTrafficLoadOutside(characteristicPoints.TrafficLoadOutside); surfaceLine.TrySetTrafficLoadInside(characteristicPoints.TrafficLoadInside); surfaceLine.TrySetDikeTopAtPolder(characteristicPoints.DikeTopAtPolder); surfaceLine.TrySetShoulderBaseInside(characteristicPoints.ShoulderBaseInside); surfaceLine.TrySetShoulderTopInside(characteristicPoints.ShoulderTopInside); surfaceLine.TrySetDikeToeAtRiver(characteristicPoints.DikeToeAtRiver); surfaceLine.TrySetDitchDikeSide(characteristicPoints.DitchDikeSide); surfaceLine.TrySetBottomDitchDikeSide(characteristicPoints.BottomDitchDikeSide); surfaceLine.TrySetBottomDitchPolderSide(characteristicPoints.BottomDitchPolderSide); surfaceLine.TrySetDitchPolderSide(characteristicPoints.DitchPolderSide); surfaceLine.TrySetDikeToeAtPolder(characteristicPoints.DikeToeAtPolder); surfaceLine.TrySetSurfaceLevelInside(characteristicPoints.SurfaceLevelInside); return true; } private static void LogError(RingtoetsMacroStabilityInwardsSurfaceLine surfaceLine, ArgumentException e) { log.ErrorFormat(Resources.SurfaceLinesCsvImporter_CharacteristicPoint_of_SurfaceLine_0_skipped_cause_1_, surfaceLine.Name, e.Message); } } }