From 319a44c2b1010f8141998997cd62f1f6d6064694 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Wed, 11 May 2016 17:43:08 +0200 Subject: [PATCH] added additional field mechanism in ModData --- .../VectoCore/OutputData/IModalDataContainer.cs | 2 ++ .../VectoCore/OutputData/ModalDataContainer.cs | 17 ++++++++++++++--- .../Utils/MockModalDataContainer.cs | 6 +++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 6163dc235e..612c31c393 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -93,6 +93,8 @@ namespace TUGraz.VectoCore.OutputData Dictionary<string, DataColumn> Auxiliaries { get; set; } + void SetDataValue(string fieldName, object value); + void AddAuxiliary(string id); } diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 55d26cee90..c73b01af3d 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -33,6 +33,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using System.Runtime.CompilerServices; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.Simulation.Data; @@ -49,6 +50,7 @@ namespace TUGraz.VectoCore.OutputData //private readonly VectoRunData _runData; private readonly IModalDataWriter _writer; + private readonly List<string> _additionalColumns = new List<string>(); public string RunName { get; private set; } public string CycleName { get; private set; } public string RunSuffix { get; private set; } @@ -184,11 +186,11 @@ namespace TUGraz.VectoCore.OutputData } var strCols = dataColumns.Select(x => x.GetName()) - .Concat((Auxiliaries.Values.Select(c => c.ColumnName))) - .Concat(new[] { ModalResultField.FCMap, ModalResultField.FCAUXc, ModalResultField.FCWHTCc }.Select(x => x.GetName())); + .Concat(Auxiliaries.Values.Select(c => c.ColumnName)) + .Concat(new[] { ModalResultField.FCMap, ModalResultField.FCAUXc, ModalResultField.FCWHTCc }.Select(x => x.GetName())) + .Concat(_additionalColumns); if (_mode != ExecutionMode.Declaration || WriteModalResults) { - //VectoCSVFile.Write(_modWriter, new DataView(Data).ToTable(false, strCols.ToArray())); _writer.WriteModData(RunName, CycleName, RunSuffix, new DataView(Data).ToTable(false, strCols.ToArray())); } @@ -220,6 +222,15 @@ namespace TUGraz.VectoCore.OutputData set { CurrentRow[Auxiliaries[auxId]] = value; } } + [MethodImpl(MethodImplOptions.Synchronized)] + public void SetDataValue(string fieldName, object value) + { + if (!Data.Columns.Contains(fieldName)) { + _additionalColumns.Add(fieldName); + Data.Columns.Add(fieldName); + } + CurrentRow[fieldName] = value; + } public Dictionary<string, DataColumn> Auxiliaries { get; set; } diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs index c1dfa3eea0..1ff028aaed 100644 --- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs @@ -78,7 +78,6 @@ namespace TUGraz.VectoCore.Tests.Utils get { return VectoRun.Status.Success; } } - public void Finish(VectoRun.Status runStatus) {} public bool WriteModalResults { get; set; } @@ -95,6 +94,11 @@ namespace TUGraz.VectoCore.Tests.Utils public Dictionary<string, DataColumn> Auxiliaries { get; set; } + public void SetDataValue(string fieldName, object value) + { + throw new System.NotImplementedException(); + } + public void AddAuxiliary(string id) { var auxColName = ModalResultField.P_aux_ + id; -- GitLab