1   /**
2    * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.enterpriseadmin.search;
24  
25  import com.liferay.portal.kernel.dao.search.SearchContainer;
26  import com.liferay.portal.kernel.util.OrderByComparator;
27  import com.liferay.portal.kernel.util.ParamUtil;
28  import com.liferay.portal.kernel.util.Validator;
29  import com.liferay.portal.model.Organization;
30  import com.liferay.portal.util.PortletKeys;
31  import com.liferay.portlet.PortalPreferences;
32  import com.liferay.portlet.PortletPreferencesFactoryUtil;
33  import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
34  
35  import java.util.ArrayList;
36  import java.util.HashMap;
37  import java.util.List;
38  import java.util.Map;
39  
40  import javax.portlet.PortletURL;
41  import javax.portlet.RenderRequest;
42  
43  import org.apache.commons.logging.Log;
44  import org.apache.commons.logging.LogFactory;
45  
46  /**
47   * <a href="OrganizationSearch.java.html"><b><i>View Source</i></b></a>
48   *
49   * @author Brian Wing Shun Chan
50   *
51   */
52  public class OrganizationSearch extends SearchContainer<Organization> {
53  
54      static List<String> headerNames = new ArrayList<String>();
55      static Map<String, String> orderableHeaders = new HashMap<String, String>();
56  
57      static {
58          headerNames.add("name");
59          headerNames.add("parent-organization");
60          headerNames.add("type");
61          headerNames.add("city");
62          headerNames.add("region");
63          headerNames.add("country");
64  
65          orderableHeaders.put("name", "name");
66          orderableHeaders.put("type", "type");
67      }
68  
69      public static final String EMPTY_RESULTS_MESSAGE =
70          "no-organizations-were-found";
71  
72      public OrganizationSearch(
73          RenderRequest renderRequest, PortletURL iteratorURL) {
74  
75          super(
76              renderRequest, new OrganizationDisplayTerms(renderRequest),
77              new OrganizationSearchTerms(renderRequest), DEFAULT_CUR_PARAM,
78              DEFAULT_DELTA, iteratorURL, headerNames, EMPTY_RESULTS_MESSAGE);
79  
80          OrganizationDisplayTerms displayTerms =
81              (OrganizationDisplayTerms)getDisplayTerms();
82  
83          iteratorURL.setParameter(
84              OrganizationDisplayTerms.NAME, displayTerms.getName());
85          iteratorURL.setParameter(
86              OrganizationDisplayTerms.STREET, displayTerms.getStreet());
87          iteratorURL.setParameter(
88              OrganizationDisplayTerms.CITY, displayTerms.getCity());
89          iteratorURL.setParameter(
90              OrganizationDisplayTerms.ZIP, displayTerms.getZip());
91          iteratorURL.setParameter(
92              OrganizationDisplayTerms.COUNTRY_ID,
93              String.valueOf(displayTerms.getCountryId()));
94          iteratorURL.setParameter(
95              OrganizationDisplayTerms.REGION_ID,
96              String.valueOf(displayTerms.getRegionId()));
97          iteratorURL.setParameter(
98              OrganizationDisplayTerms.PARENT_ORGANIZATION_ID,
99              String.valueOf(displayTerms.getParentOrganizationId()));
100 
101         try {
102             PortalPreferences prefs =
103                 PortletPreferencesFactoryUtil.getPortalPreferences(
104                     renderRequest);
105 
106             String orderByCol = ParamUtil.getString(
107                 renderRequest, "orderByCol");
108             String orderByType = ParamUtil.getString(
109                 renderRequest, "orderByType");
110 
111             if (Validator.isNotNull(orderByCol) &&
112                 Validator.isNotNull(orderByType)) {
113 
114                 prefs.setValue(
115                     PortletKeys.ENTERPRISE_ADMIN, "organizations-order-by-col",
116                     orderByCol);
117                 prefs.setValue(
118                     PortletKeys.ENTERPRISE_ADMIN, "organizations-order-by-type",
119                     orderByType);
120             }
121             else {
122                 orderByCol = prefs.getValue(
123                     PortletKeys.ENTERPRISE_ADMIN, "organizations-order-by-col",
124                     "name");
125                 orderByType = prefs.getValue(
126                     PortletKeys.ENTERPRISE_ADMIN, "organizations-order-by-type",
127                     "asc");
128             }
129 
130             OrderByComparator orderByComparator =
131                 EnterpriseAdminUtil.getOrganizationOrderByComparator(
132                     orderByCol, orderByType);
133 
134             setOrderableHeaders(orderableHeaders);
135             setOrderByCol(orderByCol);
136             setOrderByType(orderByType);
137             setOrderByComparator(orderByComparator);
138         }
139         catch (Exception e) {
140             _log.error(e);
141         }
142     }
143 
144     private static Log _log = LogFactory.getLog(OrganizationSearch.class);
145 
146 }