/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.taglib.ui;
import com.liferay.portal.kernel.dao.search.DisplayTerms;
import com.liferay.portal.kernel.dao.search.RowChecker;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.ListUtil;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.taglib.util.ParamAndPropertyAncestorTagImpl;
import java.util.List;
import javax.portlet.MimeResponse;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.PortletURL;
import javax.servlet.jsp.JspException;
/**
* @author Raymond Augé
* @author Roberto Díaz
*/
public class SearchContainerTag<R> extends ParamAndPropertyAncestorTagImpl {
@Override
public int doEndTag() {
pageContext.setAttribute(
_searchContainer.getTotalVar(), _searchContainer.getTotal());
_cssClass = StringPool.BLANK;
_curParam = SearchContainer.DEFAULT_CUR_PARAM;
_delta = SearchContainer.DEFAULT_DELTA;
_deltaConfigurable = SearchContainer.DEFAULT_DELTA_CONFIGURABLE;
_deltaParam = SearchContainer.DEFAULT_DELTA_PARAM;
_displayTerms = null;
_emptyResultsMessage = null;
_emptyResultsMessageCssClass = null;
_headerNames = null;
_id = null;
_iteratorURL = null;
_orderByCol = null;
_orderByColParam = SearchContainer.DEFAULT_ORDER_BY_COL_PARAM;
_orderByComparator = null;
_orderByType = null;
_orderByTypeParam = SearchContainer.DEFAULT_ORDER_BY_TYPE_PARAM;
_rowChecker = null;
_searchContainer = null;
_searchTerms = null;
_total = 0;
_totalVar = SearchContainer.DEFAULT_TOTAL_VAR;
_var = SearchContainer.DEFAULT_VAR;
return EVAL_PAGE;
}
@Override
public int doStartTag() throws JspException {
try {
PortletRequest portletRequest =
(PortletRequest)request.getAttribute(
JavaConstants.JAVAX_PORTLET_REQUEST);
PortletResponse portletResponse =
(PortletResponse)request.getAttribute(
JavaConstants.JAVAX_PORTLET_RESPONSE);
if (_iteratorURL == null) {
_iteratorURL =
((MimeResponse)portletResponse).createRenderURL();
}
if (_searchContainer == null) {
_searchContainer = new SearchContainer<>(
portletRequest, _displayTerms, _searchTerms, getCurParam(),
getDelta(), _iteratorURL, null, _emptyResultsMessage);
}
if (Validator.isNotNull(_cssClass)) {
_searchContainer.setCssClass(_cssClass);
}
_searchContainer.setDeltaConfigurable(_deltaConfigurable);
if (Validator.isNotNull(_emptyResultsMessage)) {
_searchContainer.setEmptyResultsMessage(_emptyResultsMessage);
}
if (Validator.isNotNull(_emptyResultsMessageCssClass)) {
_searchContainer.setEmptyResultsMessageCssClass(
_emptyResultsMessageCssClass);
}
if (_headerNames != null) {
_searchContainer.setHeaderNames(_headerNames);
}
if (Validator.isNotNull(_id)) {
_searchContainer.setId(_id);
}
if (Validator.isNotNull(_orderByColParam)) {
_searchContainer.setOrderByColParam(_orderByColParam);
}
if (Validator.isNotNull(_orderByCol)) {
_searchContainer.setOrderByCol(_orderByCol);
}
else {
String orderByCol = ParamUtil.getString(
request, _searchContainer.getOrderByColParam(), null);
if (orderByCol != null) {
_searchContainer.setOrderByCol(orderByCol);
}
}
if (_orderByComparator != null) {
_searchContainer.setOrderByComparator(_orderByComparator);
}
if (Validator.isNotNull(_orderByTypeParam)) {
_searchContainer.setOrderByTypeParam(_orderByTypeParam);
}
if (Validator.isNotNull(_orderByType)) {
_searchContainer.setOrderByType(_orderByType);
}
else {
String orderByType = ParamUtil.getString(
request, _searchContainer.getOrderByTypeParam(), null);
if (orderByType != null) {
_searchContainer.setOrderByType(orderByType);
}
}
if (_rowChecker != null) {
_searchContainer.setRowChecker(_rowChecker);
}
if (_total != 0) {
_searchContainer.setTotal(_total);
}
if (Validator.isNotNull(_totalVar)) {
_searchContainer.setTotalVar(_totalVar);
}
pageContext.setAttribute(
_searchContainer.getTotalVar(), _searchContainer.getTotal());
pageContext.setAttribute(_var, _searchContainer);
return EVAL_BODY_INCLUDE;
}
catch (Exception e) {
throw new JspException(e);
}
}
public String getCssClass() {
return _cssClass;
}
public String getCurParam() {
return _curParam;
}
public int getDelta() {
return _delta;
}
public String getDeltaParam() {
return _deltaParam;
}
public DisplayTerms getDisplayTerms() {
return _displayTerms;
}
public String getEmptyResultsMessage() {
return _emptyResultsMessage;
}
public String getEmptyResultsMessageCssClass() {
return _emptyResultsMessageCssClass;
}
public PortletURL getIteratorURL() {
return _iteratorURL;
}
public String getOrderByCol() {
return _orderByCol;
}
public String getOrderByColParam() {
return _orderByColParam;
}
public OrderByComparator<R> getOrderByComparator() {
return _orderByComparator;
}
public String getOrderByType() {
return _orderByType;
}
public String getOrderByTypeParam() {
return _orderByTypeParam;
}
public RowChecker getRowChecker() {
return _rowChecker;
}
public SearchContainer<R> getSearchContainer() {
return _searchContainer;
}
public DisplayTerms getSearchTerms() {
return _searchTerms;
}
public int getTotal() {
return _total;
}
public String getTotalVar() {
return _totalVar;
}
public String getVar() {
return _var;
}
public boolean isCompactEmptyResultsMessage() {
return _compactEmptyResultsMessage;
}
public boolean isDeltaConfigurable() {
return _deltaConfigurable;
}
public void setCompactEmptyResultsMessage(
boolean compactEmptyResultsMessage) {
_compactEmptyResultsMessage = compactEmptyResultsMessage;
}
public void setCssClass(String cssClass) {
_cssClass = cssClass;
}
public void setCurParam(String curParam) {
_curParam = curParam;
}
public void setDelta(int delta) {
_delta = delta;
}
public void setDeltaConfigurable(boolean deltaConfigurable) {
_deltaConfigurable = deltaConfigurable;
}
public void setDeltaParam(String deltaParam) {
_deltaParam = deltaParam;
}
public void setDisplayTerms(DisplayTerms displayTerms) {
_displayTerms = displayTerms;
}
public void setEmptyResultsMessage(String emptyResultsMessage) {
_emptyResultsMessage = emptyResultsMessage;
}
public void setEmptyResultsMessageCssClass(
String emptyResultsMessageCssClass) {
_emptyResultsMessageCssClass = emptyResultsMessageCssClass;
}
public void setHeaderNames(String headerNames) {
_headerNames = ListUtil.toList(StringUtil.split(headerNames));
}
public void setId(String id) {
_id = id;
}
public void setIteratorURL(PortletURL iteratorURL) {
_iteratorURL = iteratorURL;
}
public void setOrderByCol(String orderByCol) {
_orderByCol = orderByCol;
}
public void setOrderByColParam(String orderByColParam) {
_orderByColParam = orderByColParam;
}
public void setOrderByComparator(OrderByComparator<R> orderByComparator) {
_orderByComparator = orderByComparator;
}
public void setOrderByType(String orderByType) {
_orderByType = orderByType;
}
public void setOrderByTypeParam(String orderByTypeParam) {
_orderByTypeParam = orderByTypeParam;
}
public void setRowChecker(RowChecker rowChecker) {
_rowChecker = rowChecker;
}
public void setSearchContainer(SearchContainer<R> searchContainer) {
_searchContainer = searchContainer;
}
public void setSearchTerms(DisplayTerms searchTerms) {
_searchTerms = searchTerms;
}
public void setTotal(int total) {
_total = total;
}
public void setTotalVar(String totalVar) {
_totalVar = totalVar;
}
public void setVar(String var) {
_var = var;
}
private boolean _compactEmptyResultsMessage;
private String _cssClass = StringPool.BLANK;
private String _curParam = SearchContainer.DEFAULT_CUR_PARAM;
private int _delta = SearchContainer.DEFAULT_DELTA;
private boolean _deltaConfigurable =
SearchContainer.DEFAULT_DELTA_CONFIGURABLE;
private String _deltaParam = SearchContainer.DEFAULT_DELTA_PARAM;
private DisplayTerms _displayTerms;
private String _emptyResultsMessage;
private String _emptyResultsMessageCssClass;
private List<String> _headerNames;
private String _id;
private PortletURL _iteratorURL;
private String _orderByCol;
private String _orderByColParam =
SearchContainer.DEFAULT_ORDER_BY_COL_PARAM;
private OrderByComparator<R> _orderByComparator;
private String _orderByType;
private String _orderByTypeParam =
SearchContainer.DEFAULT_ORDER_BY_TYPE_PARAM;
private RowChecker _rowChecker;
private SearchContainer<R> _searchContainer;
private DisplayTerms _searchTerms;
private int _total;
private String _totalVar = SearchContainer.DEFAULT_TOTAL_VAR;
private String _var = SearchContainer.DEFAULT_VAR;
}