Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/28/20 14:53:45 (5 years ago)
Author:
dpiringe
Message:

#3026:

  • deleted JsonItemArrayControl and JsonItemDefaultControl
  • redesigned architecture for JsonItem: now there are different types of JsonItem (IntJsonItem, BoolJsonItem, ...) -> for better type safety and expandability
  • fixed bug in BaseConverter for GetMinValue and GetMaxValue for IntValue, but ignored for other value types (DoubleValue, DateTimeValue, ...) because the redesign of JsonItem-Architecture can make these two methods obsolet soon
  • fixed bug in JsonItemConverter to prevent null pointer exceptions
  • refactored value and range converters -> removed complicated generic ValueTypeValueConverter and ValueRangeConverter and implemented the necessary methods directly in concrete classes (improves readability and removes the need of reflection)
  • redesigned view handling in OptimizerIntegration -> dynamically seaches for JsonItemVMBase implementations, which are connected with a view
    • this enables better scaling with more user controls
  • JsonItemVMBase implements MVVM architecture
File:
1 edited

Legend:

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

    r17407 r17410  
    99namespace HeuristicLab.JsonInterface {
    1010
    11   public class IntValueConverter : ValueTypeValueConverter<IntValue, int> {
     11  public class IntValueConverter : BaseConverter {
    1212    public override int Priority => 1;
    1313    public override Type ConvertableType => typeof(IntValue);
     14
     15    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     16      ((IntValue)item).Value = ((IntJsonItem)data).Value;
     17
     18    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
     19      new IntJsonItem() {
     20        Name = "[OverridableParamName]",
     21        Value = ((IntValue)value).Value,
     22        Range = new int[] { int.MinValue, int.MaxValue }
     23      };
    1424  }
    1525
    16   public class DoubleValueConverter : ValueTypeValueConverter<DoubleValue, double> {
     26  public class DoubleValueConverter : BaseConverter {
    1727    public override int Priority => 1;
    1828    public override Type ConvertableType => typeof(DoubleValue);
     29
     30    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     31      ((DoubleValue)item).Value = ((DoubleJsonItem)data).Value;
     32
     33    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
     34      new DoubleJsonItem() {
     35        Name = "[OverridableParamName]",
     36        Value = ((DoubleValue)value).Value,
     37        Range = new double[] { double.MinValue, double.MaxValue }
     38      };
    1939  }
    2040
    21   public class PercentValueConverter : ValueTypeValueConverter<PercentValue, double> {
     41  public class PercentValueConverter : BaseConverter {
    2242    public override int Priority => 2;
    2343    public override Type ConvertableType => typeof(PercentValue);
     44
     45    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     46      ((PercentValue)item).Value = ((DoubleJsonItem)data).Value;
     47
     48    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
     49      new DoubleJsonItem() {
     50        Name = "[OverridableParamName]",
     51        Value = ((PercentValue)value).Value,
     52        Range = new double[] { double.MinValue, double.MaxValue }
     53      };
    2454  }
    2555
    26   public class BoolValueConverter : ValueTypeValueConverter<BoolValue, bool> {
     56  public class BoolValueConverter : BaseConverter {
    2757    public override int Priority => 1;
    2858    public override Type ConvertableType => typeof(BoolValue);
     59
     60    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
     61      ((BoolValue)item).Value = ((BoolJsonItem)data).Value;
     62
     63    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
     64      new BoolJsonItem() {
     65        Name = "[OverridableParamName]",
     66        Value = ((BoolValue)value).Value,
     67        Range = new bool[] { false, true }
     68      };
    2969  }
    3070
    31   public class DateTimeValueConverter : ValueTypeValueConverter<DateTimeValue, DateTime> {
     71  public class DateTimeValueConverter : BaseConverter {
    3272    public override int Priority => 1;
    3373    public override Type ConvertableType => typeof(DateTimeValue);
    34   }
    35 
    36   public abstract class ValueTypeValueConverter<ValueType, T> : BaseConverter
    37     where ValueType : ValueTypeValue<T>
    38     where T : struct {
    3974
    4075    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) =>
    41       ((ValueType)item).Value = CastValue<T>(data.Value);
     76      ((DateTimeValue)item).Value = ((DateTimeJsonItem)data).Value;
    4277
    4378    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
    44       new JsonItem() {
     79      new DateTimeJsonItem() {
    4580        Name = "[OverridableParamName]",
    46         Value = ((ValueType)value).Value,
    47         Range = new object[] { GetMinValue(typeof(T)), GetMaxValue(typeof(T)) }
     81        Value = ((DateTimeValue)value).Value,
     82        Range = new DateTime[] { DateTime.MinValue, DateTime.MaxValue }
    4883      };
    4984  }
Note: See TracChangeset for help on using the changeset viewer.