Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ValueTypeValueConverter.cs

Last change on this file was 18077, checked in by dpiringe, 2 years ago

#3026

  • added the dockerhub readme file
  • fixed a bug which caused changed values (changed by events) to be overwritten with wrong values
File size: 3.5 KB
Line 
1using System;
2using HeuristicLab.Core;
3using HeuristicLab.Data;
4
5namespace HeuristicLab.JsonInterface {
6
7  public class IntValueConverter : BaseConverter {
8    public override int Priority => 1;
9
10    public override bool CanConvertType(Type t) =>
11      typeof(IntValue).IsAssignableFrom(t);
12
13    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
14      if(data.Active)
15        ((IntValue)item).Value = ((IntJsonItem)data).Value;
16    }
17     
18
19    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
20      new IntJsonItem() {
21        Name = value.ItemName,
22        Description = value.ItemDescription,
23        Value = ((IntValue)value).Value,
24        Minimum = int.MinValue,
25        Maximum = int.MaxValue
26      };
27  }
28
29  public class DoubleValueConverter : BaseConverter {
30    public override int Priority => 1;
31
32    public override bool CanConvertType(Type t) =>
33      typeof(DoubleValue).IsAssignableFrom(t);
34
35    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
36      if (data.Active)
37        ((DoubleValue)item).Value = ((DoubleJsonItem)data).Value;
38    }
39
40    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
41      new DoubleJsonItem() {
42        Name = value.ItemName,
43        Description = value.ItemDescription,
44        Value = ((DoubleValue)value).Value,
45        Minimum = double.MinValue,
46        Maximum = double.MaxValue
47      };
48  }
49
50  public class PercentValueConverter : BaseConverter {
51    public override int Priority => 2;
52
53    public override bool CanConvertType(Type t) =>
54      typeof(PercentValue).IsAssignableFrom(t);
55
56    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
57      if (data.Active)
58        ((PercentValue)item).Value = ((DoubleJsonItem)data).Value;
59    }
60
61    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
62      new DoubleJsonItem() {
63        Name = value.ItemName,
64        Description = value.ItemDescription,
65        Value = ((PercentValue)value).Value,
66        Minimum = 0.0d,
67        Maximum = 1.0d
68      };
69  }
70
71  public class BoolValueConverter : BaseConverter {
72    public override int Priority => 1;
73
74    public override bool CanConvertType(Type t) =>
75      typeof(BoolValue).IsAssignableFrom(t);
76
77    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
78      if (data.Active)
79        ((BoolValue)item).Value = ((BoolJsonItem)data).Value;
80    }
81
82    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
83      new BoolJsonItem() {
84        Name = value.ItemName,
85        Description = value.ItemDescription,
86        Value = ((BoolValue)value).Value
87      };
88  }
89
90  public class DateTimeValueConverter : BaseConverter {
91    public override int Priority => 1;
92
93    public override bool CanConvertType(Type t) =>
94      typeof(DateTimeValue).IsAssignableFrom(t);
95
96    public override void Inject(IItem item, IJsonItem data, IJsonItemConverter root) {
97      if (data.Active)
98        ((DateTimeValue)item).Value = ((DateTimeJsonItem)data).Value;
99    }
100
101    public override IJsonItem Extract(IItem value, IJsonItemConverter root) =>
102      new DateTimeJsonItem() {
103        Name = value.ItemName,
104        Description = value.ItemDescription,
105        Value = ((DateTimeValue)value).Value,
106        Minimum = DateTime.MinValue,
107        Maximum = DateTime.MaxValue
108      };
109  }
110}
Note: See TracBrowser for help on using the repository browser.