Changeset 17354 for branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCInstantiator.cs
- Timestamp:
- 11/19/19 16:59:18 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCInstantiator.cs
r17353 r17354 83 83 private static void CollectParameterizedItems(InstData instData) { 84 84 foreach (JObject item in instData.Template[Constants.Objects]) { 85 JsonItem data = BuildJsonItem(item, instData);85 JsonItem data = JsonItem.BuildJsonItem(item, instData.TypeList); 86 86 instData.ParameterizedItems.Add(data.Path, data); 87 87 } … … 120 120 foreach (JObject obj in instData.Config) { 121 121 // build item from config object 122 JsonItem item = BuildJsonItem(obj, instData);122 JsonItem item = JsonItem.BuildJsonItem(obj, instData.TypeList); 123 123 // override default value 124 124 if (instData.ConfigurableItems.TryGetValue(item.Path, out JsonItem param)) { … … 145 145 } else throw new TypeLoadException($"Cannot find AssemblyQualifiedName for {data.Name}."); 146 146 } 147 148 #region BuildJsonItemMethods149 private static JsonItem BuildJsonItem(JObject obj, InstData instData) =>150 new JsonItem() {151 Name = obj[nameof(JsonItem.Name)]?.ToString(),152 Path = obj[nameof(JsonItem.Path)]?.ToString(),153 Value = obj[nameof(JsonItem.Value)]?.ToObject<object>(),154 Range = obj[nameof(JsonItem.Range)]?.ToObject<object[]>(),155 Type = GetType(obj[nameof(JsonItem.Path)]?.ToObject<string>(), instData),156 ActualName = obj[nameof(JsonItem.ActualName)]?.ToString(),157 Parameters = PopulateParameters(obj, instData),158 Operators = PopulateOperators(obj, instData)159 };160 161 private static string GetType(string path, InstData instData) {162 if(!string.IsNullOrEmpty(path))163 if (instData.TypeList.TryGetValue(path, out string value))164 return value;165 return null;166 }167 168 private static IList<JsonItem> PopulateParameters(JObject obj, InstData instData) {169 IList<JsonItem> list = new List<JsonItem>();170 171 // add staticParameters172 if (obj[Constants.StaticParameters] != null)173 foreach (JObject param in obj[Constants.StaticParameters])174 list.Add(BuildJsonItem(param, instData));175 176 // merge staticParameter with freeParameter177 if (obj[Constants.FreeParameters] != null) {178 foreach (JObject param in obj[Constants.FreeParameters]) {179 JsonItem tmp = BuildJsonItem(param, instData);180 181 // search staticParameter from list182 JsonItem comp = null;183 foreach (var p in list)184 if (p.Name == tmp.Name) comp = p;185 if (comp == null)186 throw new InvalidDataException($"Invalid {Constants.FreeParameters.Trim('s')}: '{tmp.Name}'!");187 188 JsonItem.Merge(comp, tmp);189 }190 }191 return list;192 }193 194 private static IList<JsonItem> PopulateOperators(JObject obj, InstData instData) {195 IList<JsonItem> list = new List<JsonItem>();196 JToken operators = obj[nameof(JsonItem.Operators)];197 if (operators != null)198 foreach (JObject sp in operators)199 list.Add(BuildJsonItem(sp, instData));200 return list;201 }202 #endregion203 147 #endregion 204 148 }
Note: See TracChangeset
for help on using the changeset viewer.