Free cookie consent management tool by TermsFeed Policy Generator

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

Worked on OKB (#1174)

Location:
branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • 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.