/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.activiti.rest.service.api.history;


import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.activiti.rest.common.api.DataResponse;
import org.activiti.rest.common.api.RequestUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


/**
 * @author Tijs Rademakers
 */
@RestController
public class HistoricTaskInstanceCollectionResource extends HistoricTaskInstanceBaseResource {

  @RequestMapping(value="/history/historic-task-instances", method = RequestMethod.GET, produces = "application/json")
  public DataResponse getHistoricProcessInstances(@RequestParam Map<String,String> allRequestParams, HttpServletRequest request) {
    // Populate query based on request
    HistoricTaskInstanceQueryRequest queryRequest = new HistoricTaskInstanceQueryRequest();
    
    if (allRequestParams.get("taskId") != null) {
      queryRequest.setTaskId(allRequestParams.get("taskId"));
    }
    
    if (allRequestParams.get("processInstanceId") != null) {
      queryRequest.setProcessInstanceId(allRequestParams.get("processInstanceId"));
    }
    
    if (allRequestParams.get("processBusinessKey") != null) {
      queryRequest.setProcessBusinessKey(allRequestParams.get("processBusinessKey"));
    }
    
    if (allRequestParams.get("processDefinitionKey") != null) {
      queryRequest.setProcessDefinitionKey(allRequestParams.get("processDefinitionKey"));
    }
    
    if (allRequestParams.get("processDefinitionId") != null) {
      queryRequest.setProcessDefinitionId(allRequestParams.get("processDefinitionId"));
    }
    
    if (allRequestParams.get("processDefinitionName") != null) {
      queryRequest.setProcessDefinitionName(allRequestParams.get("processDefinitionName"));
    }
    
    if (allRequestParams.get("executionId") != null) {
      queryRequest.setExecutionId(allRequestParams.get("executionId"));
    }
    
    if (allRequestParams.get("taskName") != null) {
      queryRequest.setTaskName(allRequestParams.get("taskName"));
    }
    
    if (allRequestParams.get("taskNameLike") != null) {
      queryRequest.setTaskNameLike(allRequestParams.get("taskNameLike"));
    }
    
    if (allRequestParams.get("taskDescription") != null) {
      queryRequest.setTaskDescription(allRequestParams.get("taskDescription"));
    }
    
    if (allRequestParams.get("taskDescriptionLike") != null) {
      queryRequest.setTaskDescriptionLike(allRequestParams.get("taskDescriptionLike"));
    }
    
    if (allRequestParams.get("taskDefinitionKey") != null) {
      queryRequest.setTaskDefinitionKey(allRequestParams.get("taskDefinitionKey"));
    }
    
    if (allRequestParams.get("taskDeleteReason") != null) {
      queryRequest.setTaskDeleteReason(allRequestParams.get("taskDeleteReason"));
    }
    
    if (allRequestParams.get("taskDeleteReasonLike") != null) {
      queryRequest.setTaskDeleteReasonLike(allRequestParams.get("taskDeleteReasonLike"));
    }
    
    if (allRequestParams.get("taskAssignee") != null) {
      queryRequest.setTaskAssignee(allRequestParams.get("taskAssignee"));
    }
    
    if (allRequestParams.get("taskAssigneeLike") != null) {
      queryRequest.setTaskAssigneeLike(allRequestParams.get("taskAssigneeLike"));
    }
    
    if (allRequestParams.get("taskOwner") != null) {
      queryRequest.setTaskOwner(allRequestParams.get("taskOwner"));
    }
    
    if (allRequestParams.get("taskOwnerLike") != null) {
      queryRequest.setTaskOwnerLike(allRequestParams.get("taskOwnerLike"));
    }
    
    if (allRequestParams.get("taskInvolvedUser") != null) {
      queryRequest.setTaskInvolvedUser(allRequestParams.get("taskInvolvedUser"));
    }
    
    if (allRequestParams.get("taskPriority") != null) {
      queryRequest.setTaskPriority(Integer.valueOf(allRequestParams.get("taskPriority")));
    }
    
    if (allRequestParams.get("finished") != null) {
      queryRequest.setFinished(Boolean.valueOf(allRequestParams.get("finished")));
    }
    
    if (allRequestParams.get("processFinished") != null) {
      queryRequest.setProcessFinished(Boolean.valueOf(allRequestParams.get("processFinished")));
    }
    
    if (allRequestParams.get("parentTaskId") != null) {
      queryRequest.setParentTaskId(allRequestParams.get("parentTaskId"));
    }
    
    if (allRequestParams.get("dueDate") != null) {
      queryRequest.setDueDate(RequestUtil.getDate(allRequestParams, "dueDate"));
    }
    
    if (allRequestParams.get("dueDateAfter") != null) {
      queryRequest.setDueDateAfter(RequestUtil.getDate(allRequestParams, "dueDateAfter"));
    }
    
    if (allRequestParams.get("dueDateBefore") != null) {
      queryRequest.setDueDateBefore(RequestUtil.getDate(allRequestParams, "dueDateBefore"));
    }
    
    if (allRequestParams.get("taskCreatedOn") != null) {
      queryRequest.setTaskCreatedOn(RequestUtil.getDate(allRequestParams, "taskCreatedOn"));
    }
    
    if (allRequestParams.get("taskCreatedBefore") != null) {
    	queryRequest.setTaskCreatedBefore(RequestUtil.getDate(allRequestParams, "taskCreatedBefore"));
    }
    
    if (allRequestParams.get("taskCreatedAfter") != null) {
    	queryRequest.setTaskCreatedAfter(RequestUtil.getDate(allRequestParams, "taskCreatedAfter"));
    }
    
    if (allRequestParams.get("taskCompletedOn") != null) {
    	queryRequest.setTaskCompletedOn(RequestUtil.getDate(allRequestParams, "taskCompletedOn"));
    }
    
    if (allRequestParams.get("taskCompletedBefore") != null) {
    	queryRequest.setTaskCompletedBefore(RequestUtil.getDate(allRequestParams, "taskCompletedBefore"));
    }
    
    if (allRequestParams.get("taskCompletedAfter") != null) {
    	queryRequest.setTaskCompletedAfter(RequestUtil.getDate(allRequestParams, "taskCompletedAfter"));
    }
    
    if (allRequestParams.get("includeTaskLocalVariables") != null) {
      queryRequest.setIncludeTaskLocalVariables(Boolean.valueOf(allRequestParams.get("includeTaskLocalVariables")));
    }
    
    if (allRequestParams.get("includeProcessVariables") != null) {
      queryRequest.setIncludeProcessVariables(Boolean.valueOf(allRequestParams.get("includeProcessVariables")));
    }
    
    if (allRequestParams.get("tenantId") != null) {
      queryRequest.setTenantId(allRequestParams.get("tenantId"));
    }
    
    if (allRequestParams.get("tenantIdLike") != null) {
    	queryRequest.setTenantIdLike(allRequestParams.get("tenantIdLike"));
    }
    
    if (allRequestParams.get("withoutTenantId") != null) {
    	queryRequest.setWithoutTenantId(Boolean.valueOf(allRequestParams.get("withoutTenantId")));
    }

    if (allRequestParams.get("taskCandidateGroup") != null) {
      queryRequest.setTaskCandidateGroup(allRequestParams.get("taskCandidateGroup"));
    }

    return getQueryResponse(queryRequest, allRequestParams, request.getRequestURL().toString().replace("/history/historic-task-instances", ""));
  }
}

@@ -7317,24 +7317,28 @@
 %22)));%0A    %7D%0A
+    
 %0A    if (all

Update HistoricTaskInstanceCollectionResource.java