// Copyright (C) Stichting Deltares 2016. 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 Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Settings; namespace Ringtoets.HydraRing.Calculation.IO { /// /// The reader for in csv format. /// internal class HydraulicModelsSettingsCsvReader : HydraRingSettingsVariableCsvReader>> { private readonly Dictionary columns = new Dictionary { { ringIdKey, 0 }, { variableKey, 1 }, { timeIntegrationSchemeIdKey, 2 } }; /// /// Creates a new instance of . /// /// The file contents to read. /// Thrown when is not set. public HydraulicModelsSettingsCsvReader(string fileContents) : base(fileContents, new Dictionary>()) {} protected override void CreateSetting(IList line) { // Get failure mechanism var failureMechanismType = GetFailureMechanismType(GetStringValueFromElement(line[columns[variableKey]])); if (!Settings.ContainsKey(failureMechanismType)) { Settings.Add(failureMechanismType, new Dictionary()); } // Get TrajectId var ringId = GetRingId(line); if (!Settings[failureMechanismType].ContainsKey(ringId)) { Settings[failureMechanismType].Add(ringId, GetHydraulicModelsSetting(line)); } } private string GetRingId(IList line) { return GetStringValueFromElement(line[columns[ringIdKey]]); } private HydraulicModelsSetting GetHydraulicModelsSetting(IList line) { return new HydraulicModelsSetting(GetIntValueFromElement(line[columns[timeIntegrationSchemeIdKey]])); } #region Csv column names private const string ringIdKey = "TrajectID"; private const string variableKey = "Variable"; private const string timeIntegrationSchemeIdKey = "TimeIntegrationSchemeIdKey"; #endregion } }