Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/11/11 05:13:55 (14 years ago)
Author:
swagner
Message:

Worked on OKB (#1174)

Location:
branches/OKB/HeuristicLab.Services.OKB/3.3
Files:
36 added
3 edited

Legend:

Unmodified
Added
Removed
  • branches/OKB/HeuristicLab.Services.OKB/3.3/HeuristicLab.Services.OKB-3.3.csproj

    r4591 r5269  
    122122    <Compile Include="Convert.cs" />
    123123    <Compile Include="AuthenticationService.cs" />
     124    <Compile Include="Filters\AlgorithmParameterBlobValueDataTypeNameFilter.cs" />
     125    <Compile Include="Filters\AlgorithmParameterBlobValueValueFilter.cs" />
     126    <Compile Include="Filters\AlgorithmParameterBoolValueValueFilter.cs" />
     127    <Compile Include="Filters\AlgorithmParameterFloatValueValueFilter.cs" />
     128    <Compile Include="Filters\AlgorithmParameterIntValueValueFilter.cs" />
     129    <Compile Include="Filters\AlgorithmParameterStringValueValueFilter.cs" />
     130    <Compile Include="Filters\AlgorithmParameterNameFilter.cs" />
     131    <Compile Include="Filters\AlgorithmNameFilter.cs" />
     132    <Compile Include="Filters\AlgorithmClassNameFilter.cs" />
     133    <Compile Include="Filters\AlgorithmPlattformNameFilter.cs" />
     134    <Compile Include="Filters\AlgorithmDataDataTypeNameFilter.cs" />
     135    <Compile Include="Filters\ProblemDataDataTypeNameFilter.cs" />
     136    <Compile Include="Filters\ProblemPlattformNameFilter.cs" />
     137    <Compile Include="Filters\ProblemClassNameFilter.cs" />
     138    <Compile Include="Filters\ProblemNameFilter.cs" />
     139    <Compile Include="Filters\ProblemParameterNameFilter.cs" />
     140    <Compile Include="Filters\ResultNameFilter.cs" />
     141    <Compile Include="Filters\RunRandomSeedFilter.cs" />
     142    <Compile Include="Filters\RunFinishedDateFilter.cs" />
     143    <Compile Include="Filters\RunClientNameFilter.cs" />
     144    <Compile Include="Filters\RunUserNameFilter.cs" />
     145    <Compile Include="Filters\ProblemParameterBlobValueDataTypeNameFilter.cs" />
     146    <Compile Include="Filters\ProblemParameterBlobValueValueFilter.cs" />
     147    <Compile Include="Filters\ProblemParameterBoolValueValueFilter.cs" />
     148    <Compile Include="Filters\ProblemParameterFloatValueValueFilter.cs" />
     149    <Compile Include="Filters\ProblemParameterIntValueValueFilter.cs" />
     150    <Compile Include="Filters\ProblemParameterStringValueValueFilter.cs" />
     151    <Compile Include="Filters\ResultBoolValueValueFilter.cs" />
     152    <Compile Include="Filters\ResultBlobValueDataTypeNameFilter.cs" />
     153    <Compile Include="Filters\ResultBlobValueValueFilter.cs" />
     154    <Compile Include="Filters\ResultIntValueValueFilter.cs" />
     155    <Compile Include="Filters\ResultStringValueValueFilter.cs" />
     156    <Compile Include="Filters\ResultFloatValueValueFilter.cs" />
     157    <Compile Include="GenericEqualityComparer.cs" />
    124158    <Compile Include="ExperimentEqualityComparer.cs" />
     159    <Compile Include="Filters\IFilter.cs" />
    125160    <Compile Include="Interfaces\IAuthenticationService.cs" />
    126161    <Compile Include="Interfaces\IOKBService.cs" />
  • branches/OKB/HeuristicLab.Services.OKB/3.3/Interfaces/IOKBService.cs

    r5073 r5269  
    188188    IEnumerable<Run> GetRuns(long experimentId);
    189189    [OperationContract]
    190     IEnumerable<Run> QueryRuns(string query);
    191     [OperationContract]
    192190    long AddRun(Run dto);
    193191    [OperationContract]
    194192    void DeleteRun(long id);
     193    #endregion
     194
     195    #region Query Methods
     196    [OperationContract]
     197    IEnumerable<Filter> GetFilters();
     198    [OperationContract]
     199    IEnumerable<Run> QueryRuns(IEnumerable<Filter> filters);
    195200    #endregion
    196201  }
  • branches/OKB/HeuristicLab.Services.OKB/3.3/OKBService.cs

    r5073 r5269  
    534534      }
    535535    }
    536     public IEnumerable<DataTransfer.Run> QueryRuns(string query) {
     536    public long AddRun(DataTransfer.Run dto) {
     537      using (OKBDataContext okb = new OKBDataContext()) {
     538        DataAccess.Run entity = Convert.ToEntity(dto); entity.Id = 0;
     539        okb.Runs.InsertOnSubmit(entity);
     540        okb.SubmitChanges();
     541        return entity.Id;
     542      }
     543    }
     544    public void DeleteRun(long id) {
     545      using (OKBDataContext okb = new OKBDataContext()) {
     546        IEnumerable<DataAccess.ResultBlobValue> resultBlobValues = okb.ResultBlobValues.Where(x => x.RunId == id);
     547        okb.ResultBlobValues.DeleteAllOnSubmit(resultBlobValues);
     548        IEnumerable<DataAccess.ResultBoolValue> resultBoolValues = okb.ResultBoolValues.Where(x => x.RunId == id);
     549        okb.ResultBoolValues.DeleteAllOnSubmit(resultBoolValues);
     550        IEnumerable<DataAccess.ResultFloatValue> resultFloatValues = okb.ResultFloatValues.Where(x => x.RunId == id);
     551        okb.ResultFloatValues.DeleteAllOnSubmit(resultFloatValues);
     552        IEnumerable<DataAccess.ResultIntValue> resultIntValues = okb.ResultIntValues.Where(x => x.RunId == id);
     553        okb.ResultIntValues.DeleteAllOnSubmit(resultIntValues);
     554        IEnumerable<DataAccess.ResultStringValue> resultStringValues = okb.ResultStringValues.Where(x => x.RunId == id);
     555        okb.ResultStringValues.DeleteAllOnSubmit(resultStringValues);
     556
     557        DataAccess.Run entity = okb.Runs.FirstOrDefault(x => x.Id == id);
     558        if (entity != null) okb.Runs.DeleteOnSubmit(entity);
     559        okb.SubmitChanges();
     560      }
     561    }
     562    #endregion
     563
     564    #region Query Methods
     565    public IEnumerable<DataTransfer.Filter> GetFilters() {
     566      List<DataTransfer.Filter> filters = new List<DataTransfer.Filter>();
     567      using (OKBDataContext okb = new OKBDataContext()) {
     568        DataLoadOptions dlo = new DataLoadOptions();
     569        dlo.LoadWith<AlgorithmParameter>(x => x.DataType);
     570        dlo.LoadWith<ProblemParameter>(x => x.DataType);
     571        dlo.LoadWith<Result>(x => x.DataType);
     572        okb.LoadOptions = dlo;
     573
     574        // run filters
     575        filters.Add(new DataTransfer.OrdinalComparisonIntFilter(typeof(RunRandomSeedFilter).AssemblyQualifiedName, "Run Random Seed"));
     576        filters.Add(new DataTransfer.OrdinalComparisonDateTimeFilter(typeof(RunFinishedDateFilter).AssemblyQualifiedName, "Run Finished Date"));
     577        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunUserNameFilter).AssemblyQualifiedName, "Run User Name"));
     578        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(RunClientNameFilter).AssemblyQualifiedName, "Run Client Name"));
     579
     580        // result filters
     581        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ResultNameFilter).AssemblyQualifiedName, "Result Name"));
     582        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     583          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value Data Type Name", entity.Name));
     584        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     585          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ResultBlobValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     586        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     587          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ResultBoolValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     588        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     589          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ResultFloatValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     590        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     591          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ResultIntValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     592        foreach (Result entity in okb.Results.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<Result>(new GenericEqualityComparer<Result>((x, y) => x.Name == y.Name)))
     593          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ResultStringValueValueFilter).AssemblyQualifiedName, "Result " + entity.Name + " Value", entity.Name));
     594
     595        // algorithm parameter filters
     596        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(AlgorithmParameterNameFilter).AssemblyQualifiedName, "Algorithm Parameter Name"));
     597        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     598          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value Data Type Name", entity.Name));
     599        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     600          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(AlgorithmParameterBlobValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     601        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     602          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(AlgorithmParameterBoolValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     603        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     604          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(AlgorithmParameterFloatValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     605        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     606          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(AlgorithmParameterIntValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     607        foreach (AlgorithmParameter entity in okb.AlgorithmParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<AlgorithmParameter>(new GenericEqualityComparer<AlgorithmParameter>((x, y) => x.Name == y.Name)))
     608          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(AlgorithmParameterStringValueValueFilter).AssemblyQualifiedName, "Algorithm Parameter " + entity.Name + " Value", entity.Name));
     609
     610        // algorithm filters
     611        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(AlgorithmNameFilter).AssemblyQualifiedName, "Algorithm Name"));
     612        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(AlgorithmClassNameFilter).AssemblyQualifiedName, "Algorithm Class Name"));
     613        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(AlgorithmPlattformNameFilter).AssemblyQualifiedName, "Algorithm Plattform Name"));
     614        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(AlgorithmDataDataTypeNameFilter).AssemblyQualifiedName, "Algorithm Data Type Name"));
     615
     616        // problem parameter filters
     617        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ProblemParameterNameFilter).AssemblyQualifiedName, "Problem Parameter Name"));
     618        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     619          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterBlobValueDataTypeNameFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value Data Type Name", entity.Name));
     620        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "varbinary").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     621          filters.Add(new DataTransfer.NameEqualityComparisonByteArrayFilter(typeof(ProblemParameterBlobValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     622        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bit").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     623          filters.Add(new DataTransfer.NameEqualityComparisonBoolFilter(typeof(ProblemParameterBoolValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     624        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "float").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     625          filters.Add(new DataTransfer.NameOrdinalComparisonDoubleFilter(typeof(ProblemParameterFloatValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     626        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "bigint").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     627          filters.Add(new DataTransfer.NameOrdinalComparisonLongFilter(typeof(ProblemParameterIntValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     628        foreach (ProblemParameter entity in okb.ProblemParameters.Where(x => x.DataType.SqlName == "nvarchar").AsEnumerable().Distinct<ProblemParameter>(new GenericEqualityComparer<ProblemParameter>((x, y) => x.Name == y.Name)))
     629          filters.Add(new DataTransfer.NameSetComparisonStringFilter(typeof(ProblemParameterStringValueValueFilter).AssemblyQualifiedName, "Problem Parameter " + entity.Name + " Value", entity.Name));
     630
     631        // problem filters
     632        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ProblemNameFilter).AssemblyQualifiedName, "Problem Name"));
     633        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ProblemClassNameFilter).AssemblyQualifiedName, "Problem Class Name"));
     634        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ProblemPlattformNameFilter).AssemblyQualifiedName, "Problem Plattform Name"));
     635        filters.Add(new DataTransfer.SetComparisonStringFilter(typeof(ProblemDataDataTypeNameFilter).AssemblyQualifiedName, "Problem Data Type Name"));
     636      }
     637      return filters.OrderBy(x => x.Label);
     638    }
     639    public IEnumerable<DataTransfer.Run> QueryRuns(IEnumerable<DataTransfer.Filter> filters) {
    537640      using (OKBDataContext okb = new OKBDataContext()) {
    538641        DataLoadOptions dlo = new DataLoadOptions();
     
    596699        dlo.LoadWith<Problem>(x => x.Platform);
    597700        okb.LoadOptions = dlo;
    598         var runs = okb.Runs.Where(x => x.ResultFloatValues.Any(y => y.Result.Name == "BestQuality" && y.Value > double.Parse(query)));
     701
     702        var runs = okb.Runs.AsQueryable<Run>();
     703        foreach (DataTransfer.Filter filter in filters) {
     704          IFilter f = (IFilter)Activator.CreateInstance(Type.GetType(filter.FilterTypeName), filter);
     705          runs = f.Apply(runs);
     706        }
    599707        return runs.Select(x => Convert.ToDto(x)).ToArray();
    600       }
    601     }
    602     public long AddRun(DataTransfer.Run dto) {
    603       using (OKBDataContext okb = new OKBDataContext()) {
    604         DataAccess.Run entity = Convert.ToEntity(dto); entity.Id = 0;
    605         okb.Runs.InsertOnSubmit(entity);
    606         okb.SubmitChanges();
    607         return entity.Id;
    608       }
    609     }
    610     public void DeleteRun(long id) {
    611       using (OKBDataContext okb = new OKBDataContext()) {
    612         IEnumerable<DataAccess.ResultBlobValue> resultBlobValues = okb.ResultBlobValues.Where(x => x.RunId == id);
    613         okb.ResultBlobValues.DeleteAllOnSubmit(resultBlobValues);
    614         IEnumerable<DataAccess.ResultBoolValue> resultBoolValues = okb.ResultBoolValues.Where(x => x.RunId == id);
    615         okb.ResultBoolValues.DeleteAllOnSubmit(resultBoolValues);
    616         IEnumerable<DataAccess.ResultFloatValue> resultFloatValues = okb.ResultFloatValues.Where(x => x.RunId == id);
    617         okb.ResultFloatValues.DeleteAllOnSubmit(resultFloatValues);
    618         IEnumerable<DataAccess.ResultIntValue> resultIntValues = okb.ResultIntValues.Where(x => x.RunId == id);
    619         okb.ResultIntValues.DeleteAllOnSubmit(resultIntValues);
    620         IEnumerable<DataAccess.ResultStringValue> resultStringValues = okb.ResultStringValues.Where(x => x.RunId == id);
    621         okb.ResultStringValues.DeleteAllOnSubmit(resultStringValues);
    622 
    623         DataAccess.Run entity = okb.Runs.FirstOrDefault(x => x.Id == id);
    624         if (entity != null) okb.Runs.DeleteOnSubmit(entity);
    625         okb.SubmitChanges();
    626708      }
    627709    }
Note: See TracChangeset for help on using the changeset viewer.