// 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 Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.IO.Properties; namespace Ringtoets.Common.IO { /// /// Reads the settings defined at level. /// public class AssessmentSectionSettingsReader { private const int assessmentSectionIdColumnIndex = 0; private const int lengthEffectColumnIndex = 1; private const char separatorCharacter = ';'; private const string duneAssessmentSectionFlag = "Duin"; /// /// Reads the settings from . /// /// The fully initialized settings. public AssessmentSectionSettings[] ReadSettings() { string[] ihwFileLines = Resources.IHW_filecontents.Split(new[] { Environment.NewLine }, StringSplitOptions.None); var resultArray = new AssessmentSectionSettings[ihwFileLines.Length - 1]; for (var i = 1; i < ihwFileLines.Length; i++) { resultArray[i - 1] = ReadAssessmentSectionSettings(ihwFileLines[i]); } return resultArray; } /// /// Reads the assessment section settings from a line of text. /// /// The line to be parsed. /// The initialized . /// Thrown when /// does not have at least 2 columns or when the columns are not separated by a ';'. /// Thrown when the second column text does not represent a number. /// Thrown when the second column text represents a number /// that is too big or too small to be stored in an . private static AssessmentSectionSettings ReadAssessmentSectionSettings(string lineToParse) { string[] lineValues = lineToParse.Split(new[] { separatorCharacter }, StringSplitOptions.None); string assessmentSectionId = lineValues[assessmentSectionIdColumnIndex]; string nValue = lineValues[lengthEffectColumnIndex]; if (nValue == duneAssessmentSectionFlag) { return AssessmentSectionSettings.CreateDuneAssessmentSectionSettings(assessmentSectionId); } int n = int.Parse(nValue); return AssessmentSectionSettings.CreateDikeAssessmentSectionSettings(assessmentSectionId, n); } } }