/**
* 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.dynamic.data.lists.form.web.internal.display.context;
import com.liferay.dynamic.data.lists.form.web.internal.display.context.util.DDLFormWebRequestHelper;
import com.liferay.dynamic.data.lists.form.web.internal.search.RecordSetSearch;
import com.liferay.dynamic.data.lists.model.DDLRecordSet;
import com.liferay.dynamic.data.lists.model.DDLRecordSetConstants;
import com.liferay.dynamic.data.lists.service.DDLRecordSetService;
import com.liferay.dynamic.data.lists.util.comparator.DDLRecordSetModifiedDateComparator;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.Validator;
import java.util.List;
import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
/**
* @author Jürgen Kappler
*/
public class DDLFormBrowserDisplayContext {
public DDLFormBrowserDisplayContext(
DDLRecordSetService ddlRecordSetService, RenderRequest renderRequest,
RenderResponse renderResponse) {
_ddlRecordSetService = ddlRecordSetService;
_renderRequest = renderRequest;
_renderResponse = renderResponse;
_request = PortalUtil.getHttpServletRequest(_renderRequest);
_ddlFormWebRequestHelper = new DDLFormWebRequestHelper(_request);
}
public String getDisplayStyle() {
if (Validator.isNotNull(_displayStyle)) {
return _displayStyle;
}
_displayStyle = ParamUtil.getString(_request, "displayStyle", "list");
return _displayStyle;
}
public String getEventName() {
if (Validator.isNotNull(_eventName)) {
return _eventName;
}
_eventName = ParamUtil.getString(
_request, "eventName",
_renderResponse.getNamespace() + "selectDDLForm");
return _eventName;
}
public String getKeywords() {
if (Validator.isNotNull(_keywords)) {
return _keywords;
}
_keywords = ParamUtil.getString(_request, "keywords");
return _keywords;
}
public String getOrderByCol() {
if (Validator.isNotNull(_orderByCol)) {
return _orderByCol;
}
_orderByCol = ParamUtil.getString(
_request, "orderByCol", "modified-date");
return _orderByCol;
}
public String getOrderByType() {
if (Validator.isNotNull(_orderByType)) {
return _orderByType;
}
_orderByType = ParamUtil.getString(_request, "orderByType", "asc");
return _orderByType;
}
public PortletURL getPortletURL() {
PortletURL portletURL = _renderResponse.createRenderURL();
portletURL.setParameter("mvcPath", "/browser/view.jsp");
portletURL.setParameter("displayStyle", getDisplayStyle());
portletURL.setParameter("eventName", getEventName());
portletURL.setParameter("orderByCol", getOrderByCol());
portletURL.setParameter("orderByType", getOrderByType());
if (Validator.isNotNull(getKeywords())) {
portletURL.setParameter("keywords", getKeywords());
}
return portletURL;
}
public RecordSetSearch getRecordSetSearch() throws PortalException {
if (_recordSetSearch != null) {
return _recordSetSearch;
}
String displayStyle = getDisplayStyle();
PortletURL portletURL = getPortletURL();
portletURL.setParameter("displayStyle", displayStyle);
RecordSetSearch recordSetSearch = new RecordSetSearch(
_renderRequest, portletURL);
String orderByCol = getOrderByCol();
String orderByType = getOrderByType();
OrderByComparator<DDLRecordSet> orderByComparator =
_getDDLRecordSetOrderByComparator(orderByType);
recordSetSearch.setOrderByCol(orderByCol);
recordSetSearch.setOrderByComparator(orderByComparator);
recordSetSearch.setOrderByType(orderByType);
if (recordSetSearch.isSearch()) {
recordSetSearch.setEmptyResultsMessage("no-forms-were-found");
}
else {
recordSetSearch.setEmptyResultsMessage("there-are-no-forms");
}
List<DDLRecordSet> results = _ddlRecordSetService.search(
_ddlFormWebRequestHelper.getCompanyId(),
_ddlFormWebRequestHelper.getScopeGroupId(), getKeywords(),
DDLRecordSetConstants.SCOPE_FORMS, recordSetSearch.getStart(),
recordSetSearch.getEnd(), recordSetSearch.getOrderByComparator());
recordSetSearch.setResults(results);
recordSetSearch.setTotal(_getRecordSetSearchTotal());
_recordSetSearch = recordSetSearch;
return _recordSetSearch;
}
public boolean isDisabledManagementBar() {
if (_getRecordSetSearchTotal() <= 0) {
return true;
}
return false;
}
private OrderByComparator<DDLRecordSet> _getDDLRecordSetOrderByComparator(
String orderByType) {
boolean orderByAsc = false;
if (orderByType.equals("asc")) {
orderByAsc = true;
}
OrderByComparator<DDLRecordSet> orderByComparator =
new DDLRecordSetModifiedDateComparator(orderByAsc);
return orderByComparator;
}
private int _getRecordSetSearchTotal() {
if (_recordSetSearchTotal != null) {
return _recordSetSearchTotal;
}
_recordSetSearchTotal = _ddlRecordSetService.searchCount(
_ddlFormWebRequestHelper.getCompanyId(),
_ddlFormWebRequestHelper.getScopeGroupId(), getKeywords(),
DDLRecordSetConstants.SCOPE_FORMS);
return _recordSetSearchTotal;
}
private final DDLFormWebRequestHelper _ddlFormWebRequestHelper;
private final DDLRecordSetService _ddlRecordSetService;
private String _displayStyle;
private String _eventName;
private String _keywords;
private String _orderByCol;
private String _orderByType;
private RecordSetSearch _recordSetSearch;
private Integer _recordSetSearchTotal;
private final RenderRequest _renderRequest;
private final RenderResponse _renderResponse;
private final HttpServletRequest _request;
}