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