- Timestamp:
- 01/17/11 05:03:21 (13 years ago)
- 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 43 43 Filters = new List<IFilter>(filters); 44 44 } 45 public AndFilter(DataTransfer. AndFilter filter) {45 public AndFilter(DataTransfer.CombinedFilter filter) { 46 46 Filters = new List<IFilter>(filter.Filters.Select(x => (IFilter)Activator.CreateInstance(Type.GetType(x.FilterTypeName), x))); 47 47 } -
branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Filters/OrFilter.cs
r5286 r5304 43 43 Filters = new List<IFilter>(filters); 44 44 } 45 public OrFilter(DataTransfer. OrFilter filter) {45 public OrFilter(DataTransfer.CombinedFilter filter) { 46 46 Filters = new List<IFilter>(filter.Filters.Select(x => (IFilter)Activator.CreateInstance(Type.GetType(x.FilterTypeName), x))); 47 47 } -
branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/Interfaces/IQueryService.cs
r5299 r5304 35 35 36 36 [OperationContract] 37 long QueryNumberOfRuns(Filter filter);37 long GetNumberOfQueryResults(Filter filter); 38 38 39 39 [OperationContract] 40 IEnumerable<Run> QueryRuns(Filter filter); 40 IEnumerable<long> GetQueryResultIds(Filter filter); 41 42 [OperationContract] 43 IEnumerable<QueryResult> GetQueryResults(IEnumerable<long> ids); 41 44 } 42 45 } -
branches/OKB (trunk integration)/HeuristicLab.Services.OKB/3.3/QueryService.cs
r5299 r5304 26 26 using System.ServiceModel; 27 27 using HeuristicLab.Services.OKB.DataAccess; 28 using HeuristicLab.Services.OKB.DataTransfer; 28 29 29 30 namespace HeuristicLab.Services.OKB { … … 33 34 [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 34 35 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()) { 48 39 // 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")); 53 44 54 45 // 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)); 68 59 69 60 // 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)); 83 74 84 75 // 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())); 89 80 90 81 // 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)); 104 95 105 96 // 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())); 110 101 111 102 // 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)); 114 105 } 115 106 return filters.OrderBy(x => x.Label); 116 107 } 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()) { 186 123 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); 192 166 okb.LoadOptions = dlo; 193 167 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; 199 221 } 200 222 }
Note: See TracChangeset
for help on using the changeset viewer.