Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ParameterizedItemConverter.cs @ 18057

Last change on this file since 18057 was 18045, checked in by dpiringe, 3 years ago

#3026

  • code cleanup
  • fixed a bug in ValueParameterConverter which prevented successful injection
  • changed error handling in method Main.HeadlessRun and Runner.Run
File size: 1.2 KB
Line 
1using System;
2using System.Linq;
3using HeuristicLab.Core;
4
5namespace HeuristicLab.JsonInterface {
6  public class ParameterizedItemConverter : BaseConverter {
7    public override int Priority => 2;
8
9    public override bool CanConvertType(Type t) =>
10      t.GetInterfaces().Any(x => x == typeof(IParameterizedItem));
11
12    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
13      var pItem = item as IParameterizedItem;
14
15      if(data.Children != null) {
16        foreach (var sp in data.Children)
17          if (pItem.Parameters.TryGetValue(sp.Name, out IParameter param) && param != null)
18            root.Inject(param, sp, root);
19      }
20    }
21
22    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
23      var parameterizedItem = value as IParameterizedItem;
24
25      IJsonItem item = new EmptyJsonItem() {
26        Name = value.ItemName,
27        Description = value.ItemDescription
28      };
29
30      foreach (var param in parameterizedItem.Parameters) {
31        if (!param.Hidden) {
32          IJsonItem tmp = root.Extract(param, root);
33          if (!(tmp is UnsupportedJsonItem))
34            item.AddChildren(tmp);
35        }
36      }
37
38      return item;
39    }
40
41  }
42}
Note: See TracBrowser for help on using the repository browser.