Example #1
0
        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;
        }
Example #2
0
        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;
        }