- Timestamp:
- 10/15/19 15:29:36 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs
r17324 r17330 15 15 private JArray JsonItems { get; set; } = new JArray(); 16 16 17 public string GenerateTemplate(IAlgorithm algorithm) { 18 JsonItems.Clear(); 19 TypeList.Clear(); 20 21 // 1.1. extract JsonItem, save the name in the metadata section of the 22 // template and save it an JArray incl. all parameters of the JsonItem, 23 // which have parameters aswell 24 AddInstantiableIItem(Constants.Algorithm, algorithm); 25 if (algorithm.Problem != null) // 1.2. only when an problem exists 26 AddInstantiableIItem(Constants.Problem, algorithm.Problem); 27 28 // 2. save the JArray with JsonItems (= IParameterizedItems) 29 template[Constants.Objects] = JsonItems; 30 // 3. save the types of the JsonItems (for instatiation) 31 template[Constants.Types] = JObject.FromObject(TypeList); 32 // 4. serialize template and return string 33 return CustomJsonWriter.Serialize(template); 34 } 35 36 #region Helper 37 private void AddInstantiableIItem(string metaDataTagName, IItem item) { 38 JsonItem jsonItem = JsonItemConverter.Extract(item); 39 template[Constants.Metadata][metaDataTagName] = item.ItemName; 40 PopulateJsonItems(jsonItem); 41 } 42 17 43 private void PopulateJsonItems(JsonItem item) { 18 44 if (item.Parameters != null) { 19 if (item.Range == null)45 if (item.Range == null) 20 46 JsonItems.Add(Serialize(item)); 21 47 foreach (var p in item.Parameters) 22 if (p.Parameters != null)48 if (p.Parameters != null) 23 49 PopulateJsonItems(p); 24 50 } … … 31 57 32 58 obj.Property(nameof(JsonItem.Parameters))?.Remove(); 33 RefactorFreeParameters(obj , null);59 RefactorFreeParameters(obj); 34 60 RefactorStaticParameters(obj); 35 61 … … 41 67 } 42 68 43 public string GenerateTemplate(IAlgorithm algorithm, IProblem problem, params string[] freeParameters) { 44 JsonItems.Clear(); 45 TypeList.Clear(); 46 47 algorithm.Problem = problem; 48 JsonItem algorithmData = JsonItemConverter.Extract(algorithm); 49 JsonItem problemData = JsonItemConverter.Extract(problem); 50 PopulateJsonItems(algorithmData); 51 PopulateJsonItems(problemData); 52 53 template[Constants.Metadata][Constants.Algorithm] = algorithm.Name; 54 template[Constants.Metadata][Constants.Problem] = problem.Name; 55 template[Constants.Objects] = JsonItems; 56 template[Constants.Types] = JObject.FromObject(TypeList); 57 58 return CustomJsonWriter.Serialize(template); 59 } 60 61 #region Helper 62 private void RefactorFreeParameters(JToken token, string[] freeParameters) { 69 private void RefactorFreeParameters(JToken token) { 63 70 IList<JObject> objToRemove = new List<JObject>(); 64 71 TransformNodes(x => { 65 72 var p = x.ToObject<JsonItem>(); 66 67 /*bool isSelected = false; 68 string name = x["Name"].ToObject<string>(); 69 foreach (var selected in freeParameters) 70 isSelected = (name == selected || isSelected); 71 */ 72 if (/*!isSelected ||*/ p.Default == null || (p.Default != null && p.Default.GetType() == typeof(string) && p.Range == null)) { 73 if (p.Default == null || (p.Default != null && p.Default.GetType() == typeof(string) && p.Range == null)) { 73 74 objToRemove.Add(x); 74 75 } else {
Note: See TracChangeset
for help on using the changeset viewer.