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