Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/23/21 16:36:44 (3 years ago)
Author:
dpiringe
Message:

#3026

  • removed property ConvertableType from all converters
  • removed the option to fixate or loosen the path of JsonItems (obsolete)
  • added a abstract formatter SymbolicRegressionSolutionFormatterBase as base formatter for ISymbolicRegressionSolution
  • unified the construction of exporter controls
  • code cleanup
Location:
branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface
Files:
1 added
29 edited

Legend:

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

    r17834 r17843  
    1111    public override int Priority => 30;
    1212
    13     public override Type ConvertableType => typeof(IAlgorithm);
    14 
    1513    public override bool CanConvertType(Type t) =>
    16       t.GetInterfaces().Any(x => x == ConvertableType);
     14      t.GetInterfaces().Any(x => x == typeof(IAlgorithm));
    1715
    1816    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs

    r17834 r17843  
    1515    public abstract bool CanConvertType(Type t);
    1616
    17     public abstract Type ConvertableType { get; }
    18 
    1917    public abstract void Inject(IItem item, IJsonItem data, IJsonItemConverter root);
    2018    public abstract IJsonItem Extract(IItem value, IJsonItemConverter root);
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BatchRunConverter.cs

    r17828 r17843  
    99  public class BatchRunConverter : BaseConverter {
    1010    public override int Priority => 10;
    11     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("E85407E0-18EC-4198-8321-9CF030FDF6D7"));
    1211
    13     public override bool CanConvertType(Type t) => ConvertableType.IsAssignableFrom(t);
     12    public override bool CanConvertType(Type t) =>
     13      HEAL.Attic.Mapper.StaticCache.GetType(new Guid("E85407E0-18EC-4198-8321-9CF030FDF6D7")).IsAssignableFrom(t);
    1414
    1515    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs

    r17828 r17843  
    1010  public class ConstrainedValueParameterConverter : BaseConverter {
    1111    public override int Priority => 3;
    12     public override Type ConvertableType => typeof(IConstrainedValueParameter<>);
    1312
    1413    public override bool CanConvertType(Type t) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/EnumTypeConverter.cs

    r17828 r17843  
    1010  public class EnumTypeConverter : BaseConverter {
    1111    public override int Priority => 1;
    12     public override Type ConvertableType => typeof(EnumValue<>);
    1312
    1413    public override bool CanConvertType(Type t) =>
    1514      typeof(EnumValue<>).IsAssignableFrom(t) ||
    16       (t.IsGenericType && t.GetGenericTypeDefinition() == ConvertableType);
     15      (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(EnumValue<>));
    1716
    1817    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ExperimentConverter.cs

    r17828 r17843  
    1010  public class ExperimentConverter : BaseConverter {
    1111    public override int Priority => 10;
    12     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("A8A4536B-54C1-4A17-AB58-A6006F7F394B"));
    1312
    1413    public override bool CanConvertType(Type t) =>
    15       ConvertableType.IsAssignableFrom(t);
     14      HEAL.Attic.Mapper.StaticCache.GetType(new Guid("A8A4536B-54C1-4A17-AB58-A6006F7F394B")).IsAssignableFrom(t);
    1615
    1716    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/LookupParameterConverter.cs

    r17828 r17843  
    99  public class LookupParameterConverter : BaseConverter {
    1010    public override int Priority => 3;
    11     public override Type ConvertableType => typeof(ILookupParameter);
    1211
    1312    public override bool CanConvertType(Type t) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/MultiCheckedOperatorConverter.cs

    r17828 r17843  
    1111    public override int Priority => 3;
    1212
    13     public override Type ConvertableType => typeof(ICheckedMultiOperator<>);
    14 
    1513    public override bool CanConvertType(Type t) =>
    16       t.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == ConvertableType);
     14      t.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(ICheckedMultiOperator<>));
    1715
    1816    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ParameterizedItemConverter.cs

    r17828 r17843  
    99  public class ParameterizedItemConverter : BaseConverter {
    1010    public override int Priority => 2;
    11     public override Type ConvertableType => typeof(IParameterizedItem);
    1211
    1312    public override bool CanConvertType(Type t) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/RegressionProblemDataConverter.cs

    r17834 r17843  
    3131    public override int Priority => 20;
    3232
    33     // RegressionProblemData
    34     public override Type ConvertableType => HEAL.Attic.Mapper.StaticCache.GetType(new Guid("EE612297-B1AF-42D2-BF21-AF9A2D42791C"));
    35 
    3633    public override bool CanConvertType(Type t) =>
    37       ConvertableType.IsAssignableFrom(t);
     34      HEAL.Attic.Mapper.StaticCache.GetType(new Guid("EE612297-B1AF-42D2-BF21-AF9A2D42791C")).IsAssignableFrom(t);
    3835
    3936    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultConverter.cs

    r17834 r17843  
    88    public override int Priority => 1;
    99
    10     public override Type ConvertableType => typeof(IResult);
    11 
    1210    public override bool CanConvertType(Type t) =>
    13       t.GetInterfaces().Any(x => x == ConvertableType);
     11      t.GetInterfaces().Any(x => x == typeof(IResult));
    1412
    1513    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ResultParameterConverter.cs

    r17834 r17843  
    88    public override int Priority => 5;
    99
    10     public override Type ConvertableType => typeof(IResultParameter);
    11 
    1210    public override bool CanConvertType(Type t) =>
    13       t.GetInterfaces().Any(x => x == ConvertableType);
     11      t.GetInterfaces().Any(x => x == typeof(IResultParameter));
    1412
    1513    public override IJsonItem Extract(IItem value, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/StringValueConverter.cs

    r17828 r17843  
    1010  public class StringValueConverter : BaseConverter {
    1111    public override int Priority => 1;
    12     public override Type ConvertableType => typeof(StringValue);
    1312
    1413    public override bool CanConvertType(Type t) =>
    15       ConvertableType.IsAssignableFrom(t);
     14      typeof(StringValue).IsAssignableFrom(t);
    1615
    1716    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueLookupParameterConverter.cs

    r17828 r17843  
    99  public class ValueLookupParameterConverter : BaseConverter {
    1010    public override int Priority => 4;
    11     public override Type ConvertableType => typeof(IValueLookupParameter);
    1211
    1312    public override bool CanConvertType(Type t) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueParameterConverter.cs

    r17828 r17843  
    99  public class ValueParameterConverter : BaseConverter {
    1010    public override int Priority => 2;
    11     public override Type ConvertableType => typeof(IValueParameter);
    1211
    1312    public override bool CanConvertType(Type t) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueRangeConverter.cs

    r17828 r17843  
    11using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Reflection;
    5 using System.Text;
    6 using System.Threading.Tasks;
    7 using HeuristicLab.Common;
    82using HeuristicLab.Core;
    93using HeuristicLab.Data;
     
    137  public class IntRangeConverter : BaseConverter {
    148    public override int Priority => 1;
    15     public override Type ConvertableType => typeof(IntRange);
    169
    1710    public override bool CanConvertType(Type t) =>
    18       ConvertableType.IsAssignableFrom(t);
     11      typeof(IntRange).IsAssignableFrom(t);
    1912
    2013    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    4033  public class DoubleRangeConverter : BaseConverter {
    4134    public override int Priority => 1;
    42     public override Type ConvertableType => typeof(DoubleRange);
    4335
    4436    public override bool CanConvertType(Type t) =>
    45       ConvertableType.IsAssignableFrom(t);
     37      typeof(DoubleRange).IsAssignableFrom(t);
    4638
    4739    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeArrayConverter.cs

    r17828 r17843  
    1212  public class IntArrayConverter : BaseConverter {
    1313    public override int Priority => 1;
    14     public override Type ConvertableType => typeof(IntArray);
    1514
    1615    public override bool CanConvertType(Type t) =>
    17       ConvertableType.IsAssignableFrom(t);
     16      typeof(IntArray).IsAssignableFrom(t);
    1817
    1918    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    4039  public class DoubleArrayConverter : BaseConverter {
    4140    public override int Priority => 1;
    42     public override Type ConvertableType => typeof(DoubleArray);
    4341
    4442    public override bool CanConvertType(Type t) =>
    45       ConvertableType.IsAssignableFrom(t);
     43      typeof(DoubleArray).IsAssignableFrom(t);
    4644
    4745    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    6866  public class PercentArrayConverter : BaseConverter {
    6967    public override int Priority => 2;
    70     public override Type ConvertableType => typeof(PercentArray);
    7168
    7269    public override bool CanConvertType(Type t) =>
    73       ConvertableType.IsAssignableFrom(t);
     70      typeof(PercentArray).IsAssignableFrom(t);
    7471
    7572    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    9693  public class BoolArrayConverter : BaseConverter {
    9794    public override int Priority => 1;
    98     public override Type ConvertableType => typeof(BoolArray);
    9995
    10096    public override bool CanConvertType(Type t) =>
    101       ConvertableType.IsAssignableFrom(t);
     97      typeof(BoolArray).IsAssignableFrom(t);
    10298
    10399    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeMatrixConverter.cs

    r17828 r17843  
    1111  public class IntMatrixConverter : ValueTypeMatrixConverter<IntMatrix, int> {
    1212    public override int Priority => 1;
    13     public override Type ConvertableType => typeof(IntMatrix);
    1413
    1514    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    3130  public class DoubleMatrixConverter : ValueTypeMatrixConverter<DoubleMatrix, double> {
    3231    public override int Priority => 1;
    33     public override Type ConvertableType => typeof(DoubleMatrix);
    3432
    3533    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    5351  public class PercentMatrixConverter : ValueTypeMatrixConverter<PercentMatrix, double> {
    5452    public override int Priority => 2;
    55     public override Type ConvertableType => typeof(PercentMatrix);
    5653
    5754    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    7370  public class BoolMatrixConverter : ValueTypeMatrixConverter<BoolMatrix, bool> {
    7471    public override int Priority => 1;
    75     public override Type ConvertableType => typeof(BoolMatrix);
    7672
    7773    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
     
    9490  {
    9591    public override bool CanConvertType(Type t) =>
    96       ConvertableType.IsAssignableFrom(t);
     92      typeof(MatrixType).IsAssignableFrom(t);
    9793
    9894    #region Helper
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs

    r17828 r17843  
    11using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 using System.Threading.Tasks;
    62using HeuristicLab.Core;
    73using HeuristicLab.Data;
     
    117  public class IntValueConverter : BaseConverter {
    128    public override int Priority => 1;
    13     public override Type ConvertableType => typeof(IntValue);
    149
    1510    public override bool CanConvertType(Type t) =>
    16       ConvertableType.IsAssignableFrom(t);
     11      typeof(IntValue).IsAssignableFrom(t);
    1712
    1813    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     
    3126  public class DoubleValueConverter : BaseConverter {
    3227    public override int Priority => 1;
    33     public override Type ConvertableType => typeof(DoubleValue);
    3428
    3529    public override bool CanConvertType(Type t) =>
    36       ConvertableType.IsAssignableFrom(t);
     30      typeof(DoubleValue).IsAssignableFrom(t);
    3731
    3832    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     
    5145  public class PercentValueConverter : BaseConverter {
    5246    public override int Priority => 2;
    53     public override Type ConvertableType => typeof(PercentValue);
    5447
    5548    public override bool CanConvertType(Type t) =>
    56       ConvertableType.IsAssignableFrom(t);
     49      typeof(PercentValue).IsAssignableFrom(t);
    5750
    5851    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     
    7164  public class BoolValueConverter : BaseConverter {
    7265    public override int Priority => 1;
    73     public override Type ConvertableType => typeof(BoolValue);
    7466
    7567    public override bool CanConvertType(Type t) =>
    76       ConvertableType.IsAssignableFrom(t);
     68      typeof(BoolValue).IsAssignableFrom(t);
    7769
    7870    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     
    8981  public class DateTimeValueConverter : BaseConverter {
    9082    public override int Priority => 1;
    91     public override Type ConvertableType => typeof(DateTimeValue);
    9283
    9384    public override bool CanConvertType(Type t) =>
    94       ConvertableType.IsAssignableFrom(t);
     85      typeof(DateTimeValue).IsAssignableFrom(t);
    9586
    9687    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/HeuristicLab.JsonInterface.csproj

    r17834 r17843  
    6868    <Compile Include="Converters\ResultConverter.cs" />
    6969    <Compile Include="Converters\ResultParameterConverter.cs" />
    70     <Compile Include="Converters\SymbolicRegressionSolutionConverter.cs" />
    7170    <Compile Include="Converters\ValueLookupParameterConverter.cs" />
    7271    <Compile Include="Converters\ValueRangeConverter.cs" />
     
    106105    <Compile Include="ResultFormatter\ResultFormatter.cs" />
    107106    <Compile Include="ResultFormatter\StringResultFormatter.cs" />
     107    <Compile Include="ResultFormatter\SymbolicRegressionSolutionFormatterBase.cs" />
    108108    <Compile Include="SingleLineArrayJsonWriter.cs" />
    109109    <Compile Include="JsonTemplateGenerator.cs" />
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItem.cs

    r17519 r17843  
    5858
    5959    /// <summary>
    60     /// This method fixates the path.
    61     /// After calling, the path cannot be changed by changing the name or parent.
    62     /// </summary>
    63     void FixatePath();
    64 
    65     /// <summary>
    66     /// This method looses the path again after a call of FixatePath.
    67     /// After calling, the path is calculated by the position in item tree again.
    68     /// </summary>
    69     void LoosenPath();
    70 
    71     /// <summary>
    7260    /// Method to generate a Newtonsoft JObject, which describes the JsonItem.
    7361    /// </summary>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Interfaces/IJsonItemConverter.cs

    r17828 r17843  
    2121
    2222    /// <summary>
    23     /// The targeted type for the converter.
    24     /// </summary>
    25     Type ConvertableType { get; }
    26 
    27     /// <summary>
    2823    /// A given priority, higher numbers are prior.
    2924    /// </summary>
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverter.cs

    r17828 r17843  
    88  /// </summary>
    99  public class JsonItemConverter : IJsonItemConverter {
    10    
     10
    1111    #region Properties
    12     private IDictionary<Type, IJsonItemConverter> Converters { get; set; }
    13       = new Dictionary<Type, IJsonItemConverter>();
     12    private IEnumerable<IJsonItemConverter> Converters { get; set; }
     13      = Enumerable.Empty<IJsonItemConverter>();
    1414
    1515    private IDictionary<int, IJsonItem> InjectCache { get; set; }
     
    3535     
    3636      foreach (var x in Converters) {
    37         if (x.Value.CanConvertType(type))
    38           possibleConverters.Add(x.Value);
     37        if (x.CanConvertType(type))
     38          possibleConverters.Add(x);
    3939      }
    40        
    4140
    4241      if(possibleConverters.Count > 0) {
     
    8685    /// Static constructor for default converter configuration.
    8786    /// </summary>
    88     internal JsonItemConverter(IDictionary<Type, IJsonItemConverter> converters) {
     87    internal JsonItemConverter(IEnumerable<IJsonItemConverter> converters) {
    8988      Converters = converters;
    9089    }
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItemConverterFactory.cs

    r17519 r17843  
    55namespace HeuristicLab.JsonInterface {
    66  public static class JsonItemConverterFactory {
    7     private static IDictionary<Type, IJsonItemConverter> ConverterCache { get; set; }
     7    private static IEnumerable<IJsonItemConverter> ConverterCache { get; set; }
    88
    99    public static JsonItemConverter Create() {
     
    1414
    1515    private static void InitCache() {
    16       ConverterCache = new Dictionary<Type, IJsonItemConverter>();
     16      IList<IJsonItemConverter> cache = new List<IJsonItemConverter>();
    1717      foreach (var converter in ApplicationManager.Manager.GetInstances<IJsonItemConverter>()) {
    18         ConverterCache.Add(converter.ConvertableType, converter);
     18        cache.Add(converter);
    1919      }
     20      ConverterCache = cache;
    2021    }
    2122  }
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/JsonItem.cs

    r17834 r17843  
    6464    public virtual string Description { get; set; }
    6565
    66     private string fixedPath = "";
    6766    public virtual string Path {
    6867      get {
    69         if (!string.IsNullOrWhiteSpace(fixedPath))
    70           return fixedPath;
    71 
    7268        IJsonItem tmp = Parent;
    7369        StringBuilder builder = new StringBuilder(this.Name);
     
    115111    public IJsonItemValidator GetValidator() => new JsonItemValidator(this);
    116112
    117     public void FixatePath() => fixedPath = Path;
    118     public void LoosenPath() => fixedPath = "";
    119 
    120113    public virtual JObject GenerateJObject() =>
    121114      JObject.FromObject(this, new JsonSerializer() {
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonItems/ResultJsonItem.cs

    r17834 r17843  
    11using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    42using Newtonsoft.Json.Linq;
    53
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/JsonTemplateGenerator.cs

    r17828 r17843  
    7373    private static void PopulateJsonItems(IJsonItem item, IList<IJsonItem> jsonItems) {
    7474      foreach(var x in item) {
    75         if (x.Active && !(x is EmptyJsonItem)) {
     75        if (x.Active && !(x is EmptyJsonItem) && !(x is UnsupportedJsonItem)) {
    7676          jsonItems.Add(x);
    7777        }
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/ResultFormatter/MatlabResultFormatter.cs

    r17834 r17843  
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Text;
    5 using System.Threading.Tasks;
    6 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
     1using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    72using HeuristicLab.Problems.DataAnalysis.Symbolic;
    8 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
    93
    104namespace HeuristicLab.JsonInterface {
    11   public class MatlabResultFormatter : ResultFormatter {
    12     public override int Priority => 5;
    13 
    14     public override bool CanFormatType(Type t) {
    15       var interfaces = t.GetInterfaces();
    16       return t.GetInterfaces().Any(x => x == typeof(ISymbolicRegressionSolution));
    17     }
    18      
    19     private ISymbolicExpressionTreeStringFormatter MatlabFormatter => new SymbolicDataAnalysisExpressionMATLABFormatter();
    20 
    21     public override string Format(object o) => MatlabFormatter.Format((ISymbolicExpressionTree)((ISymbolicRegressionSolution)o).Model.SymbolicExpressionTree);
     5  public class MatlabResultFormatter : SymbolicRegressionSolutionFormatterBase {
     6    protected override ISymbolicExpressionTreeStringFormatter SymbolicExpressionTreeStringFormatter
     7      => new SymbolicDataAnalysisExpressionMATLABFormatter();
    228  }
    239}
  • branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/ResultFormatter/ResultFormatter.cs

    r17834 r17843  
    1212  public abstract class ResultFormatter : IResultFormatter {
    1313    public abstract int Priority { get; }
    14 
    1514    public abstract bool CanFormatType(Type t);
    1615    public abstract string Format(object o);
Note: See TracChangeset for help on using the changeset viewer.