1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.workflowtasks.search;
16  
17  import com.liferay.portal.kernel.dao.search.SearchContainer;
18  import com.liferay.portal.kernel.util.OrderByComparator;
19  import com.liferay.portal.kernel.util.ParamUtil;
20  import com.liferay.portal.kernel.workflow.WorkflowTask;
21  import com.liferay.portal.kernel.workflow.comparator.WorkflowComparatorFactoryUtil;
22  
23  import java.util.ArrayList;
24  import java.util.HashMap;
25  import java.util.List;
26  import java.util.Map;
27  
28  import javax.portlet.PortletRequest;
29  import javax.portlet.PortletURL;
30  
31  /**
32   * <a href="WorkflowTaskSearch.java.html"><b><i>View Source</i></b></a>
33   *
34   * @author Marcellus Tavares
35   */
36  public class WorkflowTaskSearch extends SearchContainer<WorkflowTask> {
37  
38      static List<String> headerNames = new ArrayList<String>();
39      static Map<String, String> orderableHeaders = new HashMap<String, String>();
40  
41      static {
42          headerNames.add("name");
43          headerNames.add("asset-title");
44          headerNames.add("last-activity-date");
45          headerNames.add("due-date");
46          headerNames.add("state");
47  
48          orderableHeaders.put("name", "name");
49          orderableHeaders.put("due-date", "due-date");
50      }
51  
52      public WorkflowTaskSearch(
53          PortletRequest portletRequest, PortletURL iteratorURL) {
54  
55          super(
56              portletRequest, new WorkflowTaskDisplayTerms(portletRequest),
57              new WorkflowTaskSearchTerms(portletRequest), DEFAULT_CUR_PARAM,
58              DEFAULT_DELTA, iteratorURL, headerNames, null);
59  
60          WorkflowTaskDisplayTerms displayTerms =
61              (WorkflowTaskDisplayTerms)getDisplayTerms();
62  
63          iteratorURL.setParameter(
64              WorkflowTaskDisplayTerms.NAME, displayTerms.getName());
65          iteratorURL.setParameter(
66              WorkflowTaskDisplayTerms.TYPE, displayTerms.getType());
67  
68          String orderByCol = ParamUtil.getString(
69              portletRequest, "orderByCol");
70          String orderByType = ParamUtil.getString(
71              portletRequest, "orderByType");
72  
73          OrderByComparator orderByComparator = getOrderByComparator(
74              orderByCol, orderByType);
75  
76          setOrderableHeaders(orderableHeaders);
77          setOrderByCol(orderByCol);
78          setOrderByType(orderByType);
79          setOrderByComparator(orderByComparator);
80      }
81  
82      protected OrderByComparator getOrderByComparator(
83          String orderByCol, String orderByType) {
84  
85          boolean orderByAsc = false;
86  
87          if (orderByType.equals("asc")) {
88              orderByAsc = true;
89          }
90  
91          OrderByComparator orderByComparator = null;
92  
93          if (orderByCol.equals("due-date")) {
94              orderByComparator =
95                  WorkflowComparatorFactoryUtil.getTaskDueDateComparator(
96                      orderByAsc);
97          }
98          else if (orderByCol.equals("name")){
99              orderByComparator =
100                 WorkflowComparatorFactoryUtil.getTaskNameComparator(orderByAsc);
101         }
102 
103         return orderByComparator;
104     }
105 
106 }