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<>();
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(
240                    String path, String cssClass, ServletContext servletContext,
241                    HttpServletRequest request, HttpServletResponse response) {
242    
243                    JSPSearchEntry jspSearchEntry = new JSPSearchEntry();
244    
245                    jspSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
246                    jspSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
247                    jspSearchEntry.setCssClass(cssClass);
248                    jspSearchEntry.setPath(path);
249                    jspSearchEntry.setRequest(request);
250                    jspSearchEntry.setResponse(response);
251                    jspSearchEntry.setServletContext(servletContext);
252                    jspSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
253    
254                    _searchEntries.add(_searchEntries.size(), jspSearchEntry);
255            }
256    
257            @Override
258            public void addJSP(String align, String valign, String path) {
259                    addJSP(
260                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
261                            path);
262            }
263    
264            @Override
265            public void addJSP(
266                    String align, String valign, String path, ServletContext servletContext,
267                    HttpServletRequest request, HttpServletResponse response) {
268    
269                    addJSP(
270                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
271                            path, servletContext, request, response);
272            }
273    
274            @Override
275            public void addSearchEntry(int index, SearchEntry searchEntry) {
276                    _searchEntries.add(index, searchEntry);
277            }
278    
279            @Override
280            public void addSearchEntry(SearchEntry searchEntry) {
281                    _searchEntries.add(searchEntry);
282            }
283    
284            @Override
285            public void addStatus(int status) {
286                    addStatus(_searchEntries.size(), status, 0, null, null);
287            }
288    
289            @Override
290            public void addStatus(
291                    int index, int status, long statusByUserId, Date statusDate,
292                    String href) {
293    
294                    StatusSearchEntry statusSearchEntry = new StatusSearchEntry();
295    
296                    statusSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
297                    statusSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
298                    statusSearchEntry.setHref(href);
299                    statusSearchEntry.setStatus(status);
300                    statusSearchEntry.setStatusDate(statusDate);
301                    statusSearchEntry.setStatusByUserId(statusByUserId);
302                    statusSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
303    
304                    _searchEntries.add(index, statusSearchEntry);
305            }
306    
307            @Override
308            public void addStatus(
309                    int index, int status, String href, ServletContext servletContext,
310                    HttpServletRequest request, HttpServletResponse response) {
311    
312                    StatusSearchEntry statusSearchEntry = new StatusSearchEntry();
313    
314                    statusSearchEntry.setAlign(SearchEntry.DEFAULT_ALIGN);
315                    statusSearchEntry.setColspan(SearchEntry.DEFAULT_COLSPAN);
316                    statusSearchEntry.setHref(href);
317                    statusSearchEntry.setRequest(request);
318                    statusSearchEntry.setResponse(response);
319                    statusSearchEntry.setServletContext(servletContext);
320                    statusSearchEntry.setStatus(status);
321                    statusSearchEntry.setValign(SearchEntry.DEFAULT_VALIGN);
322    
323                    _searchEntries.add(index, statusSearchEntry);
324            }
325    
326            @Override
327            public void addStatus(int status, long statusByUserId, Date statusDate) {
328                    addStatus(
329                            _searchEntries.size(), status, statusByUserId, statusDate, null);
330            }
331    
332            @Override
333            public void addStatus(
334                    int status, long statusByUserId, Date statusDate,
335                    PortletURL portletURL) {
336    
337                    if (portletURL != null) {
338                            addStatus(
339                                    _searchEntries.size(), status, statusByUserId, statusDate,
340                                    portletURL.toString());
341                    }
342                    else {
343                            addStatus(
344                                    _searchEntries.size(), status, statusByUserId, statusDate,
345                                    null);
346                    }
347            }
348    
349            @Override
350            public void addStatus(
351                    int status, long statusByUserId, Date statusDate, String href) {
352    
353                    addStatus(
354                            _searchEntries.size(), status, statusByUserId, statusDate, href);
355            }
356    
357            @Override
358            public void addStatus(int status, PortletURL portletURL) {
359                    if (portletURL != null) {
360                            addStatus(
361                                    _searchEntries.size(), status, 0, null, portletURL.toString());
362                    }
363                    else {
364                            addStatus(_searchEntries.size(), status, 0, null, null);
365                    }
366            }
367    
368            @Override
369            public void addStatus(int status, String href) {
370                    addStatus(_searchEntries.size(), status, 0, null, href);
371            }
372    
373            @Override
374            public void addText(int index, String name) {
375                    addText(
376                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
377                            SearchEntry.DEFAULT_COLSPAN, name);
378            }
379    
380            @Override
381            public void addText(int index, String name, PortletURL portletURL) {
382                    if (portletURL == null) {
383                            addText(index, name);
384                    }
385                    else {
386                            addText(index, name, portletURL.toString());
387                    }
388            }
389    
390            @Override
391            public void addText(int index, String name, String href) {
392                    addText(
393                            index, SearchEntry.DEFAULT_ALIGN, SearchEntry.DEFAULT_VALIGN,
394                            SearchEntry.DEFAULT_COLSPAN, name, href);
395            }
396    
397            @Override
398            public void addText(
399                    int index, String align, String valign, int colspan, String name) {
400    
401                    TextSearchEntry textSearchEntry = new TextSearchEntry();
402    
403                    textSearchEntry.setAlign(align);
404                    textSearchEntry.setColspan(colspan);
405                    textSearchEntry.setName(name);
406                    textSearchEntry.setValign(valign);
407    
408                    _searchEntries.add(index, textSearchEntry);
409            }
410    
411            @Override
412            public void addText(
413                    int index, String align, String valign, int colspan, String name,
414                    PortletURL portletURL) {
415    
416                    if (portletURL == null) {
417                            addText(index, align, valign, colspan, name);
418                    }
419                    else {
420                            addText(index, align, valign, colspan, name, portletURL.toString());
421                    }
422            }
423    
424            @Override
425            public void addText(
426                    int index, String align, String valign, int colspan, String name,
427                    String href) {
428    
429                    if (_restricted) {
430                            href = null;
431                    }
432    
433                    TextSearchEntry textSearchEntry = new TextSearchEntry();
434    
435                    textSearchEntry.setAlign(align);
436                    textSearchEntry.setColspan(colspan);
437                    textSearchEntry.setHref(href);
438                    textSearchEntry.setName(name);
439                    textSearchEntry.setValign(valign);
440    
441                    _searchEntries.add(index, textSearchEntry);
442            }
443    
444            public void addText(int index, TextSearchEntry searchEntry) {
445                    if (_restricted) {
446                            searchEntry.setHref(null);
447                    }
448    
449                    _searchEntries.add(index, searchEntry);
450            }
451    
452            @Override
453            public void addText(String name) {
454                    addText(_searchEntries.size(), name);
455            }
456    
457            @Override
458            public void addText(String name, PortletURL portletURL) {
459                    if (portletURL == null) {
460                            addText(name);
461                    }
462                    else {
463                            addText(name, portletURL.toString());
464                    }
465            }
466    
467            @Override
468            public void addText(String name, String href) {
469                    addText(_searchEntries.size(), name, href);
470            }
471    
472            @Override
473            public void addText(String align, String valign, int colspan, String name) {
474                    addText(_searchEntries.size(), align, valign, colspan, name);
475            }
476    
477            @Override
478            public void addText(
479                    String align, String valign, int colspan, String name,
480                    PortletURL portletURL) {
481    
482                    if (portletURL == null) {
483                            addText(align, valign, colspan, name);
484                    }
485                    else {
486                            addText(align, valign, colspan, name, portletURL.toString());
487                    }
488            }
489    
490            @Override
491            public void addText(
492                    String align, String valign, int colspan, String name, String href) {
493    
494                    addText(_searchEntries.size(), align, valign, colspan, name, href);
495            }
496    
497            @Override
498            public void addText(String align, String valign, String name) {
499                    addText(
500                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
501                            name);
502            }
503    
504            @Override
505            public void addText(
506                    String align, String valign, String name, PortletURL portletURL) {
507    
508                    addText(align, valign, SearchEntry.DEFAULT_COLSPAN, name, portletURL);
509            }
510    
511            @Override
512            public void addText(String align, String valign, String name, String href) {
513                    addText(
514                            _searchEntries.size(), align, valign, SearchEntry.DEFAULT_COLSPAN,
515                            name, href);
516            }
517    
518            public void addText(TextSearchEntry searchEntry) {
519                    if (_restricted) {
520                            searchEntry.setHref(null);
521                    }
522    
523                    _searchEntries.add(_searchEntries.size(), searchEntry);
524            }
525    
526            @Override
527            public String getClassHoverName() {
528                    return _classHoverName;
529            }
530    
531            @Override
532            public String getClassName() {
533                    return _className;
534            }
535    
536            @Override
537            public Map<String, Object> getData() {
538                    return _data;
539            }
540    
541            @Override
542            public List<SearchEntry> getEntries() {
543                    return _searchEntries;
544            }
545    
546            @Override
547            public Object getObject() {
548                    return _obj;
549            }
550    
551            @Override
552            public Object getParameter(String param) {
553                    if (_params == null) {
554                            _params = new HashMap<>();
555                    }
556    
557                    return _params.get(param);
558            }
559    
560            @Override
561            public int getPos() {
562                    return _pos;
563            }
564    
565            @Override
566            public String getPrimaryKey() {
567                    return _primaryKey;
568            }
569    
570            @Override
571            public String getRowId() {
572                    return _rowId;
573            }
574    
575            @Override
576            public boolean isBold() {
577                    return _bold;
578            }
579    
580            @Override
581            public boolean isRestricted() {
582                    return _restricted;
583            }
584    
585            @Override
586            public boolean isSkip() {
587                    return _skip;
588            }
589    
590            @Override
591            public void removeSearchEntry(int pos) {
592                    _searchEntries.remove(pos);
593            }
594    
595            @Override
596            public void setBold(boolean bold) {
597                    _bold = bold;
598            }
599    
600            @Override
601            public void setClassHoverName(String classHoverName) {
602                    _classHoverName = classHoverName;
603            }
604    
605            @Override
606            public void setClassName(String className) {
607                    _className = className;
608            }
609    
610            @Override
611            public void setData(Map<String, Object> data) {
612                    _data = data;
613            }
614    
615            @Override
616            public void setObject(Object obj) {
617                    _obj = obj;
618            }
619    
620            @Override
621            public void setParameter(String param, Object value) {
622                    if (_params == null) {
623                            _params = new HashMap<>();
624                    }
625    
626                    _params.put(param, value);
627            }
628    
629            @Override
630            public void setPrimaryKey(String primaryKey) {
631                    _primaryKey = primaryKey;
632            }
633    
634            @Override
635            public void setRestricted(boolean restricted) {
636                    _restricted = restricted;
637            }
638    
639            @Override
640            public void setRowId(String rowId) {
641                    _rowId = rowId;
642            }
643    
644            @Override
645            public void setSkip(boolean skip) {
646                    _skip = skip;
647            }
648    
649            private boolean _bold;
650            private String _classHoverName;
651            private String _className;
652            private Map<String, Object> _data;
653            private Object _obj;
654            private Map<String, Object> _params;
655            private final int _pos;
656            private String _primaryKey;
657            private boolean _restricted;
658            private String _rowId;
659            private final List<SearchEntry> _searchEntries;
660            private boolean _skip;
661    
662    }