001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.workflowtasks.search;
016    
017    import com.liferay.portal.kernel.dao.search.SearchContainer;
018    import com.liferay.portal.kernel.util.OrderByComparator;
019    import com.liferay.portal.kernel.util.ParamUtil;
020    import com.liferay.portal.kernel.workflow.WorkflowTask;
021    import com.liferay.portal.kernel.workflow.comparator.WorkflowComparatorFactoryUtil;
022    
023    import java.util.ArrayList;
024    import java.util.HashMap;
025    import java.util.List;
026    import java.util.Map;
027    
028    import javax.portlet.PortletRequest;
029    import javax.portlet.PortletURL;
030    
031    /**
032     * @author Marcellus Tavares
033     */
034    public class WorkflowTaskSearch extends SearchContainer<WorkflowTask> {
035    
036            static List<String> headerNames = new ArrayList<String>();
037            static Map<String, String> orderableHeaders = new HashMap<String, String>();
038    
039            static {
040                    headerNames.add("task");
041                    headerNames.add("asset-title");
042                    headerNames.add("last-activity-date");
043                    headerNames.add("due-date");
044                    headerNames.add("state");
045    
046                    orderableHeaders.put("task", "task");
047                    orderableHeaders.put("due-date", "due-date");
048            }
049    
050            public WorkflowTaskSearch(
051                    PortletRequest portletRequest, PortletURL iteratorURL) {
052    
053                    super(
054                            portletRequest, new WorkflowTaskDisplayTerms(portletRequest),
055                            new WorkflowTaskSearchTerms(portletRequest), DEFAULT_CUR_PARAM,
056                            DEFAULT_DELTA, iteratorURL, headerNames, null);
057    
058                    WorkflowTaskDisplayTerms displayTerms =
059                            (WorkflowTaskDisplayTerms)getDisplayTerms();
060    
061                    iteratorURL.setParameter(
062                            WorkflowTaskDisplayTerms.NAME, displayTerms.getName());
063                    iteratorURL.setParameter(
064                            WorkflowTaskDisplayTerms.TYPE, displayTerms.getType());
065    
066                    String orderByCol = ParamUtil.getString(portletRequest, "orderByCol");
067                    String orderByType = ParamUtil.getString(portletRequest, "orderByType");
068    
069                    OrderByComparator orderByComparator = getOrderByComparator(
070                            orderByCol, orderByType);
071    
072                    setOrderableHeaders(orderableHeaders);
073                    setOrderByCol(orderByCol);
074                    setOrderByType(orderByType);
075                    setOrderByComparator(orderByComparator);
076            }
077    
078            protected OrderByComparator getOrderByComparator(
079                    String orderByCol, String orderByType) {
080    
081                    boolean orderByAsc = false;
082    
083                    if (orderByType.equals("asc")) {
084                            orderByAsc = true;
085                    }
086    
087                    OrderByComparator orderByComparator = null;
088    
089                    if (orderByCol.equals("name")) {
090                            orderByComparator =
091                                    WorkflowComparatorFactoryUtil.getTaskNameComparator(orderByAsc);
092                    }
093                    else {
094                            orderByComparator =
095                                    WorkflowComparatorFactoryUtil.getTaskDueDateComparator(
096                                            orderByAsc);
097                    }
098    
099                    return orderByComparator;
100            }
101    
102    }