001    /**
002     * Copyright (c) 2000-present 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.taglib.search;
016    
017    import com.liferay.portal.kernel.dao.search.SearchEntry;
018    
019    import java.util.ArrayList;
020    import java.util.Date;
021    import java.util.HashMap;
022    import java.util.List;
023    import java.util.Map;
024    
025    import javax.portlet.PortletURL;
026    
027    import javax.servlet.ServletContext;
028    import javax.servlet.http.HttpServletRequest;
029    import javax.servlet.http.HttpServletResponse;
030    
031    /**
032     * @author Brian Wing Shun Chan
033     */
034    public class ResultRow
035            implements com.liferay.portal.kernel.dao.search.ResultRow {
036    
037            public ResultRow(Object obj, long primaryKey, int pos) {
038                    this(obj, String.valueOf(primaryKey), pos);
039            }
040    
041            public ResultRow(Object obj, long primaryKey, int pos, boolean bold) {
042                    this(obj, String.valueOf(primaryKey), pos, bold);
043            }
044    
045            public ResultRow(Object obj, String primaryKey, int pos) {
046                    this(obj, primaryKey, pos, false);
047            }
048    
049            public ResultRow(Object obj, String primaryKey, int pos, boolean bold) {
050                    this(String.valueOf(pos + 1), obj, primaryKey, pos, bold);
051            }
052    
053            public ResultRow(
054                    String rowId, Object obj, String primaryKey, int pos, boolean bold) {
055    
056                    _rowId = rowId;
057                    _obj = obj;
058                    _primaryKey = primaryKey;
059                    _pos = pos;
060                    _bold = bold;
061                    _searchEntries = new ArrayList<SearchEntry>();
062            }
063    
064            @Override
065            public void addButton(int index, String name, String href) {
066                    addButton(
067                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
068                            SearchEntry.DEFAULT_COLSPAN, name, href);
069            }
070    
071            @Override
072            public void addButton(
073                    int index, String align, String valign, int colspan, String name,
074                    String href) {
075    
076                    if (_restricted) {
077                            href = null;
078                    }
079    
080                    ButtonSearchEntry buttonSearchEntry = new ButtonSearchEntry();
081    
082                    buttonSearchEntry.setAlign(align);
083                    buttonSearchEntry.setColspan(colspan);
084                    buttonSearchEntry.setHref(href);
085                    buttonSearchEntry.setName(name);
086                    buttonSearchEntry.setValign(valign);
087    
088                    _searchEntries.add(index, buttonSearchEntry);
089            }
090    
091            @Override
092            public void addButton(String name, String href) {
093                    addButton(_searchEntries.size(), name, href);
094            }
095    
096            @Override
097            public void addButton(
098                    String align, String valign, int colspan, String name, String href) {
099    
100                    addButton(_searchEntries.size(), align, valign, colspan, name, href);
101            }
102    
103            @Override
104            public void addButton(
105                    String align, String valign, String name, String href) {
106    
107                    addButton(
108                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
109                            name, href);
110            }
111    
112            @Override
113            public void addDate(Date date) {
114                    addDate(_searchEntries.size(), date, null);
115            }
116    
117            @Override
118            public void addDate(Date date, PortletURL portletURL) {
119                    if (portletURL != null) {
120                            addDate(_searchEntries.size(), date, portletURL.toString());
121                    }
122                    else {
123                            addDate(_searchEntries.size(), date, null);
124                    }
125            }
126    
127            @Override
128            public void addDate(Date date, String href) {
129                    addDate(_searchEntries.size(), date, null);
130            }
131    
132            @Override
133            public void addDate(int index, Date date, String href) {
134                    DateSearchEntry dateSearchEntry = new DateSearchEntry();
135    
136                    dateSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
137                    dateSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
138                    dateSearchEntry.setDate(date);
139                    dateSearchEntry.setHref(href);
140                    dateSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
141    
142                    _searchEntries.add(index, dateSearchEntry);
143            }
144    
145            @Override
146            public void addJSP(int index, String path) {
147                    addJSP(
148                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
149                            SearchEntry.DEFAULT_COLSPAN, path);
150            }
151    
152            @Override
153            public void addJSP(
154                    int index, String path, ServletContext servletContext,
155                    HttpServletRequest request, HttpServletResponse response) {
156    
157                    addJSP(
158                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
159                            SearchEntry.DEFAULT_COLSPAN, path, servletContext, request,
160                            response);
161            }
162    
163            @Override
164            public void addJSP(
165                    int index, String align, String valign, int colspan, String path) {
166    
167                    JSPSearchEntry jspSearchEntry = new JSPSearchEntry();
168    
169                    jspSearchEntry.setAlign(align);
170                    jspSearchEntry.setColspan(colspan);
171                    jspSearchEntry.setPath(path);
172                    jspSearchEntry.setValign(valign);
173    
174                    _searchEntries.add(index, jspSearchEntry);
175            }
176    
177            @Override
178            public void addJSP(
179                    int index, String align, String valign, int colspan, String path,
180                    ServletContext servletContext, HttpServletRequest request,
181                    HttpServletResponse response) {
182    
183                    JSPSearchEntry jspSearchEntry = new JSPSearchEntry();
184    
185                    jspSearchEntry.setAlign(align);
186                    jspSearchEntry.setColspan(colspan);
187                    jspSearchEntry.setPath(path);
188                    jspSearchEntry.setRequest(request);
189                    jspSearchEntry.setResponse(response);
190                    jspSearchEntry.setServletContext(servletContext);
191                    jspSearchEntry.setValign(valign);
192    
193                    _searchEntries.add(index, jspSearchEntry);
194            }
195    
196            @Override
197            public void addJSP(String path) {
198                    addJSP(_searchEntries.size(), path);
199            }
200    
201            @Override
202            public void addJSP(
203                    String path, ServletContext servletContext, HttpServletRequest request,
204                    HttpServletResponse response) {
205    
206                    addJSP(_searchEntries.size(), path, servletContext, request, response);
207            }
208    
209            @Override
210            public void addJSP(String path, String cssClass) {
211                    JSPSearchEntry jspSearchEntry = new JSPSearchEntry();
212    
213                    jspSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
214                    jspSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
215                    jspSearchEntry.setCssClass(cssClass);
216                    jspSearchEntry.setPath(path);
217                    jspSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
218    
219                    _searchEntries.add(_searchEntries.size(), jspSearchEntry);
220            }
221    
222            @Override
223            public void addJSP(String align, String valign, int colspan, String path) {
224                    addJSP(_searchEntries.size(), align, valign, colspan, path);
225            }
226    
227            @Override
228            public void addJSP(
229                    String align, String valign, int colspan, String path,
230                    ServletContext servletContext, HttpServletRequest request,
231                    HttpServletResponse response) {
232    
233                    addJSP(
234                            _searchEntries.size(), align, valign, colspan, path, servletContext,
235                            request, response);
236            }
237    
238            @Override
239            public void addJSP(String align, String valign, String path) {
240                    addJSP(
241                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
242                            path);
243            }
244    
245            @Override
246            public void addJSP(
247                    String align, String valign, String path, ServletContext servletContext,
248                    HttpServletRequest request, HttpServletResponse response) {
249    
250                    addJSP(
251                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
252                            path, servletContext, request, response);
253            }
254    
255            @Override
256            public void addSearchEntry(int index, SearchEntry searchEntry) {
257                    _searchEntries.add(index, searchEntry);
258            }
259    
260            @Override
261            public void addSearchEntry(SearchEntry searchEntry) {
262                    _searchEntries.add(searchEntry);
263            }
264    
265            @Override
266            public void addStatus(int status) {
267                    addStatus(_searchEntries.size(), status, 0, null, null);
268            }
269    
270            @Override
271            public void addStatus(
272                    int index, int status, long statusByUserId, Date statusDate,
273                    String href) {
274    
275                    StatusSearchEntry statusSearchEntry = new StatusSearchEntry();
276    
277                    statusSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
278                    statusSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
279                    statusSearchEntry.setHref(href);
280                    statusSearchEntry.setStatus(status);
281                    statusSearchEntry.setStatusDate(statusDate);
282                    statusSearchEntry.setStatusByUserId(statusByUserId);
283                    statusSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
284    
285                    _searchEntries.add(index, statusSearchEntry);
286            }
287    
288            @Override
289            public void addStatus(
290                    int index, int status, String href, ServletContext servletContext,
291                    HttpServletRequest request, HttpServletResponse response) {
292    
293                    StatusSearchEntry statusSearchEntry = new StatusSearchEntry();
294    
295                    statusSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
296                    statusSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
297                    statusSearchEntry.setHref(href);
298                    statusSearchEntry.setRequest(request);
299                    statusSearchEntry.setResponse(response);
300                    statusSearchEntry.setServletContext(servletContext);
301                    statusSearchEntry.setStatus(status);
302                    statusSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
303    
304                    _searchEntries.add(index, statusSearchEntry);
305            }
306    
307            @Override
308            public void addStatus(int status, long statusByUserId, Date statusDate) {
309                    addStatus(
310                            _searchEntries.size(), status, statusByUserId, statusDate, null);
311            }
312    
313            @Override
314            public void addStatus(
315                    int status, long statusByUserId, Date statusDate,
316                    PortletURL portletURL) {
317    
318                    if (portletURL != null) {
319                            addStatus(
320                                    _searchEntries.size(), status, statusByUserId, statusDate,
321                                    portletURL.toString());
322                    }
323                    else {
324                            addStatus(
325                                    _searchEntries.size(), status, statusByUserId, statusDate,
326                                    null);
327                    }
328            }
329    
330            @Override
331            public void addStatus(
332                    int status, long statusByUserId, Date statusDate, String href) {
333    
334                    addStatus(
335                            _searchEntries.size(), status, statusByUserId, statusDate, href);
336            }
337    
338            @Override
339            public void addStatus(int status, PortletURL portletURL) {
340                    if (portletURL != null) {
341                            addStatus(
342                                    _searchEntries.size(), status, 0, null, portletURL.toString());
343                    }
344                    else {
345                            addStatus(_searchEntries.size(), status, 0, null, null);
346                    }
347            }
348    
349            @Override
350            public void addStatus(int status, String href) {
351                    addStatus(_searchEntries.size(), status, 0, null, href);
352            }
353    
354            @Override
355            public void addText(int index, String name) {
356                    addText(
357                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
358                            SearchEntry.DEFAULT_COLSPAN, name);
359            }
360    
361            @Override
362            public void addText(int index, String name, PortletURL portletURL) {
363                    if (portletURL == null) {
364                            addText(index, name);
365                    }
366                    else {
367                            addText(index, name, portletURL.toString());
368                    }
369            }
370    
371            @Override
372            public void addText(int index, String name, String href) {
373                    addText(
374                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
375                            SearchEntry.DEFAULT_COLSPAN, name, href);
376            }
377    
378            @Override
379            public void addText(
380                    int index, String align, String valign, int colspan, String name) {
381    
382                    TextSearchEntry textSearchEntry = new TextSearchEntry();
383    
384                    textSearchEntry.setAlign(align);
385                    textSearchEntry.setColspan(colspan);
386                    textSearchEntry.setName(name);
387                    textSearchEntry.setValign(valign);
388    
389                    _searchEntries.add(index, textSearchEntry);
390            }
391    
392            @Override
393            public void addText(
394                    int index, String align, String valign, int colspan, String name,
395                    PortletURL portletURL) {
396    
397                    if (portletURL == null) {
398                            addText(index, align, valign, colspan, name);
399                    }
400                    else {
401                            addText(index, align, valign, colspan, name, portletURL.toString());
402                    }
403            }
404    
405            @Override
406            public void addText(
407                    int index, String align, String valign, int colspan, String name,
408                    String href) {
409    
410                    if (_restricted) {
411                            href = null;
412                    }
413    
414                    TextSearchEntry textSearchEntry = new TextSearchEntry();
415    
416                    textSearchEntry.setAlign(align);
417                    textSearchEntry.setColspan(colspan);
418                    textSearchEntry.setHref(href);
419                    textSearchEntry.setName(name);
420                    textSearchEntry.setValign(valign);
421    
422                    _searchEntries.add(index, textSearchEntry);
423            }
424    
425            public void addText(int index, TextSearchEntry searchEntry) {
426                    if (_restricted) {
427                            searchEntry.setHref(null);
428                    }
429    
430                    _searchEntries.add(index, searchEntry);
431            }
432    
433            @Override
434            public void addText(String name) {
435                    addText(_searchEntries.size(), name);
436            }
437    
438            @Override
439            public void addText(String name, PortletURL portletURL) {
440                    if (portletURL == null) {
441                            addText(name);
442                    }
443                    else {
444                            addText(name, portletURL.toString());
445                    }
446            }
447    
448            @Override
449            public void addText(String name, String href) {
450                    addText(_searchEntries.size(), name, href);
451            }
452    
453            @Override
454            public void addText(String align, String valign, int colspan, String name) {
455                    addText(_searchEntries.size(), align, valign, colspan, name);
456            }
457    
458            @Override
459            public void addText(
460                    String align, String valign, int colspan, String name,
461                    PortletURL portletURL) {
462    
463                    if (portletURL == null) {
464                            addText(align, valign, colspan, name);
465                    }
466                    else {
467                            addText(align, valign, colspan, name, portletURL.toString());
468                    }
469            }
470    
471            @Override
472            public void addText(
473                    String align, String valign, int colspan, String name, String href) {
474    
475                    addText(_searchEntries.size(), align, valign, colspan, name, href);
476            }
477    
478            @Override
479            public void addText(String align, String valign, String name) {
480                    addText(
481                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
482                            name);
483            }
484    
485            @Override
486            public void addText(
487                    String align, String valign, String name, PortletURL portletURL) {
488    
489                    addText(align, valign, SearchEntry.DEFAULT_COLSPAN, name, portletURL);
490            }
491    
492            @Override
493            public void addText(String align, String valign, String name, String href) {
494                    addText(
495                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
496                            name, href);
497            }
498    
499            public void addText(TextSearchEntry searchEntry) {
500                    if (_restricted) {
501                            searchEntry.setHref(null);
502                    }
503    
504                    _searchEntries.add(_searchEntries.size(), searchEntry);
505            }
506    
507            @Override
508            public String getClassHoverName() {
509                    return _classHoverName;
510            }
511    
512            @Override
513            public String getClassName() {
514                    return _className;
515            }
516    
517            @Override
518            public Map<String, Object> getData() {
519                    return _data;
520            }
521    
522            @Override
523            public List<SearchEntry> getEntries() {
524                    return _searchEntries;
525            }
526    
527            @Override
528            public Object getObject() {
529                    return _obj;
530            }
531    
532            @Override
533            public Object getParameter(String param) {
534                    if (_params == null) {
535                            _params = new HashMap<String, Object>();
536                    }
537    
538                    return _params.get(param);
539            }
540    
541            @Override
542            public int getPos() {
543                    return _pos;
544            }
545    
546            @Override
547            public String getPrimaryKey() {
548                    return _primaryKey;
549            }
550    
551            @Override
552            public String getRowId() {
553                    return _rowId;
554            }
555    
556            @Override
557            public boolean isBold() {
558                    return _bold;
559            }
560    
561            @Override
562            public boolean isRestricted() {
563                    return _restricted;
564            }
565    
566            @Override
567            public boolean isSkip() {
568                    return _skip;
569            }
570    
571            @Override
572            public void removeSearchEntry(int pos) {
573                    _searchEntries.remove(pos);
574            }
575    
576            @Override
577            public void setBold(boolean bold) {
578                    _bold = bold;
579            }
580    
581            @Override
582            public void setClassHoverName(String classHoverName) {
583                    _classHoverName = classHoverName;
584            }
585    
586            @Override
587            public void setClassName(String className) {
588                    _className = className;
589            }
590    
591            @Override
592            public void setData(Map<String, Object> data) {
593                    _data = data;
594            }
595    
596            @Override
597            public void setObject(Object obj) {
598                    _obj = obj;
599            }
600    
601            @Override
602            public void setParameter(String param, Object value) {
603                    if (_params == null) {
604                            _params = new HashMap<String, Object>();
605                    }
606    
607                    _params.put(param, value);
608            }
609    
610            @Override
611            public void setPrimaryKey(String primaryKey) {
612                    _primaryKey = primaryKey;
613            }
614    
615            @Override
616            public void setRestricted(boolean restricted) {
617                    _restricted = restricted;
618            }
619    
620            @Override
621            public void setRowId(String rowId) {
622                    _rowId = rowId;
623            }
624    
625            @Override
626            public void setSkip(boolean skip) {
627                    _skip = skip;
628            }
629    
630            private boolean _bold;
631            private String _classHoverName;
632            private String _className;
633            private Map<String, Object> _data;
634            private Object _obj;
635            private Map<String, Object> _params;
636            private final int _pos;
637            private String _primaryKey;
638            private boolean _restricted;
639            private String _rowId;
640            private final List<SearchEntry> _searchEntries;
641            private boolean _skip;
642    
643    }