private QueryBuilder GetQueryBuilder() { var queryBuilder = new QueryBuilder(); BsonClassMap.RegisterClassMap<DataCollectionMetadata>(cm => { cm.AutoMap(); cm.MapIdMember(c => c.CollectionName); }); var client = new MongoClient("mongodb://localhost:27017"); var db = client.GetDatabase("hra"); var items = db.GetCollection<DataCollectionMetadata>("collectionMetadata"); var collectionItems = db.GetCollection<BsonDocument>("incumbent"); FilterDefinition<DataCollectionMetadata> filter = new BsonDocument("_id", "incumbent"); var md = items.Find<DataCollectionMetadata>(filter); //var ct = md.CountAsync().Result; var metaData = md.SingleAsync().Result; var fValues = new List<String>(); var tasks = new List<Task<IAsyncCursor<string>>>(); metaData.Filters.ForEach(f => { var filterDefinition = new FilterDefinition(); filterDefinition.Column = f; FieldDefinition<BsonDocument, string> field = f.ColumnName; var dd = Task<IAsyncCursor<string>>.Factory.StartNew(() => { var t = collectionItems.DistinctAsync<string>(field, new BsonDocument()); t.GetAwaiter().OnCompleted(() => { t.Result.ForEachAsync((z) => { filterDefinition.AvailableFilterValues.Add(new FilterValue {Key = z, Value = z}); }); }); return t.Result; }); tasks.Add(dd); queryBuilder.AvailableFilters.Add(filterDefinition); }); Task.WaitAll(tasks.ToArray()); Assert.IsFalse(queryBuilder.SelectedFilters.Any()); var gd = new GroupDefinition(); gd.Dimensions.Add(new DimensionDefinition { Column = new DataColumnMetadata { ColumnName = "Year", DataType = ColumnDataTypes.Int32 }, IsDefault=true }); var fd = new MeasureDefinition(); fd.Column = new DataColumnMetadata {ColumnName = "Base_Pay", DataType = ColumnDataTypes.Double}; fd.IsDefault = true; gd.Measures.Add(fd); return queryBuilder; }
GroupDefinition GetGroupDefinition() { var result = new GroupDefinition(); //possible slicers var jobFamily = new DataColumnMetadata {ColumnName = "Job_Family"}; var jobFamilyValue = new FilterValue {Key = "Health Care", Value="Health Care"}; var jobTrack = new DataColumnMetadata {ColumnName = "Job_Track" }; //slicer remains constant when selected var yearColumn = new DataColumnMetadata {ColumnName = "Year"}; //measure var basePayColumn = new DataColumnMetadata {ColumnName = "Base_Pay"}; var basePayMeasure = new MeasureDefinition { Operation = AggregateOperations.Average, Column = basePayColumn, IsDefault=true }; //TODO no Selected Value thats a filter result.Dimensions.Add(new DimensionDefinition { Column = yearColumn, IsDefault=true }); result.Dimensions.Add(new DimensionDefinition { Column = jobFamily }); result.Measures.Add(basePayMeasure); return result; }