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