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(); } }
// 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++; } }