Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/16/15 17:00:31 (8 years ago)
Author:
abeham
Message:

#2547: moved code to convert between okbitems and hlitems from view to content

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Clients.OKB/3.3/Query/QueryClient.cs

    r12012 r13474  
    2222using System;
    2323using System.Collections.Generic;
     24using System.IO;
    2425using System.Linq;
    2526using HeuristicLab.Clients.Common;
    2627using HeuristicLab.Common;
    2728using HeuristicLab.Core;
     29using HeuristicLab.Persistence.Default.Xml;
    2830
    2931namespace HeuristicLab.Clients.OKB.Query {
     
    6163        filters.AddRange(CallQueryService<List<Filter>>(s => s.GetFilters()));
    6264        valueNames.AddRange(CallQueryService<List<ValueName>>(s => s.GetValueNames()));
    63       }
    64       finally {
     65      } finally {
    6566        OnRefreshed();
    6667      }
     
    7071        try {
    7172          Refresh();
    72         }
    73         catch (Exception ex) {
     73        } catch (Exception ex) {
    7474          return ex;
    7575        }
     
    9898    #endregion
    9999
     100    #region OKB-Item Conversion
     101    public Optimization.IRun ConvertToOptimizationRun(Run run) {
     102      Optimization.Run optRun = new Optimization.Run();
     103      foreach (Value value in run.ParameterValues)
     104        optRun.Parameters.Add(value.Name, ConvertToItem(value));
     105      foreach (Value value in run.ResultValues)
     106        optRun.Results.Add(value.Name, ConvertToItem(value));
     107      return optRun;
     108    }
     109
     110    public IItem ConvertToItem(Value value) {
     111      if (value is BinaryValue) {
     112        IItem item = null;
     113        var binaryValue = (BinaryValue)value;
     114        if (binaryValue.Value != null) {
     115          using (var stream = new MemoryStream(binaryValue.Value)) {
     116            try {
     117              item = XmlParser.Deserialize<IItem>(stream);
     118            } catch (Exception) { }
     119            stream.Close();
     120          }
     121        }
     122        return item ?? new Data.StringValue(value.DataType.Name);
     123      } else if (value is BoolValue) {
     124        return new Data.BoolValue(((BoolValue)value).Value);
     125      } else if (value is FloatValue) {
     126        return new Data.DoubleValue(((FloatValue)value).Value);
     127      } else if (value is PercentValue) {
     128        return new Data.PercentValue(((PercentValue)value).Value);
     129      } else if (value is DoubleValue) {
     130        return new Data.DoubleValue(((DoubleValue)value).Value);
     131      } else if (value is IntValue) {
     132        return new Data.IntValue((int)((IntValue)value).Value);
     133      } else if (value is LongValue) {
     134        return new Data.IntValue((int)((LongValue)value).Value);
     135      } else if (value is StringValue) {
     136        return new Data.StringValue(((StringValue)value).Value);
     137      } else if (value is TimeSpanValue) {
     138        return new Data.TimeSpanValue(TimeSpan.FromSeconds((long)((TimeSpanValue)value).Value));
     139      }
     140      return null;
     141    }
     142    #endregion
     143
    100144    #region Events
    101145    public event EventHandler Refreshing;
     
    116160      try {
    117161        return call(client);
    118       }
    119       finally {
     162      } finally {
    120163        try {
    121164          client.Close();
    122         }
    123         catch (Exception) {
     165        } catch (Exception) {
    124166          client.Abort();
    125167        }
Note: See TracChangeset for help on using the changeset viewer.