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