Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/15/19 15:29:36 (5 years ago)
Author:
dpiringe
Message:

#3026

  • changed the access modifiers in Constants from public to internal
  • added comments in JCGenerator
  • the config file for JCInstantiator is now optional
  • added Runner.cs (forgot last commit)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JCGenerator.cs

    r17324 r17330  
    1515    private JArray JsonItems { get; set; } = new JArray();
    1616
     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
    1743    private void PopulateJsonItems(JsonItem item) {
    1844      if (item.Parameters != null) {
    19         if(item.Range == null)
     45        if (item.Range == null)
    2046          JsonItems.Add(Serialize(item));
    2147        foreach (var p in item.Parameters)
    22           if(p.Parameters != null)
     48          if (p.Parameters != null)
    2349            PopulateJsonItems(p);
    2450      }
     
    3157
    3258      obj.Property(nameof(JsonItem.Parameters))?.Remove();
    33       RefactorFreeParameters(obj, null);
     59      RefactorFreeParameters(obj);
    3460      RefactorStaticParameters(obj);
    3561
     
    4167    }
    4268
    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) {
    6370      IList<JObject> objToRemove = new List<JObject>();
    6471      TransformNodes(x => {
    6572        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)) {
    7374          objToRemove.Add(x);
    7475        } else {
Note: See TracChangeset for help on using the changeset viewer.