From 82b06c0627acd607702712cb728a9d1cdd659799 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Wed, 21 Dec 2022 10:42:14 -0500 Subject: [PATCH] Fixes #1832 individual serialization (#1847) * Fixes #1832 individual serialization * PR feedback --- .../Domain/Builder/IndividualBuildingBlock.cs | 8 ++----- .../Domain/Builder/OriginDataItem.cs | 11 ++++++++++ .../Domain/Builder/OriginDataItems.cs | 20 +++++++++++++++++ .../Xml/BuildingBlockXmlSerializer.cs | 20 ++++++++++++++++- .../Xml/ExpressionParameterXmlSerializer.cs | 5 ----- .../Xml/IndividualParameterXmlSerializer.cs | 9 ++++++++ .../Xml/OriginDataItemXmlSerializer.cs | 16 ++++++++++++++ .../Xml/OriginDataItemsXmlSerializer.cs | 22 +++++++++++++++++++ .../Xml/PathAndValueEntityXmlSerializer.cs | 1 + 9 files changed, 100 insertions(+), 12 deletions(-) create mode 100644 src/OSPSuite.Core/Domain/Builder/OriginDataItem.cs create mode 100644 src/OSPSuite.Core/Domain/Builder/OriginDataItems.cs create mode 100644 src/OSPSuite.Core/Serialization/Xml/IndividualParameterXmlSerializer.cs create mode 100644 src/OSPSuite.Core/Serialization/Xml/OriginDataItemXmlSerializer.cs create mode 100644 src/OSPSuite.Core/Serialization/Xml/OriginDataItemsXmlSerializer.cs diff --git a/src/OSPSuite.Core/Domain/Builder/IndividualBuildingBlock.cs b/src/OSPSuite.Core/Domain/Builder/IndividualBuildingBlock.cs index 03b22a727..613231055 100644 --- a/src/OSPSuite.Core/Domain/Builder/IndividualBuildingBlock.cs +++ b/src/OSPSuite.Core/Domain/Builder/IndividualBuildingBlock.cs @@ -1,11 +1,7 @@ -using OSPSuite.Utility.Collections; - -namespace OSPSuite.Core.Domain.Builder +namespace OSPSuite.Core.Domain.Builder { public class IndividualBuildingBlock : PathAndValueEntityBuildingBlockFromPKSim { - public Cache OriginData { set; get; } = new Cache(); - public ValueOrigin ValueOrigin { set; get; } - public CalculationMethodCache CalculationMethodCache { set; get; } + public OriginDataItems OriginData { get; } = new OriginDataItems(); } } \ No newline at end of file diff --git a/src/OSPSuite.Core/Domain/Builder/OriginDataItem.cs b/src/OSPSuite.Core/Domain/Builder/OriginDataItem.cs new file mode 100644 index 000000000..4af43afbe --- /dev/null +++ b/src/OSPSuite.Core/Domain/Builder/OriginDataItem.cs @@ -0,0 +1,11 @@ +namespace OSPSuite.Core.Domain.Builder +{ + public class OriginDataItem + { + public string Name { get; set; } + public string DisplayName { get; set; } + public string Description { get; set; } + public string Icon { get; set; } + public string Value { get; set; } + } +} \ No newline at end of file diff --git a/src/OSPSuite.Core/Domain/Builder/OriginDataItems.cs b/src/OSPSuite.Core/Domain/Builder/OriginDataItems.cs new file mode 100644 index 000000000..88435e8b9 --- /dev/null +++ b/src/OSPSuite.Core/Domain/Builder/OriginDataItems.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Linq; +using OSPSuite.Utility.Collections; + +namespace OSPSuite.Core.Domain.Builder +{ + public class OriginDataItems + { + private readonly Cache _cache = new Cache(getKey: x => x.Name); + + public IReadOnlyList AllDataItems => _cache.ToList(); + + public ValueOrigin ValueOrigin { set; get; } + + public void AddOriginDataItem(OriginDataItem originDataItem) + { + _cache[originDataItem.Name]= originDataItem; + } + } +} \ No newline at end of file diff --git a/src/OSPSuite.Core/Serialization/Xml/BuildingBlockXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/BuildingBlockXmlSerializer.cs index f7423628f..9917cdd32 100644 --- a/src/OSPSuite.Core/Serialization/Xml/BuildingBlockXmlSerializer.cs +++ b/src/OSPSuite.Core/Serialization/Xml/BuildingBlockXmlSerializer.cs @@ -98,7 +98,25 @@ public override void PerformMapping() } } - public class ExpressionProfileBuildingBlockXmlSerializer : BuildingBlockXmlSerializer + public class PathAndValueEntityBuildingBlockFromPKSimXmlSerializer : BuildingBlockXmlSerializer where TBuilder : PathAndValueEntity where TBuildingBlock : PathAndValueEntityBuildingBlockFromPKSim + { + public override void PerformMapping() + { + base.PerformMapping(); + Map(x => x.PKSimVersion); + } + } + + public class IndividualBuildingBlockXmlSerializer : PathAndValueEntityBuildingBlockFromPKSimXmlSerializer + { + public override void PerformMapping() + { + base.PerformMapping(); + Map(x => x.OriginData); + } + } + + public class ExpressionProfileBuildingBlockXmlSerializer : PathAndValueEntityBuildingBlockFromPKSimXmlSerializer { public override void PerformMapping() { diff --git a/src/OSPSuite.Core/Serialization/Xml/ExpressionParameterXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/ExpressionParameterXmlSerializer.cs index 291ac6743..ce3bcd4d7 100644 --- a/src/OSPSuite.Core/Serialization/Xml/ExpressionParameterXmlSerializer.cs +++ b/src/OSPSuite.Core/Serialization/Xml/ExpressionParameterXmlSerializer.cs @@ -4,10 +4,5 @@ namespace OSPSuite.Core.Serialization.Xml { public class ExpressionParameterXmlSerializer : PathAndValueEntityXmlSerializer { - public override void PerformMapping() - { - base.PerformMapping(); - Map(x => x.Value); - } } } \ No newline at end of file diff --git a/src/OSPSuite.Core/Serialization/Xml/IndividualParameterXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/IndividualParameterXmlSerializer.cs new file mode 100644 index 000000000..da6a5a802 --- /dev/null +++ b/src/OSPSuite.Core/Serialization/Xml/IndividualParameterXmlSerializer.cs @@ -0,0 +1,9 @@ +using OSPSuite.Core.Domain.Builder; + +namespace OSPSuite.Core.Serialization.Xml +{ + public class IndividualParameterXmlSerializer : PathAndValueEntityXmlSerializer + { + + } +} \ No newline at end of file diff --git a/src/OSPSuite.Core/Serialization/Xml/OriginDataItemXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/OriginDataItemXmlSerializer.cs new file mode 100644 index 000000000..147a9cad0 --- /dev/null +++ b/src/OSPSuite.Core/Serialization/Xml/OriginDataItemXmlSerializer.cs @@ -0,0 +1,16 @@ +using OSPSuite.Core.Domain.Builder; + +namespace OSPSuite.Core.Serialization.Xml +{ + public class OriginDataItemXmlSerializer : OSPSuiteXmlSerializer + { + public override void PerformMapping() + { + Map(x => x.Value); + Map(x => x.Description); + Map(x => x.Name); + Map(x => x.DisplayName); + Map(x => x.Icon); + } + } +} \ No newline at end of file diff --git a/src/OSPSuite.Core/Serialization/Xml/OriginDataItemsXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/OriginDataItemsXmlSerializer.cs new file mode 100644 index 000000000..bec1da4dd --- /dev/null +++ b/src/OSPSuite.Core/Serialization/Xml/OriginDataItemsXmlSerializer.cs @@ -0,0 +1,22 @@ +using OSPSuite.Core.Domain.Builder; + +namespace OSPSuite.Core.Serialization.Xml +{ + public class OriginDataItemsXmlSerializer : OSPSuiteXmlSerializer + { + protected OriginDataItemsXmlSerializer(string name) + : base(name) + { + } + + protected OriginDataItemsXmlSerializer() + { + } + + public override void PerformMapping() + { + Map(x => x.ValueOrigin); + MapEnumerable(x => x.AllDataItems, x=> x.AddOriginDataItem); + } + } +} \ No newline at end of file diff --git a/src/OSPSuite.Core/Serialization/Xml/PathAndValueEntityXmlSerializer.cs b/src/OSPSuite.Core/Serialization/Xml/PathAndValueEntityXmlSerializer.cs index 779edc6f1..4b9e0d5aa 100644 --- a/src/OSPSuite.Core/Serialization/Xml/PathAndValueEntityXmlSerializer.cs +++ b/src/OSPSuite.Core/Serialization/Xml/PathAndValueEntityXmlSerializer.cs @@ -10,6 +10,7 @@ public override void PerformMapping() Map(x => x.Dimension); Map(x => x.ContainerPath); MapReference(x => x.Formula); + Map(x => x.Value); } } } \ No newline at end of file