Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/19/16 08:38:56 (8 years ago)
Author:
abeham
Message:

#2560: changed characteristic calculator to output IItem instead of double

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs

    r13534 r13550  
    2222using System;
    2323using System.Collections.Generic;
     24using System.IO;
    2425using System.Linq;
    2526using HeuristicLab.Clients.Common;
    2627using HeuristicLab.Common;
    2728using HeuristicLab.Core;
     29using HeuristicLab.Data;
     30using HeuristicLab.Persistence.Default.Xml;
    2831
    2932namespace HeuristicLab.Clients.OKB.RunCreation {
     
    114117    #endregion
    115118
     119    #region OKB-Item Conversion
     120    public IItem ConvertToItem(Value value) {
     121      if (value is BinaryValue) {
     122        IItem item = null;
     123        var binaryValue = (BinaryValue)value;
     124        if (binaryValue.Value != null) {
     125          using (var stream = new MemoryStream(binaryValue.Value)) {
     126            try {
     127              item = XmlParser.Deserialize<IItem>(stream);
     128            } catch (Exception) { }
     129            stream.Close();
     130          }
     131        }
     132        return item ?? new Data.StringValue(value.DataType.Name);
     133      } else if (value is BoolValue) {
     134        return new Data.BoolValue(((BoolValue)value).Value);
     135      } else if (value is FloatValue) {
     136        return new Data.DoubleValue(((FloatValue)value).Value);
     137      } else if (value is PercentValue) {
     138        return new Data.PercentValue(((PercentValue)value).Value);
     139      } else if (value is DoubleValue) {
     140        return new Data.DoubleValue(((DoubleValue)value).Value);
     141      } else if (value is IntValue) {
     142        return new Data.IntValue((int)((IntValue)value).Value);
     143      } else if (value is LongValue) {
     144        return new Data.IntValue((int)((LongValue)value).Value);
     145      } else if (value is StringValue) {
     146        return new Data.StringValue(((StringValue)value).Value);
     147      } else if (value is TimeSpanValue) {
     148        return new Data.TimeSpanValue(TimeSpan.FromSeconds((long)((TimeSpanValue)value).Value));
     149      }
     150      return null;
     151    }
     152
     153    public Value ConvertToValue(IItem item, string name) {
     154      Value result = null;
     155      if (item is ValueTypeValue<bool>) {
     156        var boolValue = (ValueTypeValue<bool>)item;
     157        result = new BoolValue() { Value = boolValue.Value };
     158      } else if (item is ValueTypeValue<int>) {
     159        var intValue = (ValueTypeValue<int>)item;
     160        result = new IntValue() { Value = intValue.Value };
     161      } else if (item is ValueTypeValue<long>) {
     162        var longValue = (ValueTypeValue<long>)item;
     163        result = new LongValue() { Value = longValue.Value };
     164      } else if (item is ValueTypeValue<float>) {
     165        var floatValue = (ValueTypeValue<float>)item;
     166        result = new FloatValue() { Value = floatValue.Value };
     167      } else if (item is ValueTypeValue<double>) {
     168        var doubleValue = (ValueTypeValue<double>)item;
     169        if (item is Data.PercentValue) result = new PercentValue() { Value = doubleValue.Value };
     170        else result = new DoubleValue() { Value = doubleValue.Value };
     171      } else if (item is ValueTypeValue<TimeSpan>) {
     172        var timeSpanValue = (ValueTypeValue<TimeSpan>)item;
     173        result = new TimeSpanValue() { Value = (long)timeSpanValue.Value.TotalSeconds };
     174      } else if (item is Data.StringValue) {
     175        var stringValue = (Data.StringValue)item;
     176        result = new StringValue() { Value = stringValue.Value };
     177      }
     178      if (result == null) {
     179        var binaryValue = new BinaryValue {
     180          DataType = new DataType() {
     181            Name = item.GetType().Name,
     182            TypeName = item.GetType().AssemblyQualifiedName
     183          }
     184        };
     185        using (var memStream = new MemoryStream()) {
     186          XmlGenerator.Serialize(item, memStream);
     187          binaryValue.Value = memStream.ToArray();
     188        }
     189        result = binaryValue;
     190      }
     191      result.Name = name;
     192      return result;
     193    }
     194    #endregion
     195
    116196    #region Events
    117197    public event EventHandler Refreshing;
Note: See TracChangeset for help on using the changeset viewer.