Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln (revision 17283)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab 3.3.sln (revision 17284)
@@ -472,7 +472,7 @@
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4", "HeuristicLab.Algorithms.DataAnalysis.DecisionTrees\3.4\HeuristicLab.Algorithms.DataAnalysis.DecisionTrees-3.4.csproj", "{541A53F3-E6A7-402F-91BB-D76041CDD9FD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Manufacture", "ParameterTest\HeuristicLab.Manufacture.csproj", "{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Heuristiclab.ConfigStarter", "Heuristiclab.ConfigStarter\Heuristiclab.ConfigStarter.csproj", "{E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.JsonInterface", "HeuristicLab.JsonInterface\HeuristicLab.JsonInterface.csproj", "{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}"
EndProject
Global
@@ -2294,4 +2294,16 @@
{541A53F3-E6A7-402F-91BB-D76041CDD9FD}.Release|x86.ActiveCfg = Release|Any CPU
{541A53F3-E6A7-402F-91BB-D76041CDD9FD}.Release|x86.Build.0 = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.Build.0 = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.Build.0 = Debug|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.ActiveCfg = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.Build.0 = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.ActiveCfg = Release|Any CPU
+ {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.Build.0 = Release|Any CPU
{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Debug|Any CPU.Build.0 = Debug|Any CPU
@@ -2306,16 +2318,4 @@
{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x86.ActiveCfg = Release|Any CPU
{0E3AAB5E-F152-44E0-A054-4D9A83ECEE08}.Release|x86.Build.0 = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x64.Build.0 = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Debug|x86.Build.0 = Debug|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|Any CPU.Build.0 = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.ActiveCfg = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x64.Build.0 = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.ActiveCfg = Release|Any CPU
- {E0FB3F94-8A4D-4F37-8D8F-E757B1E6E99A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/App.config
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/App.config (revision 17284)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/App.config (revision 17284)
@@ -0,0 +1,6 @@
+
+
+
+
+
+
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs (revision 17284)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/BaseConverter.cs (revision 17284)
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+using Newtonsoft.Json.Linq;
+
+namespace HeuristicLab.JsonInterface {
+ public abstract class BaseConverter : IJsonItemConverter
+ {
+ public JsonItem Extract(IItem value) {
+ JsonItem data = ExtractData(value);
+ data.Name = String.IsNullOrEmpty(data.Name) ? value.ItemName : data.Name;
+ return data;
+ }
+
+ public void Inject(IItem item, JsonItem data) {
+ if(data.Reference != null) {
+ JsonItem.Merge(data, data.Reference);
+ }
+ InjectData(item, data);
+ }
+
+ public abstract void InjectData(IItem item, JsonItem data);
+ public abstract JsonItem ExtractData(IItem value);
+
+ #region Helper
+ protected ValueType CastValue(object obj) {
+ if (obj is JToken)
+ return (obj.Cast()).ToObject();
+ else if (obj is IConvertible)
+ return Convert.ChangeType(obj, typeof(ValueType)).Cast();
+ else return (ValueType)obj;
+ }
+
+ protected IItem Instantiate(Type type, params object[] args) =>
+ (IItem)Activator.CreateInstance(type,args);
+
+ protected IItem Instantiate(params object[] args) => Instantiate(typeof(T), args);
+ #endregion
+ }
+}
Index: /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs
===================================================================
--- /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs (revision 17284)
+++ /branches/3026_IntegrationIntoSymSpace/HeuristicLab.JsonInterface/Converters/ConstrainedValueParameterConverter.cs (revision 17284)
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.JsonInterface {
+ public class ConstrainedValueParameterConverter : ParameterBaseConverter {
+ public override void InjectData(IParameter parameter, JsonItem data) {
+ foreach (var x in parameter.Cast().ValidValues)
+ if (x.GetType().Name == CastValue(data.Default))
+ parameter.ActualValue = x;
+
+ if (parameter.ActualValue is IParameterizedItem && data.Reference != null)
+ JsonItemConverter.Inject(parameter.ActualValue, data.Reference);
+ }
+
+ public override JsonItem ExtractData(IParameter value) =>
+ new JsonItem() {
+ Name = value.Name,
+ Default = value.ActualValue?.GetType().Name,
+ Range = GetValidValues(value),
+ Parameters = GetParameterizedChilds(value)
+ };
+
+ #region Helper
+ private object[] GetValidValues(IParameter value) {
+ List