Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/08/16 14:40:02 (8 years ago)
Author:
gkronber
Message:

#2434: merged trunk changes r12934:14026 from trunk to branch

Location:
branches/crossvalidation-2434
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/crossvalidation-2434

  • branches/crossvalidation-2434/HeuristicLab.Clients.OKB/3.3/RunCreation/RunCreationClient.cs

    r12012 r14029  
    2020#endregion
    2121
    22 using System;
    23 using System.Collections.Generic;
    2422using HeuristicLab.Clients.Common;
    2523using HeuristicLab.Common;
    2624using HeuristicLab.Core;
     25using HeuristicLab.Data;
     26using HeuristicLab.Persistence.Default.Xml;
     27using System;
     28using System.Collections.Generic;
     29using System.IO;
     30using System.Linq;
    2731
    2832namespace HeuristicLab.Clients.OKB.RunCreation {
     
    6165        algorithms.AddRange(CallRunCreationService<List<Algorithm>>(s => s.GetAlgorithms("HeuristicLab 3.3")));
    6266        problems.AddRange(CallRunCreationService<List<Problem>>(s => s.GetProblems("HeuristicLab 3.3")));
    63       }
    64       finally {
     67      } finally {
    6568        OnRefreshed();
    6669      }
     
    7073        try {
    7174          Refresh();
    72         }
    73         catch (Exception ex) {
     75        } catch (Exception ex) {
    7476          return ex;
    7577        }
     
    8486
    8587    #region Algorithm Methods
    86     public static byte[] GetAlgorithmData(long algorithmId) {
     88    public byte[] GetAlgorithmData(long algorithmId) {
    8789      return CallRunCreationService<byte[]>(s => s.GetAlgorithmData(algorithmId));
    8890    }
     
    9092
    9193    #region Problem Methods
    92     public static byte[] GetProblemData(long problemId) {
     94    public byte[] GetProblemData(long problemId) {
    9395      return CallRunCreationService<byte[]>(s => s.GetProblemData(problemId));
     96    }
     97    #endregion
     98
     99    #region Solution Methods
     100    public IEnumerable<Solution> GetSolutions(long problemId) {
     101      return CallRunCreationService(s => s.GetSolutions(problemId));
     102    }
     103
     104    public Solution GetSolution(long solutionId) {
     105      return CallRunCreationService(s => s.GetSolution(solutionId));
     106    }
     107
     108    public byte[] GetSolutionData(long solutionId) {
     109      return CallRunCreationService(s => s.GetSolutionData(solutionId));
     110    }
     111
     112    public long AddSolution(Solution solution, byte[] data) {
     113      return CallRunCreationService(s => s.AddSolution(solution, data));
     114    }
     115
     116    public void DeleteSolution(Solution solution) {
     117      CallRunCreationService(s => s.DeleteSolution(solution));
    94118    }
    95119    #endregion
     
    98122    public void AddRun(Run run) {
    99123      CallRunCreationService(s => s.AddRun(run));
     124    }
     125    #endregion
     126
     127    #region Characteristic Methods
     128    public IEnumerable<Value> GetCharacteristicValues(long problemId) {
     129      return CallRunCreationService(s => s.GetCharacteristicValues(problemId));
     130    }
     131
     132    public void SetCharacteristicValue(long problemId, Value v) {
     133      CallRunCreationService(s => s.SetCharacteristicValue(problemId, v));
     134    }
     135
     136    public void SetCharacteristicValues(long problemId, IEnumerable<Value> values) {
     137      CallRunCreationService(s => s.SetCharacteristicValues(problemId, values.ToList()));
     138    }
     139    #endregion
     140
     141    #region OKB-Item Conversion
     142    public IItem ConvertToItem(Value value) {
     143      if (value is BinaryValue) {
     144        IItem item = null;
     145        var binaryValue = (BinaryValue)value;
     146        if (binaryValue.Value != null) {
     147          using (var stream = new MemoryStream(binaryValue.Value)) {
     148            try {
     149              item = XmlParser.Deserialize<IItem>(stream);
     150            } catch (Exception) { }
     151            stream.Close();
     152          }
     153        }
     154        return item ?? new Data.StringValue(value.DataType.Name);
     155      } else if (value is BoolValue) {
     156        return new Data.BoolValue(((BoolValue)value).Value);
     157      } else if (value is FloatValue) {
     158        return new Data.DoubleValue(((FloatValue)value).Value);
     159      } else if (value is PercentValue) {
     160        return new Data.PercentValue(((PercentValue)value).Value);
     161      } else if (value is DoubleValue) {
     162        return new Data.DoubleValue(((DoubleValue)value).Value);
     163      } else if (value is IntValue) {
     164        return new Data.IntValue((int)((IntValue)value).Value);
     165      } else if (value is LongValue) {
     166        return new Data.IntValue((int)((LongValue)value).Value);
     167      } else if (value is StringValue) {
     168        return new Data.StringValue(((StringValue)value).Value);
     169      } else if (value is TimeSpanValue) {
     170        return new Data.TimeSpanValue(TimeSpan.FromSeconds((long)((TimeSpanValue)value).Value));
     171      }
     172      return null;
     173    }
     174
     175    public Value ConvertToValue(IItem item, string name) {
     176      Value result = null;
     177      if (item is ValueTypeValue<bool>) {
     178        var boolValue = (ValueTypeValue<bool>)item;
     179        result = new BoolValue() { Value = boolValue.Value };
     180      } else if (item is ValueTypeValue<int>) {
     181        var intValue = (ValueTypeValue<int>)item;
     182        result = new IntValue() { Value = intValue.Value };
     183      } else if (item is ValueTypeValue<long>) {
     184        var longValue = (ValueTypeValue<long>)item;
     185        result = new LongValue() { Value = longValue.Value };
     186      } else if (item is ValueTypeValue<float>) {
     187        var floatValue = (ValueTypeValue<float>)item;
     188        result = new FloatValue() { Value = floatValue.Value };
     189      } else if (item is ValueTypeValue<double>) {
     190        var doubleValue = (ValueTypeValue<double>)item;
     191        if (item is Data.PercentValue) result = new PercentValue() { Value = doubleValue.Value };
     192        else result = new DoubleValue() { Value = doubleValue.Value };
     193      } else if (item is ValueTypeValue<TimeSpan>) {
     194        var timeSpanValue = (ValueTypeValue<TimeSpan>)item;
     195        result = new TimeSpanValue() { Value = (long)timeSpanValue.Value.TotalSeconds };
     196      } else if (item is Data.StringValue) {
     197        var stringValue = (Data.StringValue)item;
     198        result = new StringValue() { Value = stringValue.Value };
     199      }
     200      if (result == null) {
     201        var binaryValue = new BinaryValue {
     202          DataType = new DataType() {
     203            Name = item.GetType().Name,
     204            TypeName = item.GetType().AssemblyQualifiedName
     205          }
     206        };
     207        using (var memStream = new MemoryStream()) {
     208          XmlGenerator.Serialize(item, memStream);
     209          binaryValue.Value = memStream.ToArray();
     210        }
     211        result = binaryValue;
     212      }
     213      result.Name = name;
     214      return result;
    100215    }
    101216    #endregion
     
    115230
    116231    #region Helpers
    117     private static void CallRunCreationService(Action<IRunCreationService> call) {
     232    private void CallRunCreationService(Action<IRunCreationService> call) {
    118233      RunCreationServiceClient client = ClientFactory.CreateClient<RunCreationServiceClient, IRunCreationService>();
    119234      try {
    120235        call(client);
    121       }
    122       finally {
     236      } finally {
    123237        try {
    124238          client.Close();
    125         }
    126         catch (Exception) {
     239        } catch (Exception) {
    127240          client.Abort();
    128241        }
    129242      }
    130243    }
    131     private static T CallRunCreationService<T>(Func<IRunCreationService, T> call) {
     244    private T CallRunCreationService<T>(Func<IRunCreationService, T> call) {
    132245      RunCreationServiceClient client = ClientFactory.CreateClient<RunCreationServiceClient, IRunCreationService>();
    133246      try {
    134247        return call(client);
    135       }
    136       finally {
     248      } finally {
    137249        try {
    138250          client.Close();
    139         }
    140         catch (Exception) {
     251        } catch (Exception) {
    141252          client.Abort();
    142253        }
Note: See TracChangeset for help on using the changeset viewer.