コード例 #1
0
ファイル: QQueryBase.cs プロジェクト: git-thinh/limada
 public _IVisitor4_374(QQueryBase _enclosing, Collection4 executionPath, ObjectContainerBase
                       stream, IdListQueryResult result)
 {
     this._enclosing    = _enclosing;
     this.executionPath = executionPath;
     this.stream        = stream;
     this.result        = result;
 }
コード例 #2
0
 public AscendingQueryExecutor(Transaction trans, IdListQueryResult result, Collection4
                               executionPath)
 {
     _trans         = trans;
     _container     = _trans.Container();
     _result        = result;
     _executionPath = executionPath;
 }
コード例 #3
0
ファイル: QQueryBase.cs プロジェクト: git-thinh/limada
        public virtual void ExecuteLocal(IdListQueryResult result)
        {
            CheckConstraintsEvaluationMode();
            QQueryBase.CreateCandidateCollectionResult r = CreateCandidateCollection();
            bool  checkDuplicates     = r.checkDuplicates;
            bool  topLevel            = r.topLevel;
            List4 candidateCollection = r.candidateCollection;

            if (candidateCollection != null)
            {
                Collection4 executionPath = topLevel ? null : FieldPathFromTop();
                IEnumerator i             = new Iterator4Impl(candidateCollection);
                while (i.MoveNext())
                {
                    ((QCandidates)i.Current).Execute();
                }
                if (((List4)candidateCollection._next) != null)
                {
                    checkDuplicates = true;
                }
                if (checkDuplicates)
                {
                    result.CheckDuplicates();
                }
                ObjectContainerBase stream = Stream();
                i = new Iterator4Impl(candidateCollection);
                while (i.MoveNext())
                {
                    QCandidates candidates = (QCandidates)i.Current;
                    if (topLevel)
                    {
                        candidates.Traverse(result);
                    }
                    else
                    {
                        candidates.Traverse(new _IVisitor4_374(this, executionPath, stream, result));
                    }
                }
            }
            Sort(result);
        }
コード例 #4
0
        public override IObjectSet Select()
        {
            if (_limit == -1)
            {
                return(_query.Execute());
            }
            IQueryResult      queryResult   = _query.GetQueryResult();
            IdListQueryResult limitedResult = new IdListQueryResult(_query.Transaction(), _limit
                                                                    );
            int           counter = 0;
            IIntIterator4 i       = queryResult.IterateIDs();

            while (i.MoveNext())
            {
                if (counter++ >= _limit)
                {
                    break;
                }
                limitedResult.Add(i.CurrentInt());
            }
            return(new ObjectSetFacade(limitedResult));
        }
コード例 #5
0
ファイル: QQueryBase.cs プロジェクト: git-thinh/limada
 public _IVisitor4_406(IdListQueryResult result)
 {
     this.result = result;
 }