/**
* 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.asset.kernel.model.AssetEntry;
import com.liferay.asset.kernel.model.AssetRenderer;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.asset.kernel.model.Renderer;
import com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ServerDetector;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.taglib.util.IncludeTag;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
/**
* @author Julio Camarero
*/
public class AssetDisplayTag extends IncludeTag {
@Override
public int doEndTag() throws JspException {
try {
callSetAttributes();
doInclude(null, false);
return EVAL_PAGE;
}
catch (Exception e) {
throw new JspException(e);
}
finally {
clearDynamicAttributes();
clearParams();
clearProperties();
cleanUpSetAttributes();
if (!ServerDetector.isResin()) {
setPage(null);
setUseCustomPage(true);
cleanUp();
}
}
}
public int getAbstractLength() {
return _abstractLength;
}
public AssetEntry getAssetEntry() {
return _assetEntry;
}
public AssetRendererFactory<?> getAssetRendererFactory() {
return _assetRendererFactory;
}
public String getClassName() {
return _className;
}
public long getClassPK() {
return _classPK;
}
public Renderer getRenderer() {
return _renderer;
}
public String getTemplate() {
return _template;
}
public String getViewURL() {
return _viewURL;
}
public boolean isShowComments() {
return _showComments;
}
public boolean isShowExtraInfo() {
return _showExtraInfo;
}
public boolean isShowHeader() {
return _showHeader;
}
public void setAbstractLength(int abstractLength) {
_abstractLength = abstractLength;
}
public void setAssetEntry(AssetEntry assetEntry) {
_assetEntry = assetEntry;
}
public void setAssetRenderer(AssetRenderer<?> assetRenderer) {
_renderer = assetRenderer;
}
public void setAssetRendererFactory(
AssetRendererFactory<?> assetRendererFactory) {
_assetRendererFactory = assetRendererFactory;
}
public void setClassName(String className) {
_className = className;
}
public void setClassPK(long classPK) {
_classPK = classPK;
}
public void setRenderer(Renderer renderer) {
_renderer = renderer;
}
public void setShowComments(boolean showComments) {
_showComments = showComments;
}
public void setShowExtraInfo(boolean showExtraInfo) {
_showExtraInfo = showExtraInfo;
}
public void setShowHeader(boolean showHeader) {
_showHeader = showHeader;
}
public void setTemplate(String template) {
_template = template;
}
public void setViewURL(String viewURL) {
_viewURL = viewURL;
}
@Override
protected void cleanUp() {
_abstractLength = 200;
_assetEntry = null;
_className = null;
_classPK = 0;
_page = null;
_renderer = null;
_showComments = false;
_showExtraInfo = false;
_showHeader = false;
_template = AssetRenderer.TEMPLATE_FULL_CONTENT;
_viewURL = null;
}
@Override
protected String getPage() {
return _page;
}
@Override
protected void includePage(String page, HttpServletResponse response)
throws IOException, ServletException {
try {
boolean include = _renderer.include(request, response, _template);
if (include) {
return;
}
}
catch (Exception e) {
_log.error(e);
}
super.includePage(
"/html/taglib/ui/asset_display/" + _template + ".jsp", response);
}
@Override
protected void setAttributes(HttpServletRequest request) {
request.setAttribute(
WebKeys.ASSET_ENTRY_ABSTRACT_LENGTH, _abstractLength);
AssetEntry assetEntry = _assetEntry;
if (assetEntry == null) {
if (Validator.isNotNull(_className) && (_classPK > 0)) {
assetEntry = AssetEntryLocalServiceUtil.fetchEntry(
_className, _classPK);
}
else if (_renderer != null) {
assetEntry = AssetEntryLocalServiceUtil.fetchEntry(
_renderer.getClassName(), _renderer.getClassPK());
}
}
request.setAttribute("liferay-ui:asset-display:assetEntry", assetEntry);
if ((_renderer == null) && (assetEntry != null)) {
_renderer = assetEntry.getAssetRenderer();
}
if (_renderer instanceof AssetRenderer) {
AssetRenderer<?> assetRenderer = (AssetRenderer<?>)_renderer;
request.setAttribute(WebKeys.ASSET_RENDERER, assetRenderer);
}
else {
request.setAttribute(
"liferay-ui:asset-display:renderer", _renderer);
}
AssetRendererFactory<?> assetRendererFactory = _assetRendererFactory;
if ((assetRendererFactory == null) && (assetEntry != null)) {
assetRendererFactory = assetEntry.getAssetRendererFactory();
}
if (assetRendererFactory != null) {
request.setAttribute(
WebKeys.ASSET_RENDERER_FACTORY, assetRendererFactory);
}
request.setAttribute(WebKeys.ASSET_ENTRY_VIEW_URL, _viewURL);
addParam("showComments", String.valueOf(_showComments));
addParam("showExtraInfo", String.valueOf(_showExtraInfo));
addParam("showHeader", String.valueOf(_showHeader));
}
private static final Log _log = LogFactoryUtil.getLog(
AssetDisplayTag.class);
private int _abstractLength = 200;
private AssetEntry _assetEntry;
private AssetRendererFactory<?> _assetRendererFactory;
private String _className;
private long _classPK;
private String _page;
private Renderer _renderer;
private boolean _showComments;
private boolean _showExtraInfo;
private boolean _showHeader;
private String _template = AssetRenderer.TEMPLATE_FULL_CONTENT;
private String _viewURL;
}