Free cookie consent management tool by TermsFeed Policy Generator

Changeset 5304


Ignore:
Timestamp:
01/17/11 05:03:21 (13 years ago)
Author:
swagner
Message:

Worked on OKB (#1174)

Location:
branches/OKB (trunk integration)
Files:
9 added
8 deleted
16 edited

Legend:

Unmodified
Added
Removed
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/HeuristicLab.Clients.OKB-3.3.csproj

    r5299 r5304  
    108108    <Compile Include="ServiceClients\AlgorithmData.cs" />
    109109    <Compile Include="ServiceClients\AlgorithmParameter.cs" />
    110     <Compile Include="ServiceClients\AndFilter.cs" />
     110    <Compile Include="ServiceClients\CombinedFilter.cs" />
    111111    <Compile Include="ServiceClients\OKBServiceClients.cs" />
    112112    <Compile Include="ServiceClients\SetComparisonStringAvailableValuesFilter.cs" />
    113113    <Compile Include="ServiceClients\NameSetComparisonStringAvailableValuesFilter.cs" />
    114     <Compile Include="ServiceClients\OrFilter.cs" />
    115114    <Compile Include="ServiceClients\OrdinalComparisonDateTimeFilter.cs" />
    116115    <Compile Include="ServiceClients\OrdinalComparisonLongFilter.cs" />
     
    183182      <DependentUpon>AlgorithmParameterView.cs</DependentUpon>
    184183    </Compile>
    185     <Compile Include="Views\AndFilterView.cs">
    186       <SubType>UserControl</SubType>
    187     </Compile>
    188     <Compile Include="Views\AndFilterView.Designer.cs">
    189       <DependentUpon>AndFilterView.cs</DependentUpon>
    190     </Compile>
    191184    <Compile Include="Views\SetComparisonStringAvailableValuesFilterView.cs">
    192185      <SubType>UserControl</SubType>
     
    200193    <Compile Include="Views\NameSetComparisonStringAvailableValuesFilterView.Designer.cs">
    201194      <DependentUpon>NameSetComparisonStringAvailableValuesFilterView.cs</DependentUpon>
    202     </Compile>
    203     <Compile Include="Views\OrFilterView.cs">
    204       <SubType>UserControl</SubType>
    205     </Compile>
    206     <Compile Include="Views\OrFilterView.Designer.cs">
    207       <DependentUpon>OrFilterView.cs</DependentUpon>
    208195    </Compile>
    209196    <Compile Include="Views\CombinedFilterView.cs">
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBClient.cs

    r5299 r5304  
    603603      }
    604604    }
    605     public RunCollection ConvertOKBRunsToOptimizationRuns(IItemCollection<Run> runs) {
    606       RunCollection runCollection = new RunCollection();
    607       foreach (Run run in runs) {
    608         Optimization.Run r = new Optimization.Run();
    609         foreach (ResultValue resultValue in run.ResultValues) {
    610           Result result = GetResult(resultValue.ResultId);
    611           if (resultValue is ResultBlobValue) {
    612             IItem item = null;
    613             using (MemoryStream stream = new MemoryStream(((ResultBlobValue)resultValue).Value)) {
    614               try {
    615                 item = XmlParser.Deserialize<IItem>(stream);
    616               }
    617               catch (Exception ex) {
    618                 ErrorHandling.ShowErrorDialog(ex);
    619               }
    620               stream.Close();
    621             }
    622             r.Results.Add(result.Name, item);
    623           } else if (resultValue is ResultBoolValue) {
    624             r.Results.Add(result.Name, new BoolValue(((ResultBoolValue)resultValue).Value));
    625           } else if (resultValue is ResultFloatValue) {
    626             r.Results.Add(result.Name, new DoubleValue(((ResultFloatValue)resultValue).Value));
    627           } else if (resultValue is ResultIntValue) {
    628             r.Results.Add(result.Name, new IntValue((int)((ResultIntValue)resultValue).Value));
    629           } else if (resultValue is ResultStringValue) {
    630             r.Results.Add(result.Name, new StringValue(((ResultStringValue)resultValue).Value));
    631           }
    632         }
    633 
    634         Experiment exp = GetExperiment(run.ExperimentId);
    635         foreach (AlgorithmParameterValue algorithmParameterValue in exp.AlgorithmParameterValues) {
    636           AlgorithmParameter algorithmParameter = GetAlgorithmParameter(algorithmParameterValue.AlgorithmParameterId);
    637           if (algorithmParameterValue is AlgorithmParameterBlobValue) {
    638             IItem item = null;
    639             using (MemoryStream stream = new MemoryStream(((AlgorithmParameterBlobValue)algorithmParameterValue).Value)) {
    640               try {
    641                 item = XmlParser.Deserialize<IItem>(stream);
    642               }
    643               catch (Exception ex) {
    644                 ErrorHandling.ShowErrorDialog(ex);
    645               }
    646               stream.Close();
    647             }
    648             r.Parameters.Add(algorithmParameter.Name, item);
    649           } else if (algorithmParameterValue is AlgorithmParameterBoolValue) {
    650             r.Parameters.Add(algorithmParameter.Name, new BoolValue(((AlgorithmParameterBoolValue)algorithmParameterValue).Value));
    651           } else if (algorithmParameterValue is AlgorithmParameterFloatValue) {
    652             r.Parameters.Add(algorithmParameter.Name, new DoubleValue(((AlgorithmParameterFloatValue)algorithmParameterValue).Value));
    653           } else if (algorithmParameterValue is AlgorithmParameterIntValue) {
    654             r.Parameters.Add(algorithmParameter.Name, new IntValue((int)((AlgorithmParameterIntValue)algorithmParameterValue).Value));
    655           } else if (algorithmParameterValue is AlgorithmParameterStringValue) {
    656             r.Parameters.Add(algorithmParameter.Name, new StringValue(((AlgorithmParameterStringValue)algorithmParameterValue).Value));
    657           }
    658         }
    659         foreach (ProblemParameterValue problemParameterValue in exp.ProblemParameterValues) {
    660           ProblemParameter problemParameter = GetProblemParameter(problemParameterValue.ProblemParameterId);
    661           if (problemParameterValue is ProblemParameterBlobValue) {
    662             IItem item = null;
    663             using (MemoryStream stream = new MemoryStream(((ProblemParameterBlobValue)problemParameterValue).Value)) {
    664               try {
    665                 item = XmlParser.Deserialize<IItem>(stream);
    666               }
    667               catch (Exception ex) {
    668                 ErrorHandling.ShowErrorDialog(ex);
    669               }
    670               stream.Close();
    671             }
    672             r.Parameters.Add(problemParameter.Name, item);
    673           } else if (problemParameterValue is ProblemParameterBoolValue) {
    674             r.Parameters.Add(problemParameter.Name, new BoolValue(((ProblemParameterBoolValue)problemParameterValue).Value));
    675           } else if (problemParameterValue is ProblemParameterFloatValue) {
    676             r.Parameters.Add(problemParameter.Name, new DoubleValue(((ProblemParameterFloatValue)problemParameterValue).Value));
    677           } else if (problemParameterValue is ProblemParameterIntValue) {
    678             r.Parameters.Add(problemParameter.Name, new IntValue((int)((ProblemParameterIntValue)problemParameterValue).Value));
    679           } else if (problemParameterValue is ProblemParameterStringValue) {
    680             r.Parameters.Add(problemParameter.Name, new StringValue(((ProblemParameterStringValue)problemParameterValue).Value));
    681           }
    682         }
    683         runCollection.Add(r);
    684       }
    685       return runCollection;
    686     }
    687605    #endregion
    688606
     
    695613        }
    696614        catch (Exception ex) {
    697           ErrorHandling.ShowErrorDialog("Refresh filters.", ex);
    698           return null;
     615          ErrorHandling.ShowErrorDialog("Get filters failed.", ex);
     616          return Enumerable.Empty<Filter>();
    699617        }
    700618      }
     
    704622      return GetFilters(false);
    705623    }
    706     public long QueryNumberOfRuns(Filter filter) {
    707       try {
    708         return CallQueryService<long>(x => x.QueryNumberOfRuns(filter));
    709       }
    710       catch (Exception ex) {
    711         ErrorHandling.ShowErrorDialog("Refresh runs failed.", ex);
     624    public long GetNumberOfQueryResults(Filter filter) {
     625      try {
     626        return CallQueryService<long>(x => x.GetNumberOfQueryResults(filter));
     627      }
     628      catch (Exception ex) {
     629        ErrorHandling.ShowErrorDialog("Get number of query results failed.", ex);
    712630        return -1;
    713631      }
    714632    }
    715     public ItemCollection<Run> QueryRuns(Filter filter) {
    716       try {
    717         ItemCollection<Run> runs = new ItemCollection<Run>();
    718         runs.AddRange(CallQueryService<List<Run>>(s => s.QueryRuns(filter)).OrderByDescending(x => x.CreatedDate));
    719         return runs;
    720       }
    721       catch (Exception ex) {
    722         ErrorHandling.ShowErrorDialog("Refresh runs failed.", ex);
     633    public IEnumerable<long> GetQueryResultIds(Filter filter) {
     634      try {
     635        return CallQueryService<IEnumerable<long>>(x => x.GetQueryResultIds(filter));
     636      }
     637      catch (Exception ex) {
     638        ErrorHandling.ShowErrorDialog("Get query result ids failed.", ex);
     639        return Enumerable.Empty<long>();
     640      }
     641    }
     642    public IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids) {
     643      try {
     644        return CallQueryService<IEnumerable<QueryResult>>(s => s.GetQueryResults(ids.ToList()));
     645      }
     646      catch (Exception ex) {
     647        ErrorHandling.ShowErrorDialog("Get query results failed.", ex);
    723648        return null;
    724649      }
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/OKBExperiment.cs

    r5289 r5304  
    118118      }
    119119    }
     120    private RunCollection runs;
    120121    public RunCollection Runs {
    121       get {
    122         if (Algorithm != null) return Algorithm.Runs;
    123         else return null;
    124       }
     122      get { return runs; }
    125123    }
    126124
    127125    #region Persistence Properties
    128126    [Storable(Name = "AlgorithmId")]
    129     private long AlgorithmIdPersistence {
     127    private long StorableAlgorithmId {
    130128      get { return algorithmId; }
    131129      set { algorithmId = value; }
    132130    }
    133131    [Storable(Name = "Algorithm")]
    134     private IAlgorithm AlgorithmPersistence {
     132    private IAlgorithm StorableAlgorithm {
    135133      get { return Algorithm; }
    136134      set { Algorithm = value; }
    137135    }
    138136    [Storable(Name = "ProblemId")]
    139     private long ProblemIdPersistence {
     137    private long StorableProblemId {
    140138      get { return problemId; }
    141139      set { problemId = value; }
    142140    }
    143141    [Storable(Name = "Problem")]
    144     private IProblem ProblemPersistence {
     142    private IProblem StorableProblem {
    145143      get { return Problem; }
    146144      set { Problem = value; }
     145    }
     146    [Storable(Name = "Runs")]
     147    private RunCollection StorableRuns {
     148      get { return runs; }
     149      set { runs = value; }
    147150    }
    148151    #endregion
     
    156159      problemId = original.problemId;
    157160      problem = cloner.Clone(original.problem);
     161      runs = cloner.Clone(original.runs);
    158162      RegisterAlgorithmEvents();
    159163    }
     
    162166      name = ItemName;
    163167      description = ItemDescription;
     168      runs = new RunCollection();
    164169    }
    165170
     
    290295        Algorithm.Started += new EventHandler(algorithm_Started);
    291296        Algorithm.Stopped += new EventHandler(algorithm_Stopped);
     297        Algorithm.Runs.ItemsAdded += new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_ItemsAdded);
     298        Algorithm.Runs.ItemsRemoved += new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_ItemsRemoved);
     299        Algorithm.Runs.CollectionReset += new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_CollectionReset);
    292300      }
    293301    }
     
    302310        Algorithm.Started -= new EventHandler(algorithm_Started);
    303311        Algorithm.Stopped -= new EventHandler(algorithm_Stopped);
     312        Algorithm.Runs.ItemsAdded -= new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_ItemsAdded);
     313        Algorithm.Runs.ItemsRemoved -= new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_ItemsRemoved);
     314        Algorithm.Runs.CollectionReset -= new Collections.CollectionItemsChangedEventHandler<IRun>(algorithm_Runs_CollectionReset);
    304315      }
    305316    }
     
    334345        OnExceptionOccurred(ex);
    335346      }
     347    }
     348    private void algorithm_Runs_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
     349      runs.AddRange(e.Items);
     350    }
     351    private void algorithm_Runs_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
     352      runs.RemoveRange(e.Items);
     353    }
     354    private void algorithm_Runs_CollectionReset(object sender, Collections.CollectionItemsChangedEventArgs<IRun> e) {
     355      runs.Clear();
     356      runs.AddRange(algorithm.Runs);
    336357    }
    337358    #endregion
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/ServiceClients/OKBServiceClients.cs

    r5299 r5304  
    576576  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    577577  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     578  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
     579  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBoolValue))]
    578580  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBlobValue))]
    579581  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterIntValue))]
    580   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterBoolValue))]
    581582  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterFloatValue))]
    582   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AlgorithmParameterStringValue))]
    583583  public partial class AlgorithmParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
    584584
     
    652652  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    653653  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     654  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBlobValue))]
     655  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterIntValue))]
     656  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterFloatValue))]
     657  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterStringValue))]
    654658  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBoolValue))]
    655   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterFloatValue))]
    656   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterIntValue))]
    657   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterBlobValue))]
    658   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ProblemParameterStringValue))]
    659659  public partial class ProblemParameterValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
    660660
     
    727727  [System.Diagnostics.DebuggerStepThroughAttribute()]
    728728  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     729  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     730  public partial class AlgorithmParameterStringValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
     731
     732    private string ValueField;
     733
     734    [System.Runtime.Serialization.DataMemberAttribute()]
     735    public string Value {
     736      get {
     737        return this.ValueField;
     738      }
     739      set {
     740        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     741          this.ValueField = value;
     742          this.RaisePropertyChanged("Value");
     743        }
     744      }
     745    }
     746  }
     747
     748  [System.Diagnostics.DebuggerStepThroughAttribute()]
     749  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     750  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     751  public partial class AlgorithmParameterBoolValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
     752
     753    private bool ValueField;
     754
     755    [System.Runtime.Serialization.DataMemberAttribute()]
     756    public bool Value {
     757      get {
     758        return this.ValueField;
     759      }
     760      set {
     761        if ((this.ValueField.Equals(value) != true)) {
     762          this.ValueField = value;
     763          this.RaisePropertyChanged("Value");
     764        }
     765      }
     766    }
     767  }
     768
     769  [System.Diagnostics.DebuggerStepThroughAttribute()]
     770  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    729771  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    730772  public partial class AlgorithmParameterBlobValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
     
    769811  [System.Diagnostics.DebuggerStepThroughAttribute()]
    770812  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    771   [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    772   public partial class AlgorithmParameterBoolValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
    773 
    774     private bool ValueField;
    775 
    776     [System.Runtime.Serialization.DataMemberAttribute()]
    777     public bool Value {
    778       get {
    779         return this.ValueField;
    780       }
    781       set {
    782         if ((this.ValueField.Equals(value) != true)) {
    783           this.ValueField = value;
    784           this.RaisePropertyChanged("Value");
    785         }
    786       }
    787     }
    788   }
    789 
    790   [System.Diagnostics.DebuggerStepThroughAttribute()]
    791   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    792813  [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    793814  public partial class AlgorithmParameterFloatValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
     
    811832  [System.Diagnostics.DebuggerStepThroughAttribute()]
    812833  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    813   [System.Runtime.Serialization.DataContractAttribute(Name = "AlgorithmParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    814   public partial class AlgorithmParameterStringValue : HeuristicLab.Clients.OKB.AlgorithmParameterValue {
     834  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     835  public partial class ProblemParameterBlobValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
     836
     837    private byte[] ValueField;
     838
     839    [System.Runtime.Serialization.DataMemberAttribute()]
     840    public byte[] Value {
     841      get {
     842        return this.ValueField;
     843      }
     844      set {
     845        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     846          this.ValueField = value;
     847          this.RaisePropertyChanged("Value");
     848        }
     849      }
     850    }
     851  }
     852
     853  [System.Diagnostics.DebuggerStepThroughAttribute()]
     854  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     855  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     856  public partial class ProblemParameterIntValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
     857
     858    private long ValueField;
     859
     860    [System.Runtime.Serialization.DataMemberAttribute()]
     861    public long Value {
     862      get {
     863        return this.ValueField;
     864      }
     865      set {
     866        if ((this.ValueField.Equals(value) != true)) {
     867          this.ValueField = value;
     868          this.RaisePropertyChanged("Value");
     869        }
     870      }
     871    }
     872  }
     873
     874  [System.Diagnostics.DebuggerStepThroughAttribute()]
     875  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     876  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     877  public partial class ProblemParameterFloatValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
     878
     879    private double ValueField;
     880
     881    [System.Runtime.Serialization.DataMemberAttribute()]
     882    public double Value {
     883      get {
     884        return this.ValueField;
     885      }
     886      set {
     887        if ((this.ValueField.Equals(value) != true)) {
     888          this.ValueField = value;
     889          this.RaisePropertyChanged("Value");
     890        }
     891      }
     892    }
     893  }
     894
     895  [System.Diagnostics.DebuggerStepThroughAttribute()]
     896  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     897  [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     898  public partial class ProblemParameterStringValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
    815899
    816900    private string ValueField;
     
    853937  [System.Diagnostics.DebuggerStepThroughAttribute()]
    854938  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    855   [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    856   public partial class ProblemParameterFloatValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
    857 
    858     private double ValueField;
    859 
    860     [System.Runtime.Serialization.DataMemberAttribute()]
    861     public double Value {
    862       get {
    863         return this.ValueField;
    864       }
    865       set {
    866         if ((this.ValueField.Equals(value) != true)) {
    867           this.ValueField = value;
    868           this.RaisePropertyChanged("Value");
    869         }
    870       }
    871     }
    872   }
    873 
    874   [System.Diagnostics.DebuggerStepThroughAttribute()]
    875   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    876   [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    877   public partial class ProblemParameterIntValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
    878 
    879     private long ValueField;
    880 
    881     [System.Runtime.Serialization.DataMemberAttribute()]
    882     public long Value {
    883       get {
    884         return this.ValueField;
    885       }
    886       set {
    887         if ((this.ValueField.Equals(value) != true)) {
    888           this.ValueField = value;
    889           this.RaisePropertyChanged("Value");
    890         }
    891       }
    892     }
    893   }
    894 
    895   [System.Diagnostics.DebuggerStepThroughAttribute()]
    896   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    897   [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    898   public partial class ProblemParameterBlobValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
    899 
    900     private byte[] ValueField;
    901 
    902     [System.Runtime.Serialization.DataMemberAttribute()]
    903     public byte[] Value {
    904       get {
    905         return this.ValueField;
    906       }
    907       set {
    908         if ((object.ReferenceEquals(this.ValueField, value) != true)) {
    909           this.ValueField = value;
    910           this.RaisePropertyChanged("Value");
    911         }
    912       }
    913     }
    914   }
    915 
    916   [System.Diagnostics.DebuggerStepThroughAttribute()]
    917   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    918   [System.Runtime.Serialization.DataContractAttribute(Name = "ProblemParameterStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    919   public partial class ProblemParameterStringValue : HeuristicLab.Clients.OKB.ProblemParameterValue {
    920 
    921     private string ValueField;
    922 
    923     [System.Runtime.Serialization.DataMemberAttribute()]
    924     public string Value {
    925       get {
    926         return this.ValueField;
    927       }
    928       set {
    929         if ((object.ReferenceEquals(this.ValueField, value) != true)) {
    930           this.ValueField = value;
    931           this.RaisePropertyChanged("Value");
    932         }
    933       }
    934     }
    935   }
    936 
    937   [System.Diagnostics.DebuggerStepThroughAttribute()]
    938   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    939939  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     940  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBlobValue))]
    940941  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBoolValue))]
    941   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
    942   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultBlobValue))]
    943942  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultStringValue))]
    944943  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultFloatValue))]
     944  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.ResultIntValue))]
    945945  public partial class ResultValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
    946946
     
    10131013  [System.Diagnostics.DebuggerStepThroughAttribute()]
    10141014  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1015  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1016  public partial class ResultBlobValue : HeuristicLab.Clients.OKB.ResultValue {
     1017
     1018    private byte[] ValueField;
     1019
     1020    [System.Runtime.Serialization.DataMemberAttribute()]
     1021    public byte[] Value {
     1022      get {
     1023        return this.ValueField;
     1024      }
     1025      set {
     1026        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     1027          this.ValueField = value;
     1028          this.RaisePropertyChanged("Value");
     1029        }
     1030      }
     1031    }
     1032  }
     1033
     1034  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1035  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    10151036  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    10161037  public partial class ResultBoolValue : HeuristicLab.Clients.OKB.ResultValue {
     
    10341055  [System.Diagnostics.DebuggerStepThroughAttribute()]
    10351056  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1057  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1058  public partial class ResultStringValue : HeuristicLab.Clients.OKB.ResultValue {
     1059
     1060    private string ValueField;
     1061
     1062    [System.Runtime.Serialization.DataMemberAttribute()]
     1063    public string Value {
     1064      get {
     1065        return this.ValueField;
     1066      }
     1067      set {
     1068        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     1069          this.ValueField = value;
     1070          this.RaisePropertyChanged("Value");
     1071        }
     1072      }
     1073    }
     1074  }
     1075
     1076  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1077  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1078  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1079  public partial class ResultFloatValue : HeuristicLab.Clients.OKB.ResultValue {
     1080
     1081    private double ValueField;
     1082
     1083    [System.Runtime.Serialization.DataMemberAttribute()]
     1084    public double Value {
     1085      get {
     1086        return this.ValueField;
     1087      }
     1088      set {
     1089        if ((this.ValueField.Equals(value) != true)) {
     1090          this.ValueField = value;
     1091          this.RaisePropertyChanged("Value");
     1092        }
     1093      }
     1094    }
     1095  }
     1096
     1097  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1098  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    10361099  [System.Runtime.Serialization.DataContractAttribute(Name = "ResultIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    10371100  public partial class ResultIntValue : HeuristicLab.Clients.OKB.ResultValue {
     
    10411104    [System.Runtime.Serialization.DataMemberAttribute()]
    10421105    public long Value {
    1043       get {
    1044         return this.ValueField;
    1045       }
    1046       set {
    1047         if ((this.ValueField.Equals(value) != true)) {
    1048           this.ValueField = value;
    1049           this.RaisePropertyChanged("Value");
    1050         }
    1051       }
    1052     }
    1053   }
    1054 
    1055   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1056   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1057   [System.Runtime.Serialization.DataContractAttribute(Name = "ResultBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1058   public partial class ResultBlobValue : HeuristicLab.Clients.OKB.ResultValue {
    1059 
    1060     private byte[] ValueField;
    1061 
    1062     [System.Runtime.Serialization.DataMemberAttribute()]
    1063     public byte[] Value {
    1064       get {
    1065         return this.ValueField;
    1066       }
    1067       set {
    1068         if ((object.ReferenceEquals(this.ValueField, value) != true)) {
    1069           this.ValueField = value;
    1070           this.RaisePropertyChanged("Value");
    1071         }
    1072       }
    1073     }
    1074   }
    1075 
    1076   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1077   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1078   [System.Runtime.Serialization.DataContractAttribute(Name = "ResultStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1079   public partial class ResultStringValue : HeuristicLab.Clients.OKB.ResultValue {
    1080 
    1081     private string ValueField;
    1082 
    1083     [System.Runtime.Serialization.DataMemberAttribute()]
    1084     public string Value {
    1085       get {
    1086         return this.ValueField;
    1087       }
    1088       set {
    1089         if ((object.ReferenceEquals(this.ValueField, value) != true)) {
    1090           this.ValueField = value;
    1091           this.RaisePropertyChanged("Value");
    1092         }
    1093       }
    1094     }
    1095   }
    1096 
    1097   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1098   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1099   [System.Runtime.Serialization.DataContractAttribute(Name = "ResultFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1100   public partial class ResultFloatValue : HeuristicLab.Clients.OKB.ResultValue {
    1101 
    1102     private double ValueField;
    1103 
    1104     [System.Runtime.Serialization.DataMemberAttribute()]
    1105     public double Value {
    11061106      get {
    11071107        return this.ValueField;
     
    12661266  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringFilter))]
    12671267  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.SetComparisonStringAvailableValuesFilter))]
     1268  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.CombinedFilter))]
    12681269  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonFilter))]
    12691270  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
     1271  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
    12701272  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
    12711273  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
    1272   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
    1273   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.CombinedFilter))]
    1274   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
    1275   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
    12761274  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.EqualityComparisonFilter))]
    12771275  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameEqualityComparisonBoolFilter))]
     
    14581456  [System.Diagnostics.DebuggerStepThroughAttribute()]
    14591457  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1458  [System.Runtime.Serialization.DataContractAttribute(Name = "CombinedFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1459  public partial class CombinedFilter : HeuristicLab.Clients.OKB.Filter {
     1460
     1461    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> FiltersField;
     1462
     1463    private HeuristicLab.Clients.OKB.BooleanOperation OperationField;
     1464
     1465    [System.Runtime.Serialization.DataMemberAttribute()]
     1466    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> Filters {
     1467      get {
     1468        return this.FiltersField;
     1469      }
     1470      set {
     1471        if ((object.ReferenceEquals(this.FiltersField, value) != true)) {
     1472          this.FiltersField = value;
     1473          this.RaisePropertyChanged("Filters");
     1474        }
     1475      }
     1476    }
     1477
     1478    [System.Runtime.Serialization.DataMemberAttribute()]
     1479    public HeuristicLab.Clients.OKB.BooleanOperation Operation {
     1480      get {
     1481        return this.OperationField;
     1482      }
     1483      set {
     1484        if ((this.OperationField.Equals(value) != true)) {
     1485          this.OperationField = value;
     1486          this.RaisePropertyChanged("Operation");
     1487        }
     1488      }
     1489    }
     1490  }
     1491
     1492  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1493  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    14601494  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    14611495  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonDateTimeFilter))]
     1496  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
    14621497  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonDoubleFilter))]
    14631498  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.NameOrdinalComparisonLongFilter))]
    1464   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrdinalComparisonLongFilter))]
    14651499  public partial class OrdinalComparisonFilter : HeuristicLab.Clients.OKB.Filter {
    14661500
     
    15041538  [System.Diagnostics.DebuggerStepThroughAttribute()]
    15051539  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1540  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1541  public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
     1542
     1543    private long ValueField;
     1544
     1545    [System.Runtime.Serialization.DataMemberAttribute()]
     1546    public long Value {
     1547      get {
     1548        return this.ValueField;
     1549      }
     1550      set {
     1551        if ((this.ValueField.Equals(value) != true)) {
     1552          this.ValueField = value;
     1553          this.RaisePropertyChanged("Value");
     1554        }
     1555      }
     1556    }
     1557  }
     1558
     1559  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1560  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    15061561  [System.Runtime.Serialization.DataContractAttribute(Name = "NameOrdinalComparisonDoubleFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    15071562  public partial class NameOrdinalComparisonDoubleFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
     
    15721627      }
    15731628    }
    1574   }
    1575 
    1576   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1577   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1578   [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparisonLongFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1579   public partial class OrdinalComparisonLongFilter : HeuristicLab.Clients.OKB.OrdinalComparisonFilter {
    1580 
    1581     private long ValueField;
    1582 
    1583     [System.Runtime.Serialization.DataMemberAttribute()]
    1584     public long Value {
    1585       get {
    1586         return this.ValueField;
    1587       }
    1588       set {
    1589         if ((this.ValueField.Equals(value) != true)) {
    1590           this.ValueField = value;
    1591           this.RaisePropertyChanged("Value");
    1592         }
    1593       }
    1594     }
    1595   }
    1596 
    1597   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1598   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1599   [System.Runtime.Serialization.DataContractAttribute(Name = "CombinedFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1600   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.AndFilter))]
    1601   [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.OrFilter))]
    1602   public partial class CombinedFilter : HeuristicLab.Clients.OKB.Filter {
    1603 
    1604     private System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> FiltersField;
    1605 
    1606     [System.Runtime.Serialization.DataMemberAttribute()]
    1607     public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> Filters {
    1608       get {
    1609         return this.FiltersField;
    1610       }
    1611       set {
    1612         if ((object.ReferenceEquals(this.FiltersField, value) != true)) {
    1613           this.FiltersField = value;
    1614           this.RaisePropertyChanged("Filters");
    1615         }
    1616       }
    1617     }
    1618   }
    1619 
    1620   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1621   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1622   [System.Runtime.Serialization.DataContractAttribute(Name = "AndFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1623   public partial class AndFilter : HeuristicLab.Clients.OKB.CombinedFilter {
    1624   }
    1625 
    1626   [System.Diagnostics.DebuggerStepThroughAttribute()]
    1627   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    1628   [System.Runtime.Serialization.DataContractAttribute(Name = "OrFilter", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    1629   public partial class OrFilter : HeuristicLab.Clients.OKB.CombinedFilter {
    16301629  }
    16311630
     
    17431742
    17441743  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1744  [System.Runtime.Serialization.DataContractAttribute(Name = "BooleanOperation", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1745  public enum BooleanOperation : int {
     1746
     1747    [System.Runtime.Serialization.EnumMemberAttribute()]
     1748    And = 0,
     1749
     1750    [System.Runtime.Serialization.EnumMemberAttribute()]
     1751    Or = 1,
     1752  }
     1753
     1754  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    17451755  [System.Runtime.Serialization.DataContractAttribute(Name = "OrdinalComparison", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
    17461756  public enum OrdinalComparison : int {
     
    17741784    [System.Runtime.Serialization.EnumMemberAttribute()]
    17751785    NotEqual = 1,
     1786  }
     1787
     1788  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1789  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1790  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryResult", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1791  public partial class QueryResult : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
     1792
     1793    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
     1794
     1795    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> AlgorithmParametersField;
     1796
     1797    private long IdField;
     1798
     1799    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> ProblemParametersField;
     1800
     1801    private System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> ResultsField;
     1802
     1803    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
     1804      get {
     1805        return this.extensionDataField;
     1806      }
     1807      set {
     1808        this.extensionDataField = value;
     1809      }
     1810    }
     1811
     1812    [System.Runtime.Serialization.DataMemberAttribute()]
     1813    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> AlgorithmParameters {
     1814      get {
     1815        return this.AlgorithmParametersField;
     1816      }
     1817      set {
     1818        if ((object.ReferenceEquals(this.AlgorithmParametersField, value) != true)) {
     1819          this.AlgorithmParametersField = value;
     1820          this.RaisePropertyChanged("AlgorithmParameters");
     1821        }
     1822      }
     1823    }
     1824
     1825    [System.Runtime.Serialization.DataMemberAttribute()]
     1826    public long Id {
     1827      get {
     1828        return this.IdField;
     1829      }
     1830      set {
     1831        if ((this.IdField.Equals(value) != true)) {
     1832          this.IdField = value;
     1833          this.RaisePropertyChanged("Id");
     1834        }
     1835      }
     1836    }
     1837
     1838    [System.Runtime.Serialization.DataMemberAttribute()]
     1839    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> ProblemParameters {
     1840      get {
     1841        return this.ProblemParametersField;
     1842      }
     1843      set {
     1844        if ((object.ReferenceEquals(this.ProblemParametersField, value) != true)) {
     1845          this.ProblemParametersField = value;
     1846          this.RaisePropertyChanged("ProblemParameters");
     1847        }
     1848      }
     1849    }
     1850
     1851    [System.Runtime.Serialization.DataMemberAttribute()]
     1852    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryValue> Results {
     1853      get {
     1854        return this.ResultsField;
     1855      }
     1856      set {
     1857        if ((object.ReferenceEquals(this.ResultsField, value) != true)) {
     1858          this.ResultsField = value;
     1859          this.RaisePropertyChanged("Results");
     1860        }
     1861      }
     1862    }
     1863
     1864    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
     1865
     1866    protected void RaisePropertyChanged(string propertyName) {
     1867      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
     1868      if ((propertyChanged != null)) {
     1869        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
     1870      }
     1871    }
     1872  }
     1873
     1874  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1875  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1876  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1877  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.QueryIntValue))]
     1878  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.QueryStringValue))]
     1879  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.QueryFloatValue))]
     1880  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.QueryBoolValue))]
     1881  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.OKB.QueryBlobValue))]
     1882  public partial class QueryValue : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
     1883
     1884    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
     1885
     1886    private string NameField;
     1887
     1888    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
     1889      get {
     1890        return this.extensionDataField;
     1891      }
     1892      set {
     1893        this.extensionDataField = value;
     1894      }
     1895    }
     1896
     1897    [System.Runtime.Serialization.DataMemberAttribute()]
     1898    public string Name {
     1899      get {
     1900        return this.NameField;
     1901      }
     1902      set {
     1903        if ((object.ReferenceEquals(this.NameField, value) != true)) {
     1904          this.NameField = value;
     1905          this.RaisePropertyChanged("Name");
     1906        }
     1907      }
     1908    }
     1909
     1910    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
     1911
     1912    protected void RaisePropertyChanged(string propertyName) {
     1913      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
     1914      if ((propertyChanged != null)) {
     1915        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
     1916      }
     1917    }
     1918  }
     1919
     1920  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1921  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1922  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryIntValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1923  public partial class QueryIntValue : HeuristicLab.Clients.OKB.QueryValue {
     1924
     1925    private long ValueField;
     1926
     1927    [System.Runtime.Serialization.DataMemberAttribute()]
     1928    public long Value {
     1929      get {
     1930        return this.ValueField;
     1931      }
     1932      set {
     1933        if ((this.ValueField.Equals(value) != true)) {
     1934          this.ValueField = value;
     1935          this.RaisePropertyChanged("Value");
     1936        }
     1937      }
     1938    }
     1939  }
     1940
     1941  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1942  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1943  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryStringValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1944  public partial class QueryStringValue : HeuristicLab.Clients.OKB.QueryValue {
     1945
     1946    private string ValueField;
     1947
     1948    [System.Runtime.Serialization.DataMemberAttribute()]
     1949    public string Value {
     1950      get {
     1951        return this.ValueField;
     1952      }
     1953      set {
     1954        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     1955          this.ValueField = value;
     1956          this.RaisePropertyChanged("Value");
     1957        }
     1958      }
     1959    }
     1960  }
     1961
     1962  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1963  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1964  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryFloatValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1965  public partial class QueryFloatValue : HeuristicLab.Clients.OKB.QueryValue {
     1966
     1967    private double ValueField;
     1968
     1969    [System.Runtime.Serialization.DataMemberAttribute()]
     1970    public double Value {
     1971      get {
     1972        return this.ValueField;
     1973      }
     1974      set {
     1975        if ((this.ValueField.Equals(value) != true)) {
     1976          this.ValueField = value;
     1977          this.RaisePropertyChanged("Value");
     1978        }
     1979      }
     1980    }
     1981  }
     1982
     1983  [System.Diagnostics.DebuggerStepThroughAttribute()]
     1984  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1985  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryBoolValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     1986  public partial class QueryBoolValue : HeuristicLab.Clients.OKB.QueryValue {
     1987
     1988    private bool ValueField;
     1989
     1990    [System.Runtime.Serialization.DataMemberAttribute()]
     1991    public bool Value {
     1992      get {
     1993        return this.ValueField;
     1994      }
     1995      set {
     1996        if ((this.ValueField.Equals(value) != true)) {
     1997          this.ValueField = value;
     1998          this.RaisePropertyChanged("Value");
     1999        }
     2000      }
     2001    }
     2002  }
     2003
     2004  [System.Diagnostics.DebuggerStepThroughAttribute()]
     2005  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     2006  [System.Runtime.Serialization.DataContractAttribute(Name = "QueryBlobValue", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.OKB.DataTransfer")]
     2007  public partial class QueryBlobValue : HeuristicLab.Clients.OKB.QueryValue {
     2008
     2009    private string DataTypeNameField;
     2010
     2011    private byte[] ValueField;
     2012
     2013    [System.Runtime.Serialization.DataMemberAttribute()]
     2014    public string DataTypeName {
     2015      get {
     2016        return this.DataTypeNameField;
     2017      }
     2018      set {
     2019        if ((object.ReferenceEquals(this.DataTypeNameField, value) != true)) {
     2020          this.DataTypeNameField = value;
     2021          this.RaisePropertyChanged("DataTypeName");
     2022        }
     2023      }
     2024    }
     2025
     2026    [System.Runtime.Serialization.DataMemberAttribute()]
     2027    public byte[] Value {
     2028      get {
     2029        return this.ValueField;
     2030      }
     2031      set {
     2032        if ((object.ReferenceEquals(this.ValueField, value) != true)) {
     2033          this.ValueField = value;
     2034          this.RaisePropertyChanged("Value");
     2035        }
     2036      }
     2037    }
    17762038  }
    17772039
     
    22432505    System.Collections.Generic.List<HeuristicLab.Clients.OKB.Filter> GetFilters();
    22442506
    2245     [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/QueryNumberOfRuns", ReplyAction = "http://tempuri.org/IQueryService/QueryNumberOfRunsResponse")]
    2246     long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter);
    2247 
    2248     [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/QueryRuns", ReplyAction = "http://tempuri.org/IQueryService/QueryRunsResponse")]
    2249     System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter);
     2507    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/GetNumberOfQueryResults", ReplyAction = "http://tempuri.org/IQueryService/GetNumberOfQueryResultsResponse")]
     2508    long GetNumberOfQueryResults(HeuristicLab.Clients.OKB.Filter filter);
     2509
     2510    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/GetQueryResultIds", ReplyAction = "http://tempuri.org/IQueryService/GetQueryResultIdsResponse")]
     2511    System.Collections.Generic.List<long> GetQueryResultIds(HeuristicLab.Clients.OKB.Filter filter);
     2512
     2513    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IQueryService/GetQueryResults", ReplyAction = "http://tempuri.org/IQueryService/GetQueryResultsResponse")]
     2514    System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryResult> GetQueryResults(System.Collections.Generic.List<long> ids);
    22502515  }
    22512516
     
    22812546    }
    22822547
    2283     public long QueryNumberOfRuns(HeuristicLab.Clients.OKB.Filter filter) {
    2284       return base.Channel.QueryNumberOfRuns(filter);
    2285     }
    2286 
    2287     public System.Collections.Generic.List<HeuristicLab.Clients.OKB.Run> QueryRuns(HeuristicLab.Clients.OKB.Filter filter) {
    2288       return base.Channel.QueryRuns(filter);
     2548    public long GetNumberOfQueryResults(HeuristicLab.Clients.OKB.Filter filter) {
     2549      return base.Channel.GetNumberOfQueryResults(filter);
     2550    }
     2551
     2552    public System.Collections.Generic.List<long> GetQueryResultIds(HeuristicLab.Clients.OKB.Filter filter) {
     2553      return base.Channel.GetQueryResultIds(filter);
     2554    }
     2555
     2556    public System.Collections.Generic.List<HeuristicLab.Clients.OKB.QueryResult> GetQueryResults(System.Collections.Generic.List<long> ids) {
     2557      return base.Channel.GetQueryResults(ids);
    22892558    }
    22902559  }
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/CombinedFilterView.cs

    r5289 r5304  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
    2324using System.Windows.Forms;
     
    4849      base.OnContentChanged();
    4950      RemoveFilters();
     51      label.Text = string.Empty;
    5052      if (Content != null) {
     53        string nl = Environment.NewLine;
     54        label.Text = Content.Operation == BooleanOperation.And ? "A" + nl + "N" + nl + "D" : "O" + nl + "R";
     55
    5156        foreach (Filter filter in Content.Filters)
    5257          AddFilter(filter);
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.Designer.cs

    r5295 r5304  
    4646    private void InitializeComponent() {
    4747      this.components = new System.ComponentModel.Container();
     48      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QueryView));
    4849      this.refreshResultsButton = new System.Windows.Forms.Button();
    4950      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    50       this.showRunsButton = new System.Windows.Forms.Button();
    51       this.runCollectionView = new HeuristicLab.Clients.OKB.RunCollectionView();
     51      this.runCollectionView = new HeuristicLab.Optimization.Views.RunCollectionView();
    5252      this.splitContainer = new System.Windows.Forms.SplitContainer();
    5353      this.filtersGroupBox = new System.Windows.Forms.GroupBox();
     54      this.filterPanel = new System.Windows.Forms.Panel();
    5455      this.resultsGroupBox = new System.Windows.Forms.GroupBox();
    55       this.nrOfRunsButton = new System.Windows.Forms.Button();
    56       this.filterPanel = new System.Windows.Forms.Panel();
     56      this.deserializeBlobsCheckBox = new System.Windows.Forms.CheckBox();
    5757      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
    5858      this.splitContainer.Panel1.SuspendLayout();
     
    7373      this.refreshResultsButton.UseVisualStyleBackColor = true;
    7474      this.refreshResultsButton.Click += new System.EventHandler(this.refreshResultsButton_Click);
    75       //
    76       // showRunsButton
    77       //
    78       this.showRunsButton.Location = new System.Drawing.Point(36, 19);
    79       this.showRunsButton.Name = "showRunsButton";
    80       this.showRunsButton.Size = new System.Drawing.Size(75, 24);
    81       this.showRunsButton.TabIndex = 1;
    82       this.showRunsButton.Text = "&Show Runs";
    83       this.showRunsButton.UseVisualStyleBackColor = true;
    84       this.showRunsButton.Click += new System.EventHandler(this.showRunsButton_Click);
    8575      //
    8676      // runCollectionView
     
    130120      this.filtersGroupBox.Text = "Filters";
    131121      //
    132       // resultsGroupBox
    133       //
    134       this.resultsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    135                   | System.Windows.Forms.AnchorStyles.Left)
    136                   | System.Windows.Forms.AnchorStyles.Right)));
    137       this.resultsGroupBox.Controls.Add(this.nrOfRunsButton);
    138       this.resultsGroupBox.Controls.Add(this.refreshResultsButton);
    139       this.resultsGroupBox.Controls.Add(this.runCollectionView);
    140       this.resultsGroupBox.Controls.Add(this.showRunsButton);
    141       this.resultsGroupBox.Location = new System.Drawing.Point(0, 3);
    142       this.resultsGroupBox.Name = "resultsGroupBox";
    143       this.resultsGroupBox.Size = new System.Drawing.Size(734, 211);
    144       this.resultsGroupBox.TabIndex = 0;
    145       this.resultsGroupBox.TabStop = false;
    146       this.resultsGroupBox.Text = "Results";
    147       //
    148       // nrOfRunsButton
    149       //
    150       this.nrOfRunsButton.Location = new System.Drawing.Point(117, 19);
    151       this.nrOfRunsButton.Name = "nrOfRunsButton";
    152       this.nrOfRunsButton.Size = new System.Drawing.Size(75, 23);
    153       this.nrOfRunsButton.TabIndex = 3;
    154       this.nrOfRunsButton.Text = "No. of Runs";
    155       this.nrOfRunsButton.UseVisualStyleBackColor = true;
    156       this.nrOfRunsButton.Click += new System.EventHandler(this.nrOfRunsButton_Click);
    157       //
    158122      // filterPanel
    159123      //
     
    165129      this.filterPanel.Size = new System.Drawing.Size(722, 189);
    166130      this.filterPanel.TabIndex = 0;
     131      //
     132      // resultsGroupBox
     133      //
     134      this.resultsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
     135                  | System.Windows.Forms.AnchorStyles.Left)
     136                  | System.Windows.Forms.AnchorStyles.Right)));
     137      this.resultsGroupBox.Controls.Add(this.deserializeBlobsCheckBox);
     138      this.resultsGroupBox.Controls.Add(this.refreshResultsButton);
     139      this.resultsGroupBox.Controls.Add(this.runCollectionView);
     140      this.resultsGroupBox.Location = new System.Drawing.Point(0, 3);
     141      this.resultsGroupBox.Name = "resultsGroupBox";
     142      this.resultsGroupBox.Size = new System.Drawing.Size(734, 211);
     143      this.resultsGroupBox.TabIndex = 0;
     144      this.resultsGroupBox.TabStop = false;
     145      this.resultsGroupBox.Text = "Results";
     146      //
     147      // deserializeBlobsCheckBox
     148      //
     149      this.deserializeBlobsCheckBox.AutoSize = true;
     150      this.deserializeBlobsCheckBox.Checked = true;
     151      this.deserializeBlobsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
     152      this.deserializeBlobsCheckBox.Location = new System.Drawing.Point(62, 24);
     153      this.deserializeBlobsCheckBox.Name = "deserializeBlobsCheckBox";
     154      this.deserializeBlobsCheckBox.Size = new System.Drawing.Size(106, 17);
     155      this.deserializeBlobsCheckBox.TabIndex = 3;
     156      this.deserializeBlobsCheckBox.Text = "&Deserialize Blobs";
     157      this.deserializeBlobsCheckBox.UseVisualStyleBackColor = true;
    167158      //
    168159      // QueryView
     
    179170      this.filtersGroupBox.ResumeLayout(false);
    180171      this.resultsGroupBox.ResumeLayout(false);
     172      this.resultsGroupBox.PerformLayout();
    181173      this.ResumeLayout(false);
    182174
     
    187179    private System.Windows.Forms.Button refreshResultsButton;
    188180    private System.Windows.Forms.ToolTip toolTip;
    189     private RunCollectionView runCollectionView;
    190     private System.Windows.Forms.Button showRunsButton;
     181    private HeuristicLab.Optimization.Views.RunCollectionView runCollectionView;
    191182    private System.Windows.Forms.SplitContainer splitContainer;
    192183    private System.Windows.Forms.GroupBox filtersGroupBox;
    193184    private System.Windows.Forms.GroupBox resultsGroupBox;
    194     private System.Windows.Forms.Button nrOfRunsButton;
    195185    private System.Windows.Forms.Panel filterPanel;
     186    private System.Windows.Forms.CheckBox deserializeBlobsCheckBox;
    196187
    197188  }
  • branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/Views/QueryView.cs

    r5295 r5304  
    2121
    2222using System;
     23using System.Collections.Generic;
     24using System.IO;
    2325using System.Linq;
    2426using System.Windows.Forms;
     27using HeuristicLab.Core;
     28using HeuristicLab.Data;
    2529using HeuristicLab.MainForm;
    2630using HeuristicLab.MainForm.WindowsForms;
     31using HeuristicLab.Optimization;
     32using HeuristicLab.Persistence.Default.Xml;
    2733
    2834namespace HeuristicLab.Clients.OKB {
     
    3036  [Content(typeof(OKBClient), false)]
    3137  public sealed partial class QueryView : HeuristicLab.MainForm.WindowsForms.View {
    32     private AndFilterView andFilterView;
     38    private CombinedFilterView combinedFilterView;
    3339
    3440    public QueryView() {
     
    4046      this.Cursor = Cursors.AppStarting;
    4147
    42       Func<AndFilter> func = () => {
    43         return OKBClient.Instance.GetFilters().OfType<AndFilter>().FirstOrDefault();
     48      Func<CombinedFilter> func = () => {
     49        return OKBClient.Instance.GetFilters().OfType<CombinedFilter>().Where(x => x.Operation == BooleanOperation.And).FirstOrDefault();
    4450      };
    4551
    4652      func.BeginInvoke((IAsyncResult result) => {
    47         AndFilter filter = func.EndInvoke(result);
    48         if (InvokeRequired) Invoke(new Action<AndFilter>(FinishedLoadingAndFilter), filter);
    49         else FinishedLoadingAndFilter(filter);
     53        CombinedFilter filter = func.EndInvoke(result);
     54        if (InvokeRequired) Invoke(new Action<CombinedFilter>(FinishedLoadingFilter), filter);
     55        else FinishedLoadingFilter(filter);
    5056      }, null);
    5157    }
    5258
    53     private void FinishedLoadingAndFilter(AndFilter filter) {
     59    private void FinishedLoadingFilter(CombinedFilter filter) {
    5460      if (filter != null) {
    55         andFilterView = (AndFilterView)MainFormManager.CreateView(typeof(AndFilterView));
    56         andFilterView.Content = (AndFilter)filter.Clone();
    57         Control control = (Control)andFilterView;
     61        combinedFilterView = (CombinedFilterView)MainFormManager.CreateView(typeof(CombinedFilterView));
     62        combinedFilterView.Content = (CombinedFilter)filter.Clone();
     63        Control control = (Control)combinedFilterView;
    5864        control.Dock = DockStyle.Fill;
    5965        filterPanel.Controls.Add(control);
     
    6571    protected override void SetEnabledStateOfControls() {
    6672      base.SetEnabledStateOfControls();
    67       resultsGroupBox.Enabled = andFilterView != null;
    68       showRunsButton.Enabled = (runCollectionView.Content != null) && (runCollectionView.Content.Count > 0);
     73      resultsGroupBox.Enabled = combinedFilterView != null;
    6974    }
    7075
    7176    private void refreshResultsButton_Click(object sender, EventArgs e) {
    72       DateTime start = DateTime.Now;
    73       runCollectionView.Content = OKBClient.Instance.QueryRuns(andFilterView.Content);
    74       MessageBox.Show((DateTime.Now - start).ToString());
     77      bool deserialize = deserializeBlobsCheckBox.Checked;
     78
     79      System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
     80      sw.Start();
     81      long count = OKBClient.Instance.GetNumberOfQueryResults(combinedFilterView.Content);
     82      sw.Stop();
     83      MessageBox.Show(count.ToString() + " Runs");
     84      if (MessageBox.Show(sw.Elapsed.ToString(), "GetNumberOfQueryResults", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
     85
     86      sw.Restart();
     87      var ids = OKBClient.Instance.GetQueryResultIds(combinedFilterView.Content);
     88      sw.Stop();
     89      if (MessageBox.Show(sw.Elapsed.ToString(), "GetQueryResultIds", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
     90
     91      sw.Restart();
     92      List<QueryResult> results = new List<QueryResult>();
     93      while (ids.Count() > 0) {
     94        results.AddRange(OKBClient.Instance.GetQueryResults(ids.Take(50)));
     95        ids = ids.Skip(50);
     96      }
     97      sw.Stop();
     98      if (MessageBox.Show(sw.Elapsed.ToString(), "GetQueryResults", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return;
     99
     100      sw.Restart();
     101      IEnumerable<QueryResult> res = results.AsEnumerable();
     102      RunCollection runs = new RunCollection();
     103      runCollectionView.Content = runs;
     104      while (res.Count() > 0) {
     105        runs.AddRange(res.Take(50).Select(x => ConvertToOptimizationRun(x, deserialize)));
     106        res = res.Skip(50);
     107      }
     108      sw.Stop();
     109      MessageBox.Show(sw.Elapsed.ToString(), "Conversion", MessageBoxButtons.OK);
     110
    75111      SetEnabledStateOfControls();
    76112    }
    77113
    78     private void showRunsButton_Click(object sender, EventArgs e) {
    79       DateTime start = DateTime.Now;
    80       MainFormManager.MainForm.ShowContent(OKBClient.Instance.ConvertOKBRunsToOptimizationRuns(runCollectionView.Content));
    81       MessageBox.Show((DateTime.Now - start).ToString());
     114    private Optimization.IRun ConvertToOptimizationRun(QueryResult queryResult, bool deserialize) {
     115      Optimization.Run run = new Optimization.Run();
     116      foreach (QueryValue value in queryResult.AlgorithmParameters)
     117        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
     118      foreach (QueryValue value in queryResult.ProblemParameters)
     119        run.Parameters.Add(value.Name, ConvertToItem(value, deserialize));
     120      foreach (QueryValue value in queryResult.Results)
     121        run.Results.Add(value.Name, ConvertToItem(value, deserialize));
     122      return run;
    82123    }
    83124
    84     private void nrOfRunsButton_Click(object sender, EventArgs e) {
    85       long runs = OKBClient.Instance.QueryNumberOfRuns(andFilterView.Content);
    86       MessageBox.Show(runs.ToString());
     125    private IItem ConvertToItem(QueryValue value, bool deserialize) {
     126      if (value is QueryBlobValue) {
     127        if (deserialize) {
     128          IItem item = null;
     129          using (MemoryStream stream = new MemoryStream(((QueryBlobValue)value).Value)) {
     130            try {
     131              item = XmlParser.Deserialize<IItem>(stream);
     132            }
     133            catch (Exception) { }
     134            stream.Close();
     135          }
     136          return item != null ? item : new StringValue(((QueryBlobValue)value).DataTypeName);
     137        } else {
     138          return new StringValue(((QueryBlobValue)value).DataTypeName);
     139        }
     140      } else if (value is QueryBoolValue) {
     141        return new BoolValue(((QueryBoolValue)value).Value);
     142      } else if (value is QueryFloatValue) {
     143        return new DoubleValue(((QueryFloatValue)value).Value);
     144      } else if (value is QueryIntValue) {
     145        return new IntValue((int)((QueryIntValue)value).Value);
     146      } else if (value is QueryStringValue) {
     147        return new StringValue(((QueryStringValue)value).Value);
     148      }
     149      return null;
    87150    }
    88151  }
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/Tests/DBTests.cs

    r5298 r5304  
    2121
    2222using System;
     23using System.Collections.Generic;
    2324using System.Data.Linq;
    2425using System.Linq;
     
    99100
    100101    [TestMethod]
     102    public void FetchRunsTest() {
     103      long[] ids;
     104      using (OKBDataContext okb = new OKBDataContext()) {
     105        ids = okb.Runs.Skip(100).Take(50).Select(x => x.Id).ToArray();
     106      }
     107
     108      QueryService qs = new QueryService();
     109      qs.GetQueryResults(ids);
     110    }
     111
     112    [TestMethod]
     113    public void GetFiltersTest() {
     114      List<DataTransfer.Filter> filters = new List<DataTransfer.Filter>();
     115      using (OKBDataContext okb = new OKBDataContext()) {
     116        // run filters
     117        filters.Add(new DataTransfer.OrdinalComparisonLongFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
     118        filters.Add(new DataTransfer.OrdinalComparisonDateTimeFilter(typeof(RunCreatedDateFilter).AssemblyQualifiedName, "Run Created Date"));
     119        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
     120        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
     121
     122        // result filters
     123        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name", okb.Results.Select(x => x.Name).Distinct().ToArray()));
     124        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     125          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value Data Type Name", entity.Name, okb.ResultBlobValues.Where(x => x.Result.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
     126        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     127          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     128        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     129          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     130        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     131          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     132        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     133          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     134        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     135          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     136
     137        // algorithm parameter filters
     138        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name", okb.AlgorithmParameters.Select(x => x.Name).Distinct().ToArray()));
     139        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     140          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.AlgorithmParameterBlobValues.Where(x => x.AlgorithmParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
     141        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     142          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     143        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     144          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     145        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     146          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     147        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     148          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     149        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     150          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     151
     152        // algorithm filters
     153        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name", okb.Algorithms.Select(x => x.Name).Distinct().ToArray()));
     154        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name", okb.AlgorithmClasses.Select(x => x.Name).Distinct().ToArray()));
     155        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmPlatformNameFilter).AssemblyQualifiedName, "Algorithm Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
     156        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name", okb.Algorithms.Select(x => x.AlgorithmData.DataType.Name).Distinct().ToArray()));
     157
     158        // problem parameter filters
     159        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name", okb.ProblemParameters.Select(x => x.Name).Distinct().ToArray()));
     160        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     161          filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.ProblemParameterBlobValues.Where(x => x.ProblemParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
     162        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     163          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     164        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     165          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     166        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     167          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     168        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     169          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     170        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     171          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     172
     173        // problem filters
     174        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name", okb.Problems.Select(x => x.Name).Distinct().ToArray()));
     175        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name", okb.ProblemClasses.Select(x => x.Name).Distinct().ToArray()));
     176        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemPlatformNameFilter).AssemblyQualifiedName, "Problem Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
     177        filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name", okb.Problems.Select(x => x.ProblemData.DataType.Name).Distinct().ToArray()));
     178
     179        // and/or filters
     180        filters.Add(new DataTransfer.CombinedFilter(typeof(AndFilter).AssemblyQualifiedName, "And", DataTransfer.BooleanOperation.And));
     181        filters.Add(new DataTransfer.CombinedFilter(typeof(OrFilter).AssemblyQualifiedName, "Or", DataTransfer.BooleanOperation.Or));
     182      }
     183    }
     184
     185    [TestMethod]
    101186    public void ClearDB() {
    102187      using (OKBDataContext okb = new OKBDataContext()) {
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataAccess/3.3/Tests/HeuristicLab.Services.OKB.DataAccess-3.3.Tests.csproj

    r5298 r5304  
    5151  </ItemGroup>
    5252  <ItemGroup>
     53    <ProjectReference Include="..\..\..\HeuristicLab.Clients.OKB\3.3\HeuristicLab.Clients.OKB-3.3.csproj">
     54      <Project>{73857A9C-9706-4B72-8D9C-210B5B6A5691}</Project>
     55      <Name>HeuristicLab.Clients.OKB-3.3</Name>
     56    </ProjectReference>
     57    <ProjectReference Include="..\..\..\HeuristicLab.Services.OKB.DataTransfer\3.3\HeuristicLab.Services.OKB.DataTransfer-3.3.csproj">
     58      <Project>{209FD7A1-DFB2-4B9F-9268-B95E886B2F7A}</Project>
     59      <Name>HeuristicLab.Services.OKB.DataTransfer-3.3</Name>
     60    </ProjectReference>
     61    <ProjectReference Include="..\..\..\HeuristicLab.Services.OKB\3.3\HeuristicLab.Services.OKB-3.3.csproj">
     62      <Project>{766DA4B7-2A0E-4CDE-8F90-93D8B1AD62CF}</Project>
     63      <Name>HeuristicLab.Services.OKB-3.3</Name>
     64    </ProjectReference>
    5365    <ProjectReference Include="..\HeuristicLab.Services.OKB.DataAccess-3.3.csproj">
    5466      <Project>{E36BE58F-F3CE-40BB-9AB3-9F9E30AD5CCF}</Project>
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataTransfer/3.3/Filters/CombinedFilter.cs

    r5286 r5304  
    2121
    2222using System.Collections.Generic;
     23using System.Linq;
    2324using System.Runtime.Serialization;
    2425
    2526namespace HeuristicLab.Services.OKB.DataTransfer {
    2627  [DataContract]
    27   public abstract class CombinedFilter : Filter {
     28  public class CombinedFilter : Filter {
     29    [DataMember]
     30    public BooleanOperation Operation { get; protected set; }
    2831    [DataMember]
    2932    public IEnumerable<Filter> Filters { get; set; }
     33
     34    public CombinedFilter(string filterTypeName, string label, BooleanOperation operation) {
     35      FilterTypeName = filterTypeName;
     36      Label = label;
     37      Operation = operation;
     38      Filters = Enumerable.Empty<Filter>();
     39    }
    3040  }
    3141}
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataTransfer/3.3/Filters/Filter.cs

    r5295 r5304  
    3434  [KnownType(typeof(NameSetComparisonStringFilter))]
    3535  [KnownType(typeof(NameSetComparisonStringAvailableValuesFilter))]
    36   [KnownType(typeof(AndFilter))]
    37   [KnownType(typeof(OrFilter))]
     36  [KnownType(typeof(CombinedFilter))]
    3837  public abstract class Filter {
    3938    [DataMember]
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB.DataTransfer/3.3/HeuristicLab.Services.OKB.DataTransfer-3.3.csproj

    r5295 r5304  
    5858    <Compile Include="AlgorithmParameterIntValue.cs" />
    5959    <Compile Include="AlgorithmParameterStringValue.cs" />
     60    <Compile Include="Filters\BooleanOperation.cs" />
     61    <Compile Include="QueryBoolValue.cs" />
     62    <Compile Include="QueryBlobValue.cs" />
     63    <Compile Include="QueryFloatValue.cs" />
     64    <Compile Include="QueryIntValue.cs" />
     65    <Compile Include="QueryStringValue.cs" />
     66    <Compile Include="QueryValue.cs" />
     67    <Compile Include="QueryResult.cs" />
    6068    <Compile Include="Filters\CombinedFilter.cs" />
    61     <Compile Include="Filters\AndFilter.cs" />
    6269    <Compile Include="Filters\NameSetComparisonStringAvailableValuesFilter.cs" />
    6370    <Compile Include="Filters\SetComparisonStringAvailableValuesFilter.cs" />
    64     <Compile Include="Filters\OrFilter.cs" />
    6571    <Compile Include="Filters\OrdinalComparisonFilter.cs" />
    6672    <Compile Include="Filters\SetComparisonFilter.cs" />
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Filters/AndFilter.cs

    r5286 r5304  
    4343      Filters = new List<IFilter>(filters);
    4444    }
    45     public AndFilter(DataTransfer.AndFilter filter) {
     45    public AndFilter(DataTransfer.CombinedFilter filter) {
    4646      Filters = new List<IFilter>(filter.Filters.Select(x => (IFilter)Activator.CreateInstance(Type.GetType(x.FilterTypeName), x)));
    4747    }
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Filters/OrFilter.cs

    r5286 r5304  
    4343      Filters = new List<IFilter>(filters);
    4444    }
    45     public OrFilter(DataTransfer.OrFilter filter) {
     45    public OrFilter(DataTransfer.CombinedFilter filter) {
    4646      Filters = new List<IFilter>(filter.Filters.Select(x => (IFilter)Activator.CreateInstance(Type.GetType(x.FilterTypeName), x)));
    4747    }
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IQueryService.cs

    r5299 r5304  
    3535
    3636    [OperationContract]
    37     long QueryNumberOfRuns(Filter filter);
     37    long GetNumberOfQueryResults(Filter filter);
    3838
    3939    [OperationContract]
    40     IEnumerable<Run> QueryRuns(Filter filter);
     40    IEnumerable<long> GetQueryResultIds(Filter filter);
     41
     42    [OperationContract]
     43    IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids);
    4144  }
    4245}
  • branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/QueryService.cs

    r5299 r5304  
    2626using System.ServiceModel;
    2727using HeuristicLab.Services.OKB.DataAccess;
     28using HeuristicLab.Services.OKB.DataTransfer;
    2829
    2930namespace HeuristicLab.Services.OKB {
     
    3334  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    3435  public class QueryService : IQueryService {
    35     public IEnumerable<DataTransfer.Filter> GetFilters() {
    36       List<DataTransfer.Filter> filters = new List<DataTransfer.Filter>();
    37       using (OKBDataContext okb = new OKBDataContext()) {
    38         //DataLoadOptions dlo = new DataLoadOptions();
    39         //dlo.LoadWith<Algorithm>(x => x.AlgorithmData);
    40         //dlo.LoadWith<AlgorithmData>(x => x.DataType);
    41         //dlo.LoadWith<Problem>(x => x.ProblemData);
    42         //dlo.LoadWith<ProblemData>(x => x.DataType);
    43         //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
    44         //dlo.LoadWith<ProblemParameter>(x => x.DataType);
    45         //dlo.LoadWith<Result>(x => x.DataType);
    46         //okb.LoadOptions = dlo;
    47 
     36    public IEnumerable<Filter> GetFilters() {
     37      List<Filter> filters = new List<Filter>();
     38      using (OKBDataContext okb = new OKBDataContext()) {
    4839        // run filters
    49         filters.Add(new DataTransfer.OrdinalComparisonLongFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
    50         filters.Add(new DataTransfer.OrdinalComparisonDateTimeFilter(typeof(RunCreatedDateFilter).AssemblyQualifiedName, "Run Created Date"));
    51         filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
    52         filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
     40        filters.Add(new OrdinalComparisonLongFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
     41        filters.Add(new OrdinalComparisonDateTimeFilter(typeof(RunCreatedDateFilter).AssemblyQualifiedName, "Run Created Date"));
     42        filters.Add(new SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
     43        filters.Add(new SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
    5344
    5445        // result filters
    55         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name", okb.Results.Select(x => x.Name).Distinct().ToArray()));
    56         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    57           filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value Data Type Name", entity.Name, okb.ResultBlobValues.Where(x => x.Result.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
    58         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    59           filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
    60         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    61           filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
    62         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    63           filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
    64         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    65           filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
    66         foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
    67           filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     46        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name", okb.Results.Select(x => x.Name).Distinct().ToArray()));
     47        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     48          filters.Add(new NameSetComparisonStringAvailableValuesFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + name + " Value Data Type Name", name, okb.ResultBlobValues.Where(x => x.Result.Name == name).Select(x => x.DataType.Name).Distinct().ToArray()));
     49        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     50          filters.Add(new NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + name + " Value", name));
     51        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "bit").Select(x => x.Name).Distinct())
     52          filters.Add(new NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + name + " Value", name));
     53        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "float").Select(x => x.Name).Distinct())
     54          filters.Add(new NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + name + " Value", name));
     55        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "bigint").Select(x => x.Name).Distinct())
     56          filters.Add(new NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + name + " Value", name));
     57        foreach (string name in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").Select(x => x.Name).Distinct())
     58          filters.Add(new NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + name + " Value", name));
    6859
    6960        // algorithm parameter filters
    70         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name", okb.AlgorithmParameters.Select(x => x.Name).Distinct().ToArray()));
    71         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    72           filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.AlgorithmParameterBlobValues.Where(x => x.AlgorithmParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
    73         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    74           filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
    75         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    76           filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
    77         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    78           filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
    79         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    80           filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
    81         foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
    82           filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     61        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name", okb.AlgorithmParameters.Select(x => x.Name).Distinct().ToArray()));
     62        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     63          filters.Add(new NameSetComparisonStringAvailableValuesFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value Data Type Name", name, okb.AlgorithmParameterBlobValues.Where(x => x.AlgorithmParameter.Name == name).Select(x => x.DataType.Name).Distinct().ToArray()));
     64        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     65          filters.Add(new NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value", name));
     66        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").Select(x => x.Name).Distinct())
     67          filters.Add(new NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value", name));
     68        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").Select(x => x.Name).Distinct())
     69          filters.Add(new NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value", name));
     70        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").Select(x => x.Name).Distinct())
     71          filters.Add(new NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value", name));
     72        foreach (string name in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").Select(x => x.Name).Distinct())
     73          filters.Add(new NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + name + " Value", name));
    8374
    8475        // algorithm filters
    85         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name", okb.Algorithms.Select(x => x.Name).Distinct().ToArray()));
    86         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name", okb.AlgorithmClasses.Select(x => x.Name).Distinct().ToArray()));
    87         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmPlatformNameFilter).AssemblyQualifiedName, "Algorithm Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
    88         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name", okb.Algorithms.Select(x => x.AlgorithmData.DataType.Name).Distinct().ToArray()));
     76        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name", okb.Algorithms.Select(x => x.Name).Distinct().ToArray()));
     77        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name", okb.AlgorithmClasses.Select(x => x.Name).Distinct().ToArray()));
     78        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(AlgorithmPlatformNameFilter).AssemblyQualifiedName, "Algorithm Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
     79        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name", okb.Algorithms.Select(x => x.AlgorithmData.DataType.Name).Distinct().ToArray()));
    8980
    9081        // problem parameter filters
    91         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name", okb.ProblemParameters.Select(x => x.Name).Distinct().ToArray()));
    92         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    93           filters.Add(new DataTransfer.NameSetComparisonStringAvailableValuesFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value Data Type Name", entity.Name, okb.ProblemParameterBlobValues.Where(x => x.ProblemParameter.Name == entity.Name).Select(x => x.DataType.Name).Distinct().ToArray()));
    94         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    95           filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
    96         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    97           filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
    98         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    99           filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
    100         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    101           filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
    102         foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
    103           filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     82        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name", okb.ProblemParameters.Select(x => x.Name).Distinct().ToArray()));
     83        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     84          filters.Add(new NameSetComparisonStringAvailableValuesFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value Data Type Name", name, okb.ProblemParameterBlobValues.Where(x => x.ProblemParameter.Name == name).Select(x => x.DataType.Name).Distinct().ToArray()));
     85        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").Select(x => x.Name).Distinct())
     86          filters.Add(new NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value", name));
     87        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").Select(x => x.Name).Distinct())
     88          filters.Add(new NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value", name));
     89        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").Select(x => x.Name).Distinct())
     90          filters.Add(new NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value", name));
     91        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").Select(x => x.Name).Distinct())
     92          filters.Add(new NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value", name));
     93        foreach (string name in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").Select(x => x.Name).Distinct())
     94          filters.Add(new NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + name + " Value", name));
    10495
    10596        // problem filters
    106         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name", okb.Problems.Select(x => x.Name).Distinct().ToArray()));
    107         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name", okb.ProblemClasses.Select(x => x.Name).Distinct().ToArray()));
    108         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemPlatformNameFilter).AssemblyQualifiedName, "Problem Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
    109         filters.Add(new DataTransfer.SetComparisonStringAvailableValuesFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name", okb.Problems.Select(x => x.ProblemData.DataType.Name).Distinct().ToArray()));
     97        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name", okb.Problems.Select(x => x.Name).Distinct().ToArray()));
     98        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name", okb.ProblemClasses.Select(x => x.Name).Distinct().ToArray()));
     99        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ProblemPlatformNameFilter).AssemblyQualifiedName, "Problem Platform Name", okb.Platforms.Select(x => x.Name).Distinct().ToArray()));
     100        filters.Add(new SetComparisonStringAvailableValuesFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name", okb.Problems.Select(x => x.ProblemData.DataType.Name).Distinct().ToArray()));
    110101
    111102        // and/or filters
    112         filters.Add(new DataTransfer.AndFilter(typeof(AndFilter).AssemblyQualifiedName, "And"));
    113         filters.Add(new DataTransfer.OrFilter(typeof(OrFilter).AssemblyQualifiedName, "Or"));
     103        filters.Add(new CombinedFilter(typeof(AndFilter).AssemblyQualifiedName, "AND", BooleanOperation.And));
     104        filters.Add(new CombinedFilter(typeof(OrFilter).AssemblyQualifiedName, "OR", BooleanOperation.Or));
    114105      }
    115106      return filters.OrderBy(x => x.Label);
    116107    }
    117     public long QueryNumberOfRuns(DataTransfer.Filter filter) {
    118       using (OKBDataContext okb = new OKBDataContext()) {
    119         IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
    120         return okb.Runs.Where(convertedFilter.Expression).LongCount();
    121       }
    122     }
    123     public IEnumerable<DataTransfer.Run> QueryRuns(DataTransfer.Filter filter) {
    124       using (OKBDataContext okb = new OKBDataContext()) {
    125         //DataLoadOptions dlo = new DataLoadOptions();
    126         //dlo.LoadWith<Run>(x => x.ResultBlobValues);
    127         //dlo.LoadWith<Run>(x => x.ResultBoolValues);
    128         //dlo.LoadWith<Run>(x => x.ResultFloatValues);
    129         //dlo.LoadWith<Run>(x => x.ResultIntValues);
    130         //dlo.LoadWith<Run>(x => x.ResultStringValues);
    131         //dlo.LoadWith<Run>(x => x.Experiment);
    132         //dlo.LoadWith<ResultBlobValue>(x => x.Result);
    133         //dlo.LoadWith<ResultBlobValue>(x => x.DataType);
    134         //dlo.LoadWith<ResultBoolValue>(x => x.Result);
    135         //dlo.LoadWith<ResultBoolValue>(x => x.DataType);
    136         //dlo.LoadWith<ResultFloatValue>(x => x.Result);
    137         //dlo.LoadWith<ResultFloatValue>(x => x.DataType);
    138         //dlo.LoadWith<ResultIntValue>(x => x.Result);
    139         //dlo.LoadWith<ResultIntValue>(x => x.DataType);
    140         //dlo.LoadWith<ResultStringValue>(x => x.Result);
    141         //dlo.LoadWith<ResultStringValue>(x => x.DataType);
    142         //dlo.LoadWith<Result>(x => x.Algorithm);
    143         //dlo.LoadWith<Result>(x => x.DataType);
    144         //dlo.LoadWith<Experiment>(x => x.Algorithm);
    145         //dlo.LoadWith<Experiment>(x => x.Problem);
    146         //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBlobValues);
    147         //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterBoolValues);
    148         //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterFloatValues);
    149         //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterIntValues);
    150         //dlo.LoadWith<Experiment>(x => x.AlgorithmParameterStringValues);
    151         //dlo.LoadWith<Experiment>(x => x.ProblemParameterBlobValues);
    152         //dlo.LoadWith<Experiment>(x => x.ProblemParameterBoolValues);
    153         //dlo.LoadWith<Experiment>(x => x.ProblemParameterFloatValues);
    154         //dlo.LoadWith<Experiment>(x => x.ProblemParameterIntValues);
    155         //dlo.LoadWith<Experiment>(x => x.ProblemParameterStringValues);
    156         //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.AlgorithmParameter);
    157         //dlo.LoadWith<AlgorithmParameterBlobValue>(x => x.DataType);
    158         //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.AlgorithmParameter);
    159         //dlo.LoadWith<AlgorithmParameterBoolValue>(x => x.DataType);
    160         //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.AlgorithmParameter);
    161         //dlo.LoadWith<AlgorithmParameterFloatValue>(x => x.DataType);
    162         //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.AlgorithmParameter);
    163         //dlo.LoadWith<AlgorithmParameterIntValue>(x => x.DataType);
    164         //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.AlgorithmParameter);
    165         //dlo.LoadWith<AlgorithmParameterStringValue>(x => x.DataType);
    166         //dlo.LoadWith<ProblemParameterBlobValue>(x => x.ProblemParameter);
    167         //dlo.LoadWith<ProblemParameterBlobValue>(x => x.DataType);
    168         //dlo.LoadWith<ProblemParameterBoolValue>(x => x.ProblemParameter);
    169         //dlo.LoadWith<ProblemParameterBoolValue>(x => x.DataType);
    170         //dlo.LoadWith<ProblemParameterFloatValue>(x => x.ProblemParameter);
    171         //dlo.LoadWith<ProblemParameterFloatValue>(x => x.DataType);
    172         //dlo.LoadWith<ProblemParameterIntValue>(x => x.ProblemParameter);
    173         //dlo.LoadWith<ProblemParameterIntValue>(x => x.DataType);
    174         //dlo.LoadWith<ProblemParameterStringValue>(x => x.ProblemParameter);
    175         //dlo.LoadWith<ProblemParameterStringValue>(x => x.DataType);
    176         //dlo.LoadWith<AlgorithmParameter>(x => x.Algorithm);
    177         //dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
    178         //dlo.LoadWith<ProblemParameter>(x => x.Problem);
    179         //dlo.LoadWith<ProblemParameter>(x => x.DataType);
    180         //dlo.LoadWith<Algorithm>(x => x.AlgorithmClass);
    181         //dlo.LoadWith<Algorithm>(x => x.Platform);
    182         //dlo.LoadWith<Problem>(x => x.ProblemClass);
    183         //dlo.LoadWith<Problem>(x => x.Platform);
    184         //okb.LoadOptions = dlo;
    185 
     108
     109    public long GetNumberOfQueryResults(Filter filter) {
     110      using (OKBDataContext okb = new OKBDataContext()) {
     111        return FilterRuns(okb.Runs, filter).LongCount();
     112      }
     113    }
     114
     115    public IEnumerable<long> GetQueryResultIds(Filter filter) {
     116      using (OKBDataContext okb = new OKBDataContext()) {
     117        return FilterRuns(okb.Runs, filter).Select(x => x.Id).ToArray();
     118      }
     119    }
     120
     121    public IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids) {
     122      using (OKBDataContext okb = new OKBDataContext()) {
    186123        DataLoadOptions dlo = new DataLoadOptions();
    187         dlo.LoadWith<Run>(x => x.ResultBlobValues);
    188         dlo.LoadWith<Run>(x => x.ResultBoolValues);
    189         dlo.LoadWith<Run>(x => x.ResultFloatValues);
    190         dlo.LoadWith<Run>(x => x.ResultIntValues);
    191         dlo.LoadWith<Run>(x => x.ResultStringValues);
     124        dlo.LoadWith<DataAccess.Run>(x => x.ResultBlobValues);
     125        dlo.LoadWith<DataAccess.Run>(x => x.ResultBoolValues);
     126        dlo.LoadWith<DataAccess.Run>(x => x.ResultFloatValues);
     127        dlo.LoadWith<DataAccess.Run>(x => x.ResultIntValues);
     128        dlo.LoadWith<DataAccess.Run>(x => x.ResultStringValues);
     129        dlo.LoadWith<DataAccess.Run>(x => x.Experiment);
     130        dlo.LoadWith<DataAccess.ResultBlobValue>(x => x.Result);
     131        dlo.LoadWith<DataAccess.ResultBlobValue>(x => x.DataType);
     132        dlo.LoadWith<DataAccess.ResultBoolValue>(x => x.Result);
     133        dlo.LoadWith<DataAccess.ResultFloatValue>(x => x.Result);
     134        dlo.LoadWith<DataAccess.ResultIntValue>(x => x.Result);
     135        dlo.LoadWith<DataAccess.ResultStringValue>(x => x.Result);
     136        dlo.LoadWith<DataAccess.Experiment>(x => x.AlgorithmParameterBlobValues);
     137        dlo.LoadWith<DataAccess.Experiment>(x => x.AlgorithmParameterBoolValues);
     138        dlo.LoadWith<DataAccess.Experiment>(x => x.AlgorithmParameterFloatValues);
     139        dlo.LoadWith<DataAccess.Experiment>(x => x.AlgorithmParameterIntValues);
     140        dlo.LoadWith<DataAccess.Experiment>(x => x.AlgorithmParameterStringValues);
     141        dlo.LoadWith<DataAccess.Experiment>(x => x.ProblemParameterBlobValues);
     142        dlo.LoadWith<DataAccess.Experiment>(x => x.ProblemParameterBoolValues);
     143        dlo.LoadWith<DataAccess.Experiment>(x => x.ProblemParameterFloatValues);
     144        dlo.LoadWith<DataAccess.Experiment>(x => x.ProblemParameterIntValues);
     145        dlo.LoadWith<DataAccess.Experiment>(x => x.ProblemParameterStringValues);
     146        //dlo.LoadWith<DataAccess.Experiment>(x => x.Algorithm);
     147        //dlo.LoadWith<DataAccess.Experiment>(x => x.Problem);
     148        dlo.LoadWith<DataAccess.AlgorithmParameterBlobValue>(x => x.AlgorithmParameter);
     149        dlo.LoadWith<DataAccess.AlgorithmParameterBlobValue>(x => x.DataType);
     150        dlo.LoadWith<DataAccess.AlgorithmParameterBoolValue>(x => x.AlgorithmParameter);
     151        dlo.LoadWith<DataAccess.AlgorithmParameterFloatValue>(x => x.AlgorithmParameter);
     152        dlo.LoadWith<DataAccess.AlgorithmParameterIntValue>(x => x.AlgorithmParameter);
     153        dlo.LoadWith<DataAccess.AlgorithmParameterStringValue>(x => x.AlgorithmParameter);
     154        dlo.LoadWith<DataAccess.ProblemParameterBlobValue>(x => x.ProblemParameter);
     155        dlo.LoadWith<DataAccess.ProblemParameterBlobValue>(x => x.DataType);
     156        dlo.LoadWith<DataAccess.ProblemParameterBoolValue>(x => x.ProblemParameter);
     157        dlo.LoadWith<DataAccess.ProblemParameterFloatValue>(x => x.ProblemParameter);
     158        dlo.LoadWith<DataAccess.ProblemParameterIntValue>(x => x.ProblemParameter);
     159        dlo.LoadWith<DataAccess.ProblemParameterStringValue>(x => x.ProblemParameter);
     160        //dlo.LoadWith<DataAccess.Algorithm>(x => x.AlgorithmParameters);
     161        //dlo.LoadWith<DataAccess.Algorithm>(x => x.Results);
     162        //dlo.LoadWith<DataAccess.Algorithm>(x => x.AlgorithmClass);
     163        //dlo.LoadWith<DataAccess.Algorithm>(x => x.Platform);
     164        //dlo.LoadWith<DataAccess.Problem>(x => x.ProblemParameters);
     165        //dlo.LoadWith<DataAccess.Problem>(x => x.ProblemClass);
    192166        okb.LoadOptions = dlo;
    193167
    194         IFilter convertedFilter = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
    195         var runs = okb.Runs.Where(convertedFilter.Expression).ToArray();
    196         var result = runs.Select(x => Convert.ToDto(x)).ToArray();
    197         return result;
    198       }
     168        return okb.Runs.Where(x => ids.Contains(x.Id)).Select(x => ConvertToQueryResult(x)).ToArray();
     169      }
     170    }
     171
     172    private IQueryable<DataAccess.Run> FilterRuns(IQueryable<DataAccess.Run> runs, Filter filter) {
     173      IFilter f = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
     174      return runs.Where(f.Expression);
     175    }
     176
     177    private QueryResult ConvertToQueryResult(DataAccess.Run run) {
     178      List<QueryValue> algorithmParameters = new List<QueryValue>();
     179      List<QueryValue> problemParameters = new List<QueryValue>();
     180      List<QueryValue> results = new List<QueryValue>();
     181
     182      foreach (DataAccess.AlgorithmParameterBlobValue value in run.Experiment.AlgorithmParameterBlobValues)
     183        algorithmParameters.Add(new QueryBlobValue { Name = value.AlgorithmParameter.Name, DataTypeName = value.DataType.Name + " (" + value.DataType.TypeName + ")", Value = value.Value.ToArray() });
     184      foreach (DataAccess.AlgorithmParameterBoolValue value in run.Experiment.AlgorithmParameterBoolValues)
     185        algorithmParameters.Add(new QueryBoolValue { Name = value.AlgorithmParameter.Name, Value = value.Value });
     186      foreach (DataAccess.AlgorithmParameterFloatValue value in run.Experiment.AlgorithmParameterFloatValues)
     187        algorithmParameters.Add(new QueryFloatValue { Name = value.AlgorithmParameter.Name, Value = value.Value });
     188      foreach (DataAccess.AlgorithmParameterIntValue value in run.Experiment.AlgorithmParameterIntValues)
     189        algorithmParameters.Add(new QueryIntValue { Name = value.AlgorithmParameter.Name, Value = value.Value });
     190      foreach (DataAccess.AlgorithmParameterStringValue value in run.Experiment.AlgorithmParameterStringValues)
     191        algorithmParameters.Add(new QueryStringValue { Name = value.AlgorithmParameter.Name, Value = value.Value });
     192
     193      foreach (DataAccess.ProblemParameterBlobValue value in run.Experiment.ProblemParameterBlobValues)
     194        problemParameters.Add(new QueryBlobValue { Name = value.ProblemParameter.Name, DataTypeName = value.DataType.Name + " (" + value.DataType.TypeName + ")", Value = value.Value.ToArray() });
     195      foreach (DataAccess.ProblemParameterBoolValue value in run.Experiment.ProblemParameterBoolValues)
     196        problemParameters.Add(new QueryBoolValue { Name = value.ProblemParameter.Name, Value = value.Value });
     197      foreach (DataAccess.ProblemParameterFloatValue value in run.Experiment.ProblemParameterFloatValues)
     198        problemParameters.Add(new QueryFloatValue { Name = value.ProblemParameter.Name, Value = value.Value });
     199      foreach (DataAccess.ProblemParameterIntValue value in run.Experiment.ProblemParameterIntValues)
     200        problemParameters.Add(new QueryIntValue { Name = value.ProblemParameter.Name, Value = value.Value });
     201      foreach (DataAccess.ProblemParameterStringValue value in run.Experiment.ProblemParameterStringValues)
     202        problemParameters.Add(new QueryStringValue { Name = value.ProblemParameter.Name, Value = value.Value });
     203
     204      foreach (DataAccess.ResultBlobValue value in run.ResultBlobValues)
     205        results.Add(new QueryBlobValue { Name = value.Result.Name, DataTypeName = value.DataType.Name + " (" + value.DataType.TypeName + ")", Value = value.Value.ToArray() });
     206      foreach (DataAccess.ResultBoolValue value in run.ResultBoolValues)
     207        results.Add(new QueryBoolValue { Name = value.Result.Name, Value = value.Value });
     208      foreach (DataAccess.ResultFloatValue value in run.ResultFloatValues)
     209        results.Add(new QueryFloatValue { Name = value.Result.Name, Value = value.Value });
     210      foreach (DataAccess.ResultIntValue value in run.ResultIntValues)
     211        results.Add(new QueryIntValue { Name = value.Result.Name, Value = value.Value });
     212      foreach (DataAccess.ResultStringValue value in run.ResultStringValues)
     213        results.Add(new QueryStringValue { Name = value.Result.Name, Value = value.Value });
     214
     215      QueryResult result = new QueryResult();
     216      result.Id = run.Id;
     217      result.AlgorithmParameters = algorithmParameters;
     218      result.ProblemParameters = problemParameters;
     219      result.Results = results;
     220      return result;
    199221    }
    200222  }
Note: See TracChangeset for help on using the changeset viewer.