Esempio n. 1
0
        //Marked for refactoring
        private IPredicate GetSelectAllPredicate(QueryCriteria criteria, IEnumerable <long> rowsEnumerator)
        {
            if (criteria.GetAllFields || criteria.Projections.Length == 0)
            {
                return(new FullPredicate(rowsEnumerator));
            }

            if (criteria.ProjectionCount > 1)
            {
                IPredicate predicate = new ORPredicate();
                for (int i = 0; i < criteria.ProjectionCount; i++)
                {
                    List <IIndex> list = _indexManager.GetIndexes(criteria[i].ToString());

                    if (list == null)
                    {
                        return(new StorePredicate(new TrueCondition(), criteria.Store));
                    }

                    predicate.AddChildPredicate(new AllPredicate(list[0]));
                }
                return(predicate);
            }

            var indexlist = _indexManager.GetIndexes(criteria[0].ToString());

            if (indexlist == null)
            {
                return(new FullPredicate(rowsEnumerator));
            }

            return(new AllPredicate(indexlist[0]));
        }