From ef489ab48eeb39bd243145eab2f0aeab48b2a554 Mon Sep 17 00:00:00 2001 From: Heath Volmer Date: Tue, 28 May 2019 16:48:57 -0600 Subject: [PATCH] Added AppendToPathPrefix to JSON array modules, to facilitate array lookup modules chained together; corresponds to 2.4.1 modules --- .../JsonToSimpl/EventArgs and Constants.cs | 1 + .../JsonToSimplArrayLookupChild.cs | 63 ++++++++++++++++++- .../JsonToSimpl/JsonToSimplMaster.cs | 8 +-- .../Properties/AssemblyInfo.cs | 2 +- 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/JsonToSimpl/EventArgs and Constants.cs b/Pepperdash Core/Pepperdash Core/JsonToSimpl/EventArgs and Constants.cs index e6e13a5..b8259b9 100644 --- a/Pepperdash Core/Pepperdash Core/JsonToSimpl/EventArgs and Constants.cs +++ b/Pepperdash Core/Pepperdash Core/JsonToSimpl/EventArgs and Constants.cs @@ -13,6 +13,7 @@ namespace PepperDash.Core.JsonToSimpl public const ushort BoolValueChange = 1; public const ushort UshortValueChange = 101; public const ushort StringValueChange = 201; + public const ushort FullPathToArrayChange = 202; } //**************************************************************************************************// diff --git a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs index 753dbc3..c3295f3 100644 --- a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs +++ b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplArrayLookupChild.cs @@ -12,9 +12,19 @@ namespace PepperDash.Core.JsonToSimpl { public string SearchPropertyName { get; set; } public string SearchPropertyValue { get; set; } + public string AppendToPathPrefix { get; set; } int ArrayIndex; + /// + /// For <2.4.1 array lookups + /// + /// + /// + /// + /// + /// + /// public void Initialize(string file, string key, string pathPrefix, string pathSuffix, string searchPropertyName, string searchPropertyValue) { @@ -24,6 +34,27 @@ namespace PepperDash.Core.JsonToSimpl } + /// + /// For newer >=2.4.1 array lookups. + /// + /// + /// + /// + /// + /// + /// + /// + public void Initialize(string file, string key, string pathPrefix, string pathAppend, string pathSuffix, + string searchPropertyName, string searchPropertyValue) + { + base.Initialize(file, key, pathPrefix, pathSuffix); + SearchPropertyName = searchPropertyName; + SearchPropertyValue = searchPropertyValue; + AppendToPathPrefix = pathAppend; + } + + + //PathPrefix+ArrayName+[x]+path+PathSuffix /// /// @@ -32,9 +63,11 @@ namespace PepperDash.Core.JsonToSimpl /// protected override string GetFullPath(string path) { - return string.Format("{0}[{1}].{2}{3}", + return string.Format("{0}[{1}]{2}.{3}{4}", PathPrefix == null ? "" : PathPrefix, - ArrayIndex, path, + ArrayIndex, + GetPathAppend(), + path, PathSuffix == null ? "" : PathSuffix); } @@ -44,6 +77,31 @@ namespace PepperDash.Core.JsonToSimpl base.ProcessAll(); } + /// + /// Provides the path append for GetFullPath + /// + /// + string GetPathAppend() + { + var a = AppendToPathPrefix; + if (string.IsNullOrEmpty(a)) + { + return ""; + } + if (a.StartsWith(".")) + { + return a; + } + else + { + return "." + a; + } + } + + /// + /// + /// + /// bool FindInArray() { if (Master == null) @@ -75,6 +133,7 @@ namespace PepperDash.Core.JsonToSimpl this.LinkedToObject = true; ArrayIndex = array.IndexOf(item); + OnStringChange(GetFullPath(""), 0, JsonToSimplConstants.FullPathToArrayChange); Debug.Console(1, "JSON Child[{0}] Found array match at index {1}", Key, ArrayIndex); return true; } diff --git a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplMaster.cs b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplMaster.cs index 4818711..bd48fa9 100644 --- a/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplMaster.cs +++ b/Pepperdash Core/Pepperdash Core/JsonToSimpl/JsonToSimplMaster.cs @@ -106,10 +106,10 @@ namespace PepperDash.Core.JsonToSimpl /// public void AddChild(JsonToSimplChildObjectBase child) { - if (Children.Contains(child)) { - Children.Remove(child); - } - Children.Add(child); + if (!Children.Contains(child)) + { + Children.Add(child); + } } /// diff --git a/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs b/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs index f1b567a..63fe3d0 100644 --- a/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs +++ b/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs @@ -4,4 +4,4 @@ [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Pepperdash_Core")] [assembly: AssemblyCopyright("Copyright © PepperDash 2019")] -[assembly: AssemblyVersion("1.0.20.*")] +[assembly: AssemblyVersion("1.0.21.*")]