diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 6163dc235e2056783e408eeb7d7735138473c776..612c31c393a2774ce6bde709a4428ee92bab85e5 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 55d26cee907dcb222379281d47eba6bd1dccbfd7..c73b01af3dddf8a6fc90f3c53d8538d8b935269d 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 c1dfa3eea042f4143a7208038f85381ec9d76160..1ff028aaed45e694a81395c9438da5677c6c84b3 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;