001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.dao.search;
016    
017    import java.util.ArrayList;
018    import java.util.HashMap;
019    import java.util.List;
020    import java.util.Map;
021    
022    import javax.portlet.PortletURL;
023    
024    import javax.servlet.ServletContext;
025    import javax.servlet.http.HttpServletRequest;
026    import javax.servlet.http.HttpServletResponse;
027    
028    /**
029     * @author Brian Wing Shun Chan
030     */
031    public class ResultRow {
032    
033            public ResultRow(Object obj, long primaryKey, int pos) {
034                    this(obj, String.valueOf(primaryKey), pos);
035            }
036    
037            public ResultRow(Object obj, long primaryKey, int pos, boolean bold) {
038                    this(obj, String.valueOf(primaryKey), pos, bold);
039            }
040    
041            public ResultRow(Object obj, String primaryKey, int pos) {
042                    this(obj, primaryKey, pos, false);
043            }
044    
045            public ResultRow(Object obj, String primaryKey, int pos, boolean bold) {
046                    _obj = obj;
047                    _primaryKey = primaryKey;
048                    _pos = pos;
049                    _bold = bold;
050                    _entries = new ArrayList<SearchEntry>();
051            }
052    
053            public Object getObject() {
054                    return _obj;
055            }
056    
057            public void setObject(Object obj) {
058                    _obj = obj;
059            }
060    
061            public String getPrimaryKey() {
062                    return _primaryKey;
063            }
064    
065            public void setPrimaryKey(String primaryKey) {
066                    _primaryKey = primaryKey;
067            }
068    
069            public int getPos() {
070                    return _pos;
071            }
072    
073            public boolean isBold() {
074                    return _bold;
075            }
076    
077            public void setBold(boolean bold) {
078                    _bold = bold;
079            }
080    
081            public boolean isRestricted() {
082                    return _restricted;
083            }
084    
085            public void setRestricted(boolean restricted) {
086                    _restricted = restricted;
087            }
088    
089            public String getClassName() {
090                    return _className;
091            }
092    
093            public void setClassName(String className) {
094                    _className = className;
095            }
096    
097            public String getClassHoverName() {
098                    return _classHoverName;
099            }
100    
101            public void setClassHoverName(String classHoverName) {
102                    _classHoverName = classHoverName;
103            }
104    
105            public List<SearchEntry> getEntries() {
106                    return _entries;
107            }
108    
109            public Object getParameter(String param) {
110                    if (_params == null) {
111                            _params = new HashMap<String, Object>();
112                    }
113    
114                    return _params.get(param);
115            }
116    
117            public void setParameter(String param, Object value) {
118                    if (_params == null) {
119                            _params = new HashMap<String, Object>();
120                    }
121    
122                    _params.put(param, value);
123            }
124    
125            // Text with name
126    
127            public void addText(String name) {
128                    addText(_entries.size(), name);
129            }
130    
131            public void addText(int index, String name) {
132                    addText(
133                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
134                            SearchEntry.DEFAULT_COLSPAN, name);
135            }
136    
137            public void addText(String align, String valign, String name) {
138                    addText(
139                            _entries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN, name);
140            }
141    
142            public void addText(
143                    String align, String valign, int colspan, String name) {
144    
145                    addText(_entries.size(), align, valign, colspan, name);
146            }
147    
148            public void addText(
149                    int index, String align, String valign, int colspan, String name) {
150    
151                    _entries.add(
152                            index, new TextSearchEntry(align, valign, colspan, name));
153            }
154    
155            // Text with name and href
156    
157            public void addText(String name, String href) {
158                    addText(_entries.size(), name, href);
159            }
160    
161            public void addText(int index, String name, String href) {
162                    addText(
163                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
164                            SearchEntry.DEFAULT_COLSPAN, name, href);
165            }
166    
167            public void addText(String align, String valign, String name, String href) {
168                    addText(
169                            _entries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN, name,
170                            href);
171            }
172    
173            public void addText(
174                    String align, String valign, int colspan, String name, String href) {
175    
176                    addText(_entries.size(), align, valign, colspan, name, href);
177            }
178    
179            public void addText(
180                    int index, String align, String valign, int colspan, String name,
181                    String href) {
182    
183                    if (_restricted) {
184                            href = null;
185                    }
186    
187                    _entries.add(
188                            index, new TextSearchEntry(align, valign, colspan, name, href));
189            }
190    
191            // Text with name and portlet URL
192    
193            public void addText(String name, PortletURL portletURL) {
194                    if (portletURL == null) {
195                            addText(name);
196                    }
197                    else {
198                            addText(name, portletURL.toString());
199                    }
200            }
201    
202            public void addText(int index, String name, PortletURL portletURL) {
203                    if (portletURL == null) {
204                            addText(index, name);
205                    }
206                    else {
207                            addText(index, name, portletURL.toString());
208                    }
209            }
210    
211            public void addText(
212                    String align, String valign, String name, PortletURL portletURL) {
213    
214                    addText(
215                            align, valign, SearchEntry.DEFAULT_COLSPAN, name, portletURL);
216            }
217    
218            public void addText(
219                    String align, String valign, int colspan, String name,
220                    PortletURL portletURL) {
221    
222                    if (portletURL == null) {
223                            addText(align, valign, colspan, name);
224                    }
225                    else {
226                            addText(align, valign, colspan, name, portletURL.toString());
227                    }
228            }
229    
230            public void addText(
231                    int index, String align, String valign, int colspan, String name,
232                    PortletURL portletURL) {
233    
234                    if (portletURL == null) {
235                            addText(index, align, valign, colspan, name);
236                    }
237                    else {
238                            addText(index, align, valign, colspan, name, portletURL.toString());
239                    }
240            }
241    
242            // Text with search entry
243    
244            public void addText(TextSearchEntry searchEntry) {
245                    if (_restricted) {
246                            searchEntry.setHref(null);
247                    }
248    
249                    _entries.add(_entries.size(), searchEntry);
250            }
251    
252            public void addText(int index, TextSearchEntry searchEntry) {
253                    if (_restricted) {
254                            searchEntry.setHref(null);
255                    }
256    
257                    _entries.add(index, searchEntry);
258            }
259    
260            // Button with name and href
261    
262            public void addButton(String name, String href) {
263                    addButton(_entries.size(), name, href);
264            }
265    
266            public void addButton(int index, String name, String href) {
267                    addButton(
268                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
269                            SearchEntry.DEFAULT_COLSPAN, name, href);
270            }
271    
272            public void addButton(
273                    String align, String valign, String name, String href) {
274    
275                    addButton(
276                            _entries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN, name,
277                            href);
278            }
279    
280            public void addButton(
281                    String align, String valign, int colspan, String name, String href) {
282    
283                    addButton(_entries.size(), align, valign, colspan, name, href);
284            }
285    
286            public void addButton(
287                    int index, String align, String valign, int colspan, String name,
288                    String href) {
289    
290                    if (_restricted) {
291                            href = null;
292                    }
293    
294                    _entries.add(
295                            index, new ButtonSearchEntry(align, valign, colspan, name, href));
296            }
297    
298            // JSP
299    
300            public void addJSP(String path) {
301                    addJSP(_entries.size(), path);
302            }
303    
304            public void addJSP(String align, String valign, String path) {
305                    addJSP(
306                            _entries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN, path);
307            }
308    
309            public void addJSP(String align, String valign, int colspan, String path) {
310                    addJSP(_entries.size(), align, valign, colspan, path);
311            }
312    
313            public void addJSP(int index, String path) {
314                    addJSP(
315                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
316                            SearchEntry.DEFAULT_COLSPAN, path);
317            }
318    
319            public void addJSP(
320                    int index, String align, String valign, int colspan, String path) {
321    
322                    _entries.add(index, new JSPSearchEntry(align, valign, colspan, path));
323            }
324    
325            // JSP with portlet context
326    
327            public void addJSP(
328                    String path, ServletContext servletContext, HttpServletRequest request,
329                    HttpServletResponse response) {
330    
331                    addJSP(_entries.size(), path, servletContext, request, response);
332            }
333    
334            public void addJSP(
335                    String align, String valign, String path, ServletContext servletContext,
336                    HttpServletRequest request, HttpServletResponse response) {
337    
338                    addJSP(
339                            _entries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN, path,
340                            servletContext, request, response);
341            }
342    
343            public void addJSP(
344                    String align, String valign, int colspan, String path,
345                    ServletContext servletContext, HttpServletRequest request,
346                    HttpServletResponse response) {
347    
348                    addJSP(
349                            _entries.size(), align, valign, colspan, path, servletContext,
350                            request, response);
351            }
352    
353            public void addJSP(
354                    int index, String path, ServletContext servletContext,
355                    HttpServletRequest request, HttpServletResponse response) {
356    
357                    addJSP(
358                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
359                            SearchEntry.DEFAULT_COLSPAN, path, servletContext, request,
360                            response);
361            }
362    
363            public void addJSP(
364                    int index, String align, String valign, int colspan, String path,
365                    ServletContext servletContext, HttpServletRequest request,
366                    HttpServletResponse response) {
367    
368                    _entries.add(
369                            index,
370                            new JSPSearchEntry(
371                                    align, valign, colspan, path, servletContext, request,
372                                    response));
373            }
374    
375            // Score
376    
377            public void addScore(float score) {
378                    addScore(_entries.size(), score);
379            }
380    
381            public void addScore(int index, float score) {
382                    _entries.add(index, new ScoreSearchEntry(score));
383            }
384    
385            private Object _obj;
386            private String _primaryKey;
387            private int _pos;
388            private boolean _bold;
389            private boolean _restricted;
390            private String _className;
391            private String _classHoverName;
392            private List<SearchEntry> _entries;
393            private Map<String, Object> _params;
394    
395    }