Search in sources :

Example 26 with Paging

use of org.alfresco.rest.framework.resource.parameters.Paging in project alfresco-remote-api by Alfresco.

the class ActivitiesImpl method getUserActivities.

public CollectionWithPagingInfo<Activity> getUserActivities(String personId, final Parameters parameters) {
    personId = people.validatePerson(personId);
    Paging paging = parameters.getPaging();
    String siteId = parameters.getParameter("siteId");
    String who = parameters.getParameter("who");
    ActivityWho activityWho = null;
    if (who != null) {
        try {
            activityWho = ActivityWho.valueOf(who);
        } catch (IllegalArgumentException e) {
            throw new InvalidArgumentException("Parameter who should be one of " + Arrays.toString(ActivityWho.values()));
        }
    }
    if (siteId != null && !siteId.equals("")) {
        SiteInfo siteInfo = sites.validateSite(siteId);
        if (siteInfo == null) {
            // site does not exist
            throw new EntityNotFoundException(siteId);
        }
        // set the site id to the short name (to deal with case sensitivity issues with using the siteId from the url)
        siteId = siteInfo.getShortName();
    }
    try {
        PagingResults<ActivityFeedEntity> activities = null;
        if (activityWho == null) {
            activities = activityService.getPagedUserFeedEntries(personId, siteId, false, false, -1, Util.getPagingRequest(paging));
        } else if (activityWho.equals(ActivityWho.me)) {
            activities = activityService.getPagedUserFeedEntries(personId, siteId, false, true, -1, Util.getPagingRequest(paging));
        } else if (activityWho.equals(ActivityWho.others)) {
            activities = activityService.getPagedUserFeedEntries(personId, siteId, true, false, -1, Util.getPagingRequest(paging));
        } else {
            throw new InvalidArgumentException("Who argument is invalid.");
        }
        List<ActivityFeedEntity> feedEntities = activities.getPage();
        List<Activity> ret = new ArrayList<Activity>(feedEntities.size());
        for (ActivityFeedEntity entity : feedEntities) {
            String feedSiteId = getSiteId(entity.getSiteNetwork());
            String networkId = tenantService.getDomain(entity.getSiteNetwork());
            Activity activity = new Activity(entity.getId(), networkId, feedSiteId, entity.getFeedUserId(), entity.getPostUserId(), entity.getPostDate(), entity.getActivityType(), getActivitySummary(entity));
            ret.add(activity);
        }
        return CollectionWithPagingInfo.asPaged(paging, ret, activities.hasMoreItems(), activities.getTotalResultCount().getFirst());
    } catch (JSONException e) {
        throw new AlfrescoRuntimeException("", e);
    }
}
Also used : SiteInfo(org.alfresco.service.cmr.site.SiteInfo) Paging(org.alfresco.rest.framework.resource.parameters.Paging) ArrayList(java.util.ArrayList) Activity(org.alfresco.rest.api.model.Activity) JSONException(org.json.JSONException) EntityNotFoundException(org.alfresco.rest.framework.core.exceptions.EntityNotFoundException) ActivityFeedEntity(org.alfresco.repo.domain.activities.ActivityFeedEntity) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) AlfrescoRuntimeException(org.alfresco.error.AlfrescoRuntimeException)

Example 27 with Paging

use of org.alfresco.rest.framework.resource.parameters.Paging in project alfresco-remote-api by Alfresco.

the class RecognizedParamsExtractor method getRecognizedParams.

/**
 * Finds the formal set of params that any rest service could potentially have passed in as request params
 *
 * @param req WebScriptRequest
 * @return RecognizedParams a POJO containing the params for use with the Params objects
 */
default Params.RecognizedParams getRecognizedParams(WebScriptRequest req) {
    Paging paging = findPaging(req);
    List<SortColumn> sorting = getSort(req.getParameter(PARAM_ORDERBY));
    Map<String, BeanPropertiesFilter> relationFilter = getRelationFilter(req.getParameter(PARAM_RELATIONS));
    Query whereQuery = getWhereClause(req.getParameter(PARAM_WHERE));
    Map<String, String[]> requestParams = getRequestParameters(req);
    boolean includeSource = Boolean.valueOf(req.getParameter(PARAM_INCLUDE_SOURCE_ENTITY));
    List<String> includedFields = getIncludeClause(req.getParameter(PARAM_INCLUDE));
    List<String> selectFields = getSelectClause(req.getParameter(PARAM_SELECT));
    String fields = req.getParameter(PARAM_FILTER_FIELDS);
    String properties = req.getParameter(PARAM_FILTER_PROPERTIES);
    if ((fields != null) && (properties != null)) {
        if (rpeLogger().isWarnEnabled()) {
            rpeLogger().warn("Taking 'fields' param [" + fields + "] and ignoring deprecated 'properties' param [" + properties + "]");
        }
    }
    BeanPropertiesFilter filter = getFilter((fields != null ? fields : properties), includedFields);
    return new Params.RecognizedParams(requestParams, paging, filter, relationFilter, includedFields, selectFields, whereQuery, sorting, includeSource);
}
Also used : Query(org.alfresco.rest.framework.resource.parameters.where.Query) Paging(org.alfresco.rest.framework.resource.parameters.Paging) SortColumn(org.alfresco.rest.framework.resource.parameters.SortColumn) BeanPropertiesFilter(org.alfresco.rest.framework.jacksonextensions.BeanPropertiesFilter)

Example 28 with Paging

use of org.alfresco.rest.framework.resource.parameters.Paging in project alfresco-remote-api by Alfresco.

the class ActivitiesImpl method getActivities.

@Override
public CollectionWithPagingInfo<Activity> getActivities(String processId, Parameters parameters) {
    Paging paging = parameters.getPaging();
    String status = parameters.getParameter("status");
    validateIfUserAllowedToWorkWithProcess(processId);
    HistoricActivityInstanceQuery query = activitiProcessEngine.getHistoryService().createHistoricActivityInstanceQuery();
    if (STATUS_ACTIVE.equals(status))
        query.unfinished();
    else if (STATUS_COMPLETED.equals(status))
        query.finished();
    query.processInstanceId(processId);
    query.orderByExecutionId().asc();
    List<HistoricActivityInstance> activities = query.listPage(paging.getSkipCount(), paging.getMaxItems());
    List<Activity> page = new ArrayList<Activity>(activities.size());
    for (HistoricActivityInstance activityInstance : activities) {
        Activity activity = new Activity(activityInstance);
        page.add(activity);
    }
    return CollectionWithPagingInfo.asPaged(paging, page, false, page.size());
}
Also used : HistoricActivityInstanceQuery(org.activiti.engine.history.HistoricActivityInstanceQuery) Paging(org.alfresco.rest.framework.resource.parameters.Paging) ArrayList(java.util.ArrayList) Activity(org.alfresco.rest.workflow.api.model.Activity) HistoricActivityInstance(org.activiti.engine.history.HistoricActivityInstance)

Example 29 with Paging

use of org.alfresco.rest.framework.resource.parameters.Paging in project alfresco-remote-api by Alfresco.

the class TasksImpl method getTasks.

@Override
public CollectionWithPagingInfo<Task> getTasks(Parameters parameters) {
    Paging paging = parameters.getPaging();
    MapBasedQueryWalker propertyWalker = new MapBasedQueryWalker(TASK_COLLECTION_EQUALS_QUERY_PROPERTIES, TASK_COLLECTION_MATCHES_QUERY_PROPERTIES);
    propertyWalker.setSupportedGreaterThanParameters(TASK_COLLECTION_GREATERTHAN_QUERY_PROPERTIES);
    propertyWalker.setSupportedGreaterThanOrEqualParameters(TASK_COLLECTION_GREATERTHANOREQUAL_QUERY_PROPERTIES);
    propertyWalker.setSupportedLessThanParameters(TASK_COLLECTION_LESSTHAN_QUERY_PROPERTIES);
    propertyWalker.setSupportedLessThanOrEqualParameters(TASK_COLLECTION_LESSTHANOREQUAL_QUERY_PROPERTIES);
    propertyWalker.enableVariablesSupport(namespaceService, dictionaryService);
    if (parameters.getQuery() != null) {
        QueryHelper.walk(parameters.getQuery(), propertyWalker);
    }
    String status = propertyWalker.getProperty("status", WhereClauseParser.EQUALS);
    String assignee = propertyWalker.getProperty("assignee", WhereClauseParser.EQUALS);
    String assigneeLike = propertyWalker.getProperty("assignee", WhereClauseParser.MATCHES);
    String owner = propertyWalker.getProperty("owner", WhereClauseParser.EQUALS);
    String ownerLike = propertyWalker.getProperty("owner", WhereClauseParser.MATCHES);
    String candidateUser = propertyWalker.getProperty("candidateUser", WhereClauseParser.EQUALS);
    String candidateGroup = propertyWalker.getProperty("candidateGroup", WhereClauseParser.EQUALS);
    String name = propertyWalker.getProperty("name", WhereClauseParser.EQUALS);
    String nameLike = propertyWalker.getProperty("name", WhereClauseParser.MATCHES);
    String description = propertyWalker.getProperty("description", WhereClauseParser.EQUALS);
    String descriptionLike = propertyWalker.getProperty("description", WhereClauseParser.MATCHES);
    Integer priority = propertyWalker.getProperty("priority", WhereClauseParser.EQUALS, Integer.class);
    Integer priorityGreaterThanOrEquals = propertyWalker.getProperty("priority", WhereClauseParser.GREATERTHANOREQUALS, Integer.class);
    Integer priorityLessThanOrEquals = propertyWalker.getProperty("priority", WhereClauseParser.LESSTHANOREQUALS, Integer.class);
    String processInstanceId = propertyWalker.getProperty("processId", WhereClauseParser.EQUALS);
    String processInstanceBusinessKey = propertyWalker.getProperty("processBusinessKey", WhereClauseParser.EQUALS);
    String processInstanceBusinessKeyLike = propertyWalker.getProperty("processBusinessKey", WhereClauseParser.MATCHES);
    String activityDefinitionId = propertyWalker.getProperty("activityDefinitionId", WhereClauseParser.EQUALS);
    String activityDefinitionIdLike = propertyWalker.getProperty("activityDefinitionId", WhereClauseParser.MATCHES);
    String processDefinitionId = propertyWalker.getProperty("processDefinitionId", WhereClauseParser.EQUALS);
    String processDefinitionKey = propertyWalker.getProperty("processDefinitionKey", WhereClauseParser.EQUALS);
    String processDefinitionKeyLike = propertyWalker.getProperty("processDefinitionKey", WhereClauseParser.MATCHES);
    String processDefinitionName = propertyWalker.getProperty("processDefinitionName", WhereClauseParser.EQUALS);
    String processDefinitionNameLike = propertyWalker.getProperty("processDefinitionName", WhereClauseParser.MATCHES);
    Date startedAt = propertyWalker.getProperty("startedAt", WhereClauseParser.EQUALS, Date.class);
    Date startedAtGreaterThan = propertyWalker.getProperty("startedAt", WhereClauseParser.GREATERTHAN, Date.class);
    Date startedAtLessThan = propertyWalker.getProperty("startedAt", WhereClauseParser.LESSTHAN, Date.class);
    Date endedAt = propertyWalker.getProperty("endedAt", WhereClauseParser.EQUALS, Date.class);
    Date endedAtGreaterThan = propertyWalker.getProperty("endedAt", WhereClauseParser.GREATERTHAN, Date.class);
    Date endedAtLessThan = propertyWalker.getProperty("endedAt", WhereClauseParser.LESSTHAN, Date.class);
    Date dueAt = propertyWalker.getProperty("dueAt", WhereClauseParser.EQUALS, Date.class);
    Date dueAtGreaterThan = propertyWalker.getProperty("dueAt", WhereClauseParser.GREATERTHAN, Date.class);
    Date dueAtLessThan = propertyWalker.getProperty("dueAt", WhereClauseParser.LESSTHAN, Date.class);
    Boolean includeProcessVariables = propertyWalker.getProperty("includeProcessVariables", WhereClauseParser.EQUALS, Boolean.class);
    Boolean includeTaskVariables = propertyWalker.getProperty("includeTaskVariables", WhereClauseParser.EQUALS, Boolean.class);
    List<SortColumn> sortList = parameters.getSorting();
    SortColumn sortColumn = null;
    if (sortList != null && sortList.size() > 0) {
        if (sortList.size() != 1) {
            throw new InvalidArgumentException("Only one order by parameter is supported");
        }
        sortColumn = sortList.get(0);
    }
    List<Task> page = null;
    int totalCount = 0;
    if (status == null || STATUS_ACTIVE.equals(status)) {
        TaskQuery query = activitiProcessEngine.getTaskService().createTaskQuery();
        if (assignee != null)
            query.taskAssignee(assignee);
        if (assigneeLike != null)
            query.taskAssigneeLike(assigneeLike);
        if (owner != null)
            query.taskOwner(owner);
        if (ownerLike != null)
            query.taskOwner(ownerLike);
        if (candidateUser != null) {
            Set<String> parents = authorityService.getContainingAuthorities(AuthorityType.GROUP, candidateUser, false);
            if (parents != null) {
                List<String> authorities = new ArrayList<String>();
                authorities.addAll(parents);
                // there's a limitation in at least Oracle for using an IN statement with more than 1000 items
                if (parents.size() > 1000) {
                    authorities = authorities.subList(0, 1000);
                }
                if (authorities.size() > 0) {
                    query.taskCandidateGroupIn(authorities);
                } else {
                    query.taskCandidateUser(candidateUser);
                }
            }
        }
        if (candidateGroup != null)
            query.taskCandidateGroup(candidateGroup);
        if (name != null)
            query.taskName(name);
        if (nameLike != null)
            query.taskNameLike(nameLike);
        if (description != null)
            query.taskDescription(description);
        if (descriptionLike != null)
            query.taskDescriptionLike(descriptionLike);
        if (priority != null)
            query.taskPriority(priority);
        if (priorityGreaterThanOrEquals != null)
            query.taskMinPriority(priorityGreaterThanOrEquals);
        if (priorityLessThanOrEquals != null)
            query.taskMaxPriority(priorityLessThanOrEquals);
        if (processInstanceId != null)
            query.processInstanceId(processInstanceId);
        if (processInstanceBusinessKey != null)
            query.processInstanceBusinessKey(processInstanceBusinessKey);
        if (processInstanceBusinessKeyLike != null)
            query.processInstanceBusinessKeyLike(processInstanceBusinessKeyLike);
        if (activityDefinitionId != null)
            query.taskDefinitionKey(activityDefinitionId);
        if (activityDefinitionIdLike != null)
            query.taskDefinitionKey(activityDefinitionIdLike);
        if (processDefinitionId != null)
            query.processDefinitionId(processDefinitionId);
        if (processDefinitionKey != null)
            query.processDefinitionKey(processDefinitionKey);
        if (processDefinitionKeyLike != null)
            query.processDefinitionKeyLike(processDefinitionKeyLike);
        if (processDefinitionName != null)
            query.processDefinitionName(processDefinitionName);
        if (processDefinitionNameLike != null)
            query.processDefinitionNameLike(processDefinitionNameLike);
        if (dueAt != null)
            query.dueDate(dueAt);
        if (dueAtGreaterThan != null)
            query.dueAfter(dueAtGreaterThan);
        if (dueAtLessThan != null)
            query.dueBefore(dueAtLessThan);
        if (startedAt != null)
            query.taskCreatedOn(startedAt);
        if (startedAtGreaterThan != null)
            query.taskCreatedAfter(startedAtGreaterThan);
        if (startedAtLessThan != null)
            query.taskCreatedBefore(startedAtLessThan);
        if (includeProcessVariables != null && includeProcessVariables) {
            query.includeProcessVariables();
        }
        if (includeTaskVariables != null && includeTaskVariables) {
            query.includeTaskLocalVariables();
        }
        // use the limit set in alfresco-global.properties
        query.limitTaskVariables(taskVariablesLimit);
        List<QueryVariableHolder> variableProperties = propertyWalker.getVariableProperties();
        setQueryUsingVariables(query, variableProperties);
        // Add tenant-filtering
        if (tenantService.isEnabled()) {
            query.processVariableValueEquals(ActivitiConstants.VAR_TENANT_DOMAIN, TenantUtil.getCurrentDomain());
        }
        // Add involvement filtering if user is not admin
        if (processInstanceId == null && !authorityService.isAdminAuthority(AuthenticationUtil.getRunAsUser()) && candidateUser == null && candidateGroup == null) {
            query.taskInvolvedUser(AuthenticationUtil.getRunAsUser());
        }
        setSorting(query, sortColumn);
        List<org.activiti.engine.task.Task> tasks = query.listPage(paging.getSkipCount(), paging.getMaxItems());
        totalCount = (int) query.count();
        page = new ArrayList<Task>(tasks.size());
        Map<String, TypeDefinition> definitionTypeMap = new HashMap<String, TypeDefinition>();
        for (org.activiti.engine.task.Task taskInstance : tasks) {
            Task task = new Task(taskInstance);
            task.setFormResourceKey(getFormResourceKey(taskInstance));
            if ((includeProcessVariables != null && includeProcessVariables) || (includeTaskVariables != null && includeTaskVariables)) {
                addVariables(task, includeProcessVariables, includeTaskVariables, taskInstance.getProcessVariables(), taskInstance.getTaskLocalVariables(), definitionTypeMap);
            }
            page.add(task);
        }
    } else if (STATUS_COMPLETED.equals(status) || STATUS_ANY.equals(status)) {
        // Candidate user and group is only supported with STATUS_ACTIVE
        if (candidateUser != null) {
            throw new InvalidArgumentException("Filtering on candidateUser is only allowed in combination with status-parameter 'active'");
        }
        if (candidateGroup != null) {
            throw new InvalidArgumentException("Filtering on candidateGroup is only allowed in combination with status-parameter 'active'");
        }
        HistoricTaskInstanceQuery query = activitiProcessEngine.getHistoryService().createHistoricTaskInstanceQuery();
        if (STATUS_COMPLETED.equals(status))
            query.finished();
        if (assignee != null)
            query.taskAssignee(assignee);
        if (assigneeLike != null)
            query.taskAssigneeLike(assigneeLike);
        if (owner != null)
            query.taskOwner(owner);
        if (ownerLike != null)
            query.taskOwnerLike(ownerLike);
        if (name != null)
            query.taskName(name);
        if (nameLike != null)
            query.taskNameLike(nameLike);
        if (description != null)
            query.taskDescription(description);
        if (descriptionLike != null)
            query.taskDescriptionLike(descriptionLike);
        if (priority != null)
            query.taskPriority(priority);
        if (priorityGreaterThanOrEquals != null)
            query.taskMinPriority(priorityGreaterThanOrEquals);
        if (priorityLessThanOrEquals != null)
            query.taskMaxPriority(priorityLessThanOrEquals);
        if (processInstanceId != null)
            query.processInstanceId(processInstanceId);
        if (processInstanceBusinessKey != null)
            query.processInstanceBusinessKey(processInstanceBusinessKey);
        if (processInstanceBusinessKeyLike != null)
            query.processInstanceBusinessKeyLike(processInstanceBusinessKeyLike);
        if (activityDefinitionId != null)
            query.taskDefinitionKey(activityDefinitionId);
        if (activityDefinitionIdLike != null)
            query.taskDefinitionKey(activityDefinitionIdLike);
        if (processDefinitionId != null)
            query.processDefinitionId(processDefinitionId);
        if (processDefinitionKey != null)
            query.processDefinitionKey(processDefinitionKey);
        if (processDefinitionKeyLike != null)
            query.processDefinitionKeyLike(processDefinitionKeyLike);
        if (processDefinitionName != null)
            query.processDefinitionName(processDefinitionName);
        if (processDefinitionNameLike != null)
            query.processDefinitionNameLike(processDefinitionNameLike);
        if (dueAt != null)
            query.taskDueDate(dueAt);
        if (dueAtGreaterThan != null)
            query.taskDueAfter(dueAtGreaterThan);
        if (dueAtLessThan != null)
            query.taskDueBefore(dueAtLessThan);
        if (startedAt != null)
            query.taskCreatedOn(startedAt);
        if (startedAtGreaterThan != null)
            query.taskCreatedAfter(startedAtGreaterThan);
        if (startedAtLessThan != null)
            query.taskCreatedBefore(startedAtLessThan);
        if (endedAt != null)
            query.taskCompletedOn(endedAt);
        if (endedAtGreaterThan != null)
            query.taskCompletedAfter(endedAtGreaterThan);
        if (endedAtLessThan != null)
            query.taskCompletedBefore(endedAtLessThan);
        if (includeProcessVariables != null && includeProcessVariables) {
            query.includeProcessVariables();
        }
        if (includeTaskVariables != null && includeTaskVariables) {
            query.includeTaskLocalVariables();
        }
        List<QueryVariableHolder> variableProperties = propertyWalker.getVariableProperties();
        setQueryUsingVariables(query, variableProperties);
        // Add tenant filtering
        if (tenantService.isEnabled()) {
            query.processVariableValueEquals(ActivitiConstants.VAR_TENANT_DOMAIN, TenantUtil.getCurrentDomain());
        }
        // Add involvement filtering if user is not admin
        if (processInstanceId == null && !authorityService.isAdminAuthority(AuthenticationUtil.getRunAsUser())) {
            query.taskInvolvedUser(AuthenticationUtil.getRunAsUser());
        }
        setSorting(query, sortColumn);
        List<HistoricTaskInstance> tasks = query.listPage(paging.getSkipCount(), paging.getMaxItems());
        totalCount = (int) query.count();
        page = new ArrayList<Task>(tasks.size());
        Map<String, TypeDefinition> definitionTypeMap = new HashMap<String, TypeDefinition>();
        for (HistoricTaskInstance taskInstance : tasks) {
            Task task = new Task(taskInstance);
            if ((includeProcessVariables != null && includeProcessVariables) || (includeTaskVariables != null && includeTaskVariables)) {
                addVariables(task, includeProcessVariables, includeTaskVariables, taskInstance.getProcessVariables(), taskInstance.getTaskLocalVariables(), definitionTypeMap);
            }
            page.add(task);
        }
    } else {
        throw new InvalidArgumentException("Invalid status parameter: " + status);
    }
    return CollectionWithPagingInfo.asPaged(paging, page, (page.size() + paging.getSkipCount()) < totalCount, totalCount);
}
Also used : Task(org.alfresco.rest.workflow.api.model.Task) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) QueryVariableHolder(org.alfresco.rest.workflow.api.impl.MapBasedQueryWalker.QueryVariableHolder) SortColumn(org.alfresco.rest.framework.resource.parameters.SortColumn) TypeDefinition(org.alfresco.service.cmr.dictionary.TypeDefinition) DataTypeDefinition(org.alfresco.service.cmr.dictionary.DataTypeDefinition) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) TaskQuery(org.activiti.engine.task.TaskQuery) List(java.util.List) ArrayList(java.util.ArrayList) HistoricTaskInstance(org.activiti.engine.history.HistoricTaskInstance) Paging(org.alfresco.rest.framework.resource.parameters.Paging) HistoricTaskInstanceQuery(org.activiti.engine.history.HistoricTaskInstanceQuery) Date(java.util.Date) Map(java.util.Map) HashMap(java.util.HashMap)

Example 30 with Paging

use of org.alfresco.rest.framework.resource.parameters.Paging in project alfresco-remote-api by Alfresco.

the class TasksImpl method getTasks.

@Override
public CollectionWithPagingInfo<Task> getTasks(String processId, Parameters parameters) {
    Paging paging = parameters.getPaging();
    String status = parameters.getParameter("status");
    List<SortColumn> sortList = parameters.getSorting();
    SortColumn sortColumn = null;
    if (sortList != null && sortList.size() > 0) {
        if (sortList.size() != 1) {
            throw new InvalidArgumentException("Only one order by parameter is supported");
        }
        sortColumn = sortList.get(0);
    }
    validateIfUserAllowedToWorkWithProcess(processId);
    List<Task> page = null;
    int totalCount = 0;
    if (status == null || STATUS_ACTIVE.equals(status)) {
        TaskQuery query = activitiProcessEngine.getTaskService().createTaskQuery();
        query.processInstanceId(processId);
        setSorting(query, sortColumn);
        List<org.activiti.engine.task.Task> tasks = query.listPage(paging.getSkipCount(), paging.getMaxItems());
        totalCount = (int) query.count();
        page = new ArrayList<Task>(tasks.size());
        for (org.activiti.engine.task.Task taskInstance : tasks) {
            Task task = new Task(taskInstance);
            task.setFormResourceKey(getFormResourceKey(taskInstance));
            page.add(task);
        }
    } else if (STATUS_COMPLETED.equals(status) || STATUS_ANY.equals(status)) {
        HistoricTaskInstanceQuery query = activitiProcessEngine.getHistoryService().createHistoricTaskInstanceQuery();
        if (STATUS_COMPLETED.equals(status))
            query.finished();
        query.processInstanceId(processId);
        // Add tenant filtering
        if (tenantService.isEnabled()) {
            query.processVariableValueEquals(ActivitiConstants.VAR_TENANT_DOMAIN, TenantUtil.getCurrentDomain());
        }
        setSorting(query, sortColumn);
        List<HistoricTaskInstance> tasks = query.listPage(paging.getSkipCount(), paging.getMaxItems());
        totalCount = (int) query.count();
        page = new ArrayList<Task>(tasks.size());
        for (HistoricTaskInstance taskInstance : tasks) {
            Task task = new Task(taskInstance);
            page.add(task);
        }
    } else {
        throw new InvalidArgumentException("Invalid status parameter: " + status);
    }
    return CollectionWithPagingInfo.asPaged(paging, page, (page.size() + paging.getSkipCount()) < totalCount, totalCount);
}
Also used : Task(org.alfresco.rest.workflow.api.model.Task) HistoricTaskInstance(org.activiti.engine.history.HistoricTaskInstance) Paging(org.alfresco.rest.framework.resource.parameters.Paging) ArrayList(java.util.ArrayList) SortColumn(org.alfresco.rest.framework.resource.parameters.SortColumn) HistoricTaskInstanceQuery(org.activiti.engine.history.HistoricTaskInstanceQuery) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) TaskQuery(org.activiti.engine.task.TaskQuery) List(java.util.List) ArrayList(java.util.ArrayList)

Aggregations

Paging (org.alfresco.rest.framework.resource.parameters.Paging)34 ArrayList (java.util.ArrayList)18 InvalidArgumentException (org.alfresco.rest.framework.core.exceptions.InvalidArgumentException)11 Query (org.alfresco.rest.framework.resource.parameters.where.Query)10 PagingRequest (org.alfresco.query.PagingRequest)9 SortColumn (org.alfresco.rest.framework.resource.parameters.SortColumn)8 Pair (org.alfresco.util.Pair)8 AbstractList (java.util.AbstractList)7 HashMap (java.util.HashMap)6 List (java.util.List)6 Test (org.junit.Test)6 EntityNotFoundException (org.alfresco.rest.framework.core.exceptions.EntityNotFoundException)5 SiteInfo (org.alfresco.service.cmr.site.SiteInfo)5 HashSet (java.util.HashSet)4 AuthorityInfo (org.alfresco.repo.security.authority.AuthorityInfo)4 NodeRef (org.alfresco.service.cmr.repository.NodeRef)4 Map (java.util.Map)3 Set (java.util.Set)3 EmptyPagingResults (org.alfresco.query.EmptyPagingResults)3 GroupMember (org.alfresco.rest.api.model.GroupMember)3