示例#1
0
 public GroupByValuesQueryResultAction(IInternalValuesQuery query, IInstanceBuilder instanceBuilder)
 {
     _query            = query;
     _queryHasOrderBy  = query.HasOrderBy();
     _instanceBuilder  = instanceBuilder;
     _returnArraySize  = query.ObjectActionsCount;
     _groupByFieldList = query.GetGroupByFieldList();
     _groupByResult    = new OdbHashMap <IOdbComparable, ValuesQueryResultAction>();
 }
        public void Start()
        {
            if (_query != null && _query.HasOrderBy())
            {
                _result = new InMemoryBTreeCollectionForValues(_query.GetOrderByType());
            }
            else
            {
                _result = new SimpleListForValues(_returnArraySize);
            }

            for (var i = 0; i < _returnArraySize; i++)
            {
                var queryFieldAction = _queryFieldActions[i];
                queryFieldAction.Start();
            }
        }
示例#3
0
        // Nothing to do
        public void End()
        {
            if (_query != null && _query.HasOrderBy())
            {
                _result = new InMemoryBTreeCollectionForValues(_query.GetOrderByType());
            }
            else
            {
                _result = new SimpleListForValues(_returnArraySize);
            }

            foreach (var key in _groupByResult.Keys)
            {
                var vqra = _groupByResult[key];
                vqra.End();
                Merge(key, vqra.GetValues());
            }
        }
        public ValuesQueryResultAction(IInternalValuesQuery query, IStorageEngine storageEngine,
                                       IInstanceBuilder instanceBuilder)
        {
            _engine            = storageEngine;
            _query             = query;
            _queryHasOrderBy   = query.HasOrderBy();
            _returnArraySize   = query.ObjectActionsCount;
            _queryFieldActions = new IQueryFieldAction[_returnArraySize];

            var i = 0;

            foreach (var action in _query.GetObjectActions())
            {
                _queryFieldActions[i] = action.Copy();
                _queryFieldActions[i].SetReturnInstance(query.ReturnInstance());
                ((AbstractQueryFieldAction)_queryFieldActions[i]).SetInstanceBuilder(instanceBuilder);
                i++;
            }
        }