Beispiel #1
1
        public QueryBuilder GetQueryBuilder(string collectionName)
        {
            var result = new QueryBuilder();
            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 metadata = md.SingleAsync().Result;
            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);

                result.AvailableFilters.Add(filterDefinition);
            });
            result.AvailableSlicers = metadata.Dimensions.Select(x => new DimensionDefinition {Column = x, IsDefault = x.IsDefault}).ToList();
            //refactor available operations
            result.AvailableMeasures =
                metadata.Measures.Select(
                    x => new MeasureDefinition {Column = x, Operation = AggregateOperations.Average, IsDefault=x.IsDefault}).ToList();
            Task.WaitAll(tasks.ToArray());
            return result;
        }
Beispiel #2
0
        // GET: api/Incumbent
        public IEnumerable<BsonDocument> Get()
        {
            var svc = new Akron.Data.DataService();
               var queryDoc = new QueryDocument();
               var queryGroup = new GroupDefinition();

               var qb = new QueryBuilder();

               qb.SelectedSlicers.Add(new DimensionDefinition
               {
               Column = new DataColumnMetadata { ColumnName = "Year" },
               IsDefault = true
               });
               qb.SelectedSlicers.Add(new DimensionDefinition
               {
               Column = new DataColumnMetadata { ColumnName = "org_type" }

               });
               qb.SelectedMeasures = new List<MeasureDefinition>
            {
                new MeasureDefinition
                {
                    Column = new DataColumnMetadata {ColumnName = "Base_Pay"},
                    IsDefault = true,
                    Operation = AggregateOperations.Average
                }
            };
               var qd = qb.ToQueryDocument();
               qd.CollectionName = "incumbent";
               qd.DataSource = "hra";
               qd.DataSourceLocation = "mongodb://localhost:27017";
               var result = svc.GetData(qd);
               return result;
        }
Beispiel #3
0
        public void BuildDefaultQuery()
        {
            var client = new MongoClient("mongodb://localhost:27017");
            var db = client.GetDatabase("hra");

            var items = db.GetCollection<BsonDocument>("incumbent");

            var qb = new QueryBuilder();
               // qb.SelectedSlicers
        }
 // POST: api/SeriesBuilder
 public List<BsonDocument> Post(QueryBuilder value)
 {
     var result = svc.GetSeries(value);
     return result;
 }
Beispiel #5
0
 // POST: api/Incumbent
 public void Post(QueryBuilder value)
 {
     var m = value;
     var x = "Y";
 }
Beispiel #6
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;
        }
 // POST: api/QueryBuilder
 public List<BsonDocument> Post(QueryBuilder value)
 {
     var result = svc.QueryData(value);
     return result;
 }
Beispiel #8
0
        public List<BsonDocument> GetSeries(QueryBuilder builder)
        {
            //year column is default;

            builder.SelectedSlicers.Insert(0, builder.AvailableSlicers.Single(x => x.IsDefault));
            //add default org type
            if (builder.SelectedSlicers.Count == 1)
                builder.SelectedSlicers.Add(
                    builder.AvailableSlicers.SingleOrDefault(x => x.Column.ColumnName == "Job_Family"));

            builder.SelectedMeasures = new List<MeasureDefinition> {builder.AvailableMeasures.Single(x => x.IsDefault)};
            var qd = builder.ToSeriesQueryDocument();
            qd.CollectionName = "incumbent";
            qd.DataSource = "hra";
            qd.DataSourceLocation = "mongodb://localhost:27017";
            var service = new DataService();

            var result = service.GetData(qd);
            return result;
        }
Beispiel #9
0
 public List<BsonDocument> QueryData(QueryBuilder builder)
 {
     var qd = builder.ToQueryDocument();
     qd.CollectionName = "incumbent";
     qd.DataSource = "hra";
     qd.DataSourceLocation = "mongodb://localhost:27017";
     var service = new DataService();
     return service.GetData(qd);
 }