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.STATE, displayTerms.getState());
67          iteratorURL.setParameter(
68              WorkflowTaskDisplayTerms.TYPE, displayTerms.getType());
69  
70          String orderByCol = ParamUtil.getString(
71              portletRequest, "orderByCol");
72          String orderByType = ParamUtil.getString(
73              portletRequest, "orderByType");
74  
75          OrderByComparator orderByComparator = getOrderByComparator(
76              orderByCol, orderByType);
77  
78          setOrderableHeaders(orderableHeaders);
79          setOrderByCol(orderByCol);
80          setOrderByType(orderByType);
81          setOrderByComparator(orderByComparator);
82      }
83  
84      protected OrderByComparator getOrderByComparator(
85          String orderByCol, String orderByType) {
86  
87          boolean orderByAsc = false;
88  
89          if (orderByType.equals("asc")) {
90              orderByAsc = true;
91          }
92  
93          OrderByComparator orderByComparator = null;
94  
95          if (orderByCol.equals("name")){
96              orderByComparator =
97                  WorkflowComparatorFactoryUtil.getTaskNameComparator(orderByAsc);
98          }
99          else if (orderByCol.equals("due-date")) {
100             orderByComparator =
101                 WorkflowComparatorFactoryUtil.getTaskDueDateComparator(
102                     orderByAsc);
103         }
104 
105         return orderByComparator;
106     }
107 
108 }