1
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
40 public class SearchContainer<R> {
41
42 public static final int DEFAULT_CUR = 1;
43
44 public static final String DEFAULT_CUR_PARAM = "cur";
45
46
49 public static final int DEFAULT_CUR_VALUE = DEFAULT_CUR;
50
51 public static final int DEFAULT_DELTA = 20;
52
53 public static final String DEFAULT_DELTA_PARAM = "delta";
54
55 public static final int DEFAULT_MAX_PAGES = 25;
56
57 public static final String DEFAULT_ORDER_BY_COL_PARAM = "orderByCol";
58
59 public static final String DEFAULT_ORDER_BY_TYPE_PARAM = "orderByType";
60
61 public static final int MAX_DELTA = 200;
62
63 public SearchContainer() {
64 }
65
66 public SearchContainer(
67 PortletRequest portletRequest, PortletURL iteratorURL,
68 List<String> headerNames, String emptyResultsMessage) {
69
70 this(
71 portletRequest, null, null, DEFAULT_CUR_PARAM, DEFAULT_DELTA,
72 iteratorURL, headerNames, emptyResultsMessage);
73 }
74
75 public SearchContainer(
76 PortletRequest portletRequest, DisplayTerms displayTerms,
77 DisplayTerms searchTerms, String curParam, int delta,
78 PortletURL iteratorURL, List<String> headerNames,
79 String emptyResultsMessage) {
80
81 _portletRequest = portletRequest;
82 _displayTerms = displayTerms;
83 _searchTerms = searchTerms;
84
85 _curParam = curParam;
86
87 _cur = ParamUtil.getInteger(portletRequest, _curParam, DEFAULT_CUR);
88
89 if (_cur < 1) {
90 _cur = DEFAULT_CUR;
91 }
92
93 setDelta(ParamUtil.getInteger(portletRequest, _deltaParam, delta));
94
95 _iteratorURL = iteratorURL;
96
97 _iteratorURL.setParameter(_curParam, String.valueOf(_cur));
98 _iteratorURL.setParameter(_deltaParam, String.valueOf(_delta));
99 _iteratorURL.setParameter(
100 DisplayTerms.KEYWORDS,
101 ParamUtil.getString(portletRequest, DisplayTerms.KEYWORDS));
102 _iteratorURL.setParameter(
103 DisplayTerms.ADVANCED_SEARCH,
104 String.valueOf(
105 ParamUtil.getBoolean(
106 portletRequest, DisplayTerms.ADVANCED_SEARCH)));
107 _iteratorURL.setParameter(
108 DisplayTerms.AND_OPERATOR,
109 String.valueOf(
110 ParamUtil.getBoolean(
111 portletRequest, DisplayTerms.AND_OPERATOR, true)));
112
113 if (headerNames != null) {
114 _headerNames = new ArrayList<String>(headerNames.size());
115
116 _headerNames.addAll(headerNames);
117 }
118
119 _emptyResultsMessage = emptyResultsMessage;
120 }
121
122 public int getCur() {
123 return _cur;
124 }
125
126 public String getCurParam() {
127 return _curParam;
128 }
129
130
133 public int getCurValue() {
134 return getCur();
135 }
136
137 public int getDelta() {
138 return _delta;
139 }
140
141 public String getDeltaParam() {
142 return _deltaParam;
143 }
144
145 public DisplayTerms getDisplayTerms() {
146 return _displayTerms;
147 }
148
149 public String getEmptyResultsMessage() {
150 return _emptyResultsMessage;
151 }
152
153 public int getEnd() {
154 return _end;
155 }
156
157 public List<String> getHeaderNames() {
158 return _headerNames;
159 }
160
161 public String getId() {
162 return _id;
163 }
164
165 public PortletURL getIteratorURL() {
166 return _iteratorURL;
167 }
168
169 public int getMaxPages() {
170 return _maxPages;
171 }
172
173 public Map<String, String> getOrderableHeaders() {
174 return _orderableHeaders;
175 }
176
177 public String getOrderByCol() {
178 return _orderByCol;
179 }
180
181 public String getOrderByColParam() {
182 return _orderByColParam;
183 }
184
185 public OrderByComparator getOrderByComparator() {
186 return _orderByComparator;
187 }
188
189 public String getOrderByType() {
190 return _orderByType;
191 }
192
193 public String getOrderByTypeParam() {
194 return _orderByTypeParam;
195 }
196
197 public PortletRequest getPortletRequest() {
198 return _portletRequest;
199 }
200
201 public int getResultEnd() {
202 return _resultEnd;
203 }
204
205 public List<ResultRow> getResultRows() {
206 return _resultRows;
207 }
208
209 public List<R> getResults() {
210 return _results;
211 }
212
213 public RowChecker getRowChecker() {
214 return _rowChecker;
215 }
216
217 public DisplayTerms getSearchTerms() {
218 return _searchTerms;
219 }
220
221 public int getStart() {
222 return _start;
223 }
224
225 public int getTotal() {
226 return _total;
227 }
228
229 public boolean isHover() {
230 return _hover;
231 }
232
233 public void setDelta(int delta) {
234 if (delta <= 0) {
235 _delta = DEFAULT_DELTA;
236 }
237 else if (delta > MAX_DELTA) {
238 _delta = MAX_DELTA;
239 }
240 else {
241 _delta = delta;
242 }
243
244 _calculateStartAndEnd();
245 }
246
247 public void setDeltaParam(String deltaParam) {
248 _deltaParam = deltaParam;
249 }
250
251 public void setEmptyResultsMessage(String emptyResultsMessage) {
252 _emptyResultsMessage = emptyResultsMessage;
253 }
254
255 public void setHeaderNames(List<String> headerNames) {
256 _headerNames = headerNames;
257 }
258
259 public void setHover(boolean hover) {
260 _hover = hover;
261 }
262
263 public void setId(String id) {
264 _id = id;
265 }
266
267 public void setIteratorURL(PortletURL iteratorURL) {
268 _iteratorURL = iteratorURL;
269 }
270
271 public void setMaxPages(int maxPages) {
272 _maxPages = maxPages;
273 }
274
275 public void setOrderableHeaders(Map<String, String> orderableHeaders) {
276 _orderableHeaders = orderableHeaders;
277 }
278
279 public void setOrderByCol(String orderByCol) {
280 _orderByCol = orderByCol;
281
282 _iteratorURL.setParameter(_orderByColParam, _orderByCol);
283 }
284
285 public void setOrderByColParam(String orderByColParam) {
286 _orderByColParam = orderByColParam;
287 }
288
289 public void setOrderByComparator(OrderByComparator orderByComparator) {
290 _orderByComparator = orderByComparator;
291 }
292
293 public void setOrderByType(String orderByType) {
294 _orderByType = orderByType;
295
296 _iteratorURL.setParameter(_orderByTypeParam, _orderByType);
297 }
298
299 public void setOrderByTypeParam(String orderByTypeParam) {
300 _orderByTypeParam = orderByTypeParam;
301 }
302
303 public void setResults(List<R> results) {
304 _results = results;
305 }
306
307 public void setRowChecker(RowChecker rowChecker) {
308 _rowChecker = rowChecker;
309 }
310
311 public void setTotal(int total) {
312 _total = total;
313
314 if (((_cur - 1) * _delta) > _total) {
315 _cur = DEFAULT_CUR;
316 }
317
318 _calculateStartAndEnd();
319 }
320
321 private void _calculateStartAndEnd() {
322 _start = (_cur - 1) * _delta;
323 _end = _start + _delta;
324
325 _resultEnd = _end;
326
327 if (_resultEnd > _total) {
328 _resultEnd = _total;
329 }
330 }
331
332 private int _cur;
333 private String _curParam = DEFAULT_CUR_PARAM;
334 private int _delta = DEFAULT_DELTA;
335 private String _deltaParam = DEFAULT_DELTA_PARAM;
336 private DisplayTerms _displayTerms;
337 private String _emptyResultsMessage;
338 private int _end;
339 private List<String> _headerNames;
340 private boolean _hover = true;
341 private String _id;
342 private PortletURL _iteratorURL;
343 private int _maxPages = DEFAULT_MAX_PAGES;
344 private Map<String, String> _orderableHeaders;
345 private String _orderByCol;
346 private String _orderByColParam = DEFAULT_ORDER_BY_COL_PARAM;
347 private OrderByComparator _orderByComparator;
348 private String _orderByType;
349 private String _orderByTypeParam = DEFAULT_ORDER_BY_TYPE_PARAM;
350 private PortletRequest _portletRequest;
351 private int _resultEnd;
352 private List<ResultRow> _resultRows = new ArrayList<ResultRow>();
353 private List<R> _results = new ArrayList<R>();
354 private RowChecker _rowChecker;
355 private DisplayTerms _searchTerms;
356 private int _start;
357 private int _total;
358
359 }