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.portal.kernel.dao.search;
24  
25  import com.liferay.portal.kernel.util.OrderByComparator;
26  import com.liferay.portal.kernel.util.ParamUtil;
27  
28  import java.util.ArrayList;
29  import java.util.List;
30  import java.util.Map;
31  
32  import javax.portlet.PortletRequest;
33  import javax.portlet.PortletURL;
34  
35  /**
36   * <a href="SearchContainer.java.html"><b><i>View Source</i></b></a>
37   *
38   * @author Brian Wing Shun Chan
39   *
40   */
41  public class SearchContainer<R> {
42  
43      public static final String DEFAULT_CUR_PARAM = "cur";
44  
45      public static final int DEFAULT_CUR_VALUE = 1;
46  
47      public static final int DEFAULT_DELTA = 20;
48  
49      public SearchContainer() {
50      }
51  
52      public SearchContainer(
53          PortletRequest portletRequest, DisplayTerms displayTerms,
54          DisplayTerms searchTerms, String curParam, int delta,
55          PortletURL iteratorURL, List<String> headerNames,
56          String emptyResultsMessage) {
57  
58          _displayTerms = displayTerms;
59          _searchTerms = searchTerms;
60  
61          _curParam = curParam;
62          _curValue = ParamUtil.get(portletRequest, _curParam, DEFAULT_CUR_VALUE);
63  
64          if (_curValue < 1) {
65              _curValue = DEFAULT_CUR_VALUE;
66          }
67  
68          setDelta(delta);
69  
70          _iteratorURL = iteratorURL;
71  
72          _iteratorURL.setParameter(
73              DisplayTerms.KEYWORDS,
74              ParamUtil.getString(portletRequest, DisplayTerms.KEYWORDS));
75          _iteratorURL.setParameter(
76              DisplayTerms.ADVANCED_SEARCH,
77              String.valueOf(
78                  ParamUtil.getBoolean(
79                      portletRequest, DisplayTerms.ADVANCED_SEARCH)));
80          _iteratorURL.setParameter(
81              DisplayTerms.AND_OPERATOR,
82              String.valueOf(
83                  ParamUtil.getBoolean(
84                      portletRequest, DisplayTerms.AND_OPERATOR, true)));
85  
86          if (headerNames != null) {
87              _headerNames = new ArrayList<String>(headerNames.size());
88  
89              _headerNames.addAll(headerNames);
90          }
91  
92          _emptyResultsMessage = emptyResultsMessage;
93      }
94  
95      public DisplayTerms getDisplayTerms() {
96          return _displayTerms;
97      }
98  
99      public DisplayTerms getSearchTerms() {
100         return _searchTerms;
101     }
102 
103     public String getCurParam() {
104         return _curParam;
105     }
106 
107     public int getCurValue() {
108         return _curValue;
109     }
110 
111     public int getDelta() {
112         return _delta;
113     }
114 
115     public void setDelta(int delta) {
116         if (delta <= 0) {
117             _delta = DEFAULT_DELTA;
118         }
119         else {
120             _delta = delta;
121         }
122 
123         _calculateStartAndEnd();
124     }
125 
126     public int getStart() {
127         return _start;
128     }
129 
130     public int getEnd() {
131         return _end;
132     }
133 
134     public int getResultEnd() {
135         return _resultEnd;
136     }
137 
138     public int getTotal() {
139         return _total;
140     }
141 
142     public void setTotal(int total) {
143         _total = total;
144 
145         if (((_curValue - 1) * _delta) > _total) {
146             _curValue = DEFAULT_CUR_VALUE;
147         }
148 
149         _calculateStartAndEnd();
150     }
151 
152     public List<R> getResults() {
153         return _results;
154     }
155 
156     public void setResults(List<R> results) {
157         _results = results;
158     }
159 
160     public List<ResultRow> getResultRows() {
161         return _resultRows;
162     }
163 
164     public PortletURL getIteratorURL() {
165         return _iteratorURL;
166     }
167 
168     public void setIteratorURL(PortletURL iteratorURL) {
169         _iteratorURL = iteratorURL;
170     }
171 
172     public List<String> getHeaderNames() {
173         return _headerNames;
174     }
175 
176     public void setHeaderNames(List<String> headerNames) {
177         _headerNames = headerNames;
178     }
179 
180     public Map<String, String> getOrderableHeaders() {
181         return _orderableHeaders;
182     }
183 
184     public void setOrderableHeaders(Map<String, String> orderableHeaders) {
185         _orderableHeaders = orderableHeaders;
186     }
187 
188     public String getOrderByCol() {
189         return _orderByCol;
190     }
191 
192     public void setOrderByCol(String orderByCol) {
193         _orderByCol = orderByCol;
194     }
195 
196     public String getOrderByType() {
197         return _orderByType;
198     }
199 
200     public void setOrderByType(String orderByType) {
201         _orderByType = orderByType;
202     }
203 
204     public OrderByComparator getOrderByComparator() {
205         return _orderByComparator;
206     }
207 
208     public void setOrderByComparator(OrderByComparator orderByComparator) {
209         _orderByComparator = orderByComparator;
210     }
211 
212     public String getEmptyResultsMessage() {
213         return _emptyResultsMessage;
214     }
215 
216     public void setEmptyResultsMessage(String emptyResultsMessage) {
217         _emptyResultsMessage = emptyResultsMessage;
218     }
219 
220     public RowChecker getRowChecker() {
221         return _rowChecker;
222     }
223 
224     public void setRowChecker(RowChecker rowChecker) {
225         _rowChecker = rowChecker;
226     }
227 
228     public boolean isHover() {
229         return _hover;
230     }
231 
232     public void setHover(boolean hover) {
233         _hover = hover;
234     }
235 
236     private void _calculateStartAndEnd() {
237         _start = (_curValue - 1) * _delta;
238         _end = _start + _delta;
239 
240         _resultEnd = _end;
241 
242         if (_resultEnd > _total) {
243             _resultEnd = _total;
244         }
245     }
246 
247     private DisplayTerms _displayTerms;
248     private DisplayTerms _searchTerms;
249     private String _curParam = DEFAULT_CUR_PARAM;
250     private int _curValue;
251     private int _delta = DEFAULT_DELTA;
252     private int _start;
253     private int _end;
254     private int _resultEnd;
255     private int _total;
256     private List<R> _results = new ArrayList<R>();
257     private List<ResultRow> _resultRows = new ArrayList<ResultRow>();
258     private PortletURL _iteratorURL;
259     private List<String> _headerNames;
260     private Map<String, String> _orderableHeaders;
261     private String _orderByCol;
262     private String _orderByType;
263     private OrderByComparator _orderByComparator;
264     private String _emptyResultsMessage;
265     private RowChecker _rowChecker;
266     private boolean _hover = true;
267 
268 }