/// <summary>
        /// Helper method to query a worklist.
        /// </summary>
        /// <typeparam name="TItem"></typeparam>
        /// <typeparam name="TSummary"></typeparam>
        /// <param name="request"></param>
        /// <param name="mapCallback"></param>
        /// <returns></returns>
        protected QueryWorklistResponse <TSummary> QueryWorklistHelper <TItem, TSummary>(QueryWorklistRequest request,
                                                                                         Converter <TItem, TSummary> mapCallback)
        {
            IWorklist worklist = GetWorklist(request);

            IList results         = null;
            var   page            = new SearchResultPage(request.Page.FirstRow, request.Page.MaxRows);
            var   workingFacility = GetWorkingFacility(request);

            if (request.QueryItems)
            {
                // get the first page, up to the default max number of items per page
                results = worklist.GetWorklistItems(new WorklistQueryContext(this, workingFacility, page, request.DowntimeRecoveryMode));
            }

            var count = -1;

            if (request.QueryCount)
            {
                // if the items were already queried, and the number returned is less than the max per page, and this is the first page
                // then there is no need to do a separate count query
                if (results != null && results.Count < page.MaxRows && page.FirstRow == 0)
                {
                    count = results.Count;
                }
                else
                {
                    count = worklist.GetWorklistItemCount(new WorklistQueryContext(this, workingFacility, null, request.DowntimeRecoveryMode));
                }
            }

            return(new QueryWorklistResponse <TSummary>(
                       request.QueryItems ? CollectionUtils.Map(results, mapCallback) : null, count));
        }
Esempio n. 2
0
 public CFGTraverser(ITraversalTechnique traversalStrategy, ICFGAnalysis analysis, IWorklist<CFGBlock> worklist)
 {
     Preconditions.NotNull(traversalStrategy, "traversalStrategy");
     Preconditions.NotNull(analysis, "analysis");
     Preconditions.NotNull(worklist, "worklist");
     this._traversalTechnique = traversalStrategy;
     this._analysis = analysis;
     this._workList = worklist;
     this._visited = new HashSet<CFGBlock>();
 }
Esempio n. 3
0
 public CFGTraverser(ITraversalTechnique traversalStrategy, ICFGAnalysis analysis, IWorklist <CFGBlock> worklist)
 {
     Preconditions.NotNull(traversalStrategy, "traversalStrategy");
     Preconditions.NotNull(analysis, "analysis");
     Preconditions.NotNull(worklist, "worklist");
     this._traversalTechnique = traversalStrategy;
     this._analysis           = analysis;
     this._workList           = worklist;
     this._visited            = new HashSet <CFGBlock>();
 }