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