/**
* 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.AssetRendererFactoryRegistryUtil;
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.service.AssetEntryLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.taglib.util.IncludeTag;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
/**
* @author Eudaldo Alonso
*/
public class AssetMetadataTag extends IncludeTag {
@Override
public int doEndTag() throws JspException {
if (_hasMetadata) {
return super.doEndTag();
}
return EVAL_PAGE;
}
@Override
public int doStartTag() throws JspException {
if (ArrayUtil.isEmpty(_metadataFields)) {
return SKIP_BODY;
}
_hasMetadata = true;
return super.doStartTag();
}
public String getClassName() {
return _className;
}
public long getClassPK() {
return _classPK;
}
public String[] getMetadataFields() {
return _metadataFields;
}
public boolean isFilterByMetadata() {
return _filterByMetadata;
}
public void setClassName(String className) {
_className = className;
}
public void setClassPK(long classPK) {
_classPK = classPK;
}
public void setFilterByMetadata(boolean filterByMetadata) {
_filterByMetadata = filterByMetadata;
}
public void setMetadataFields(String[] metadataFields) {
_metadataFields = metadataFields;
}
@Override
protected void cleanUp() {
_className = StringPool.BLANK;
_classPK = 0;
_filterByMetadata = false;
_hasMetadata = false;
_metadataFields = null;
}
@Override
protected String getPage() {
return _PAGE;
}
@Override
protected void setAttributes(HttpServletRequest request) {
AssetEntry assetEntry = AssetEntryLocalServiceUtil.fetchEntry(
_className, _classPK);
request.setAttribute(
"liferay-ui:asset-metadata:assetEntry", assetEntry);
AssetRendererFactory<?> assetRendererFactory =
AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
_className);
try {
AssetRenderer<?> assetRenderer =
assetRendererFactory.getAssetRenderer(_classPK);
request.setAttribute(
"liferay-ui:asset-metadata:assetRenderer", assetRenderer);
}
catch (PortalException pe) {
_log.error(pe, pe);
}
request.setAttribute("liferay-ui:asset-metadata:className", _className);
request.setAttribute("liferay-ui:asset-metadata:classPK", _classPK);
request.setAttribute(
"liferay-ui:asset-metadata:filterByMetadata", _filterByMetadata);
request.setAttribute(
"liferay-ui:asset-metadata:metadataFields", _metadataFields);
}
private static final String _PAGE =
"/html/taglib/ui/asset_metadata/page.jsp";
private static final Log _log = LogFactoryUtil.getLog(
AssetMetadataTag.class);
private String _className = StringPool.BLANK;
private long _classPK;
private boolean _filterByMetadata;
private boolean _hasMetadata;
private String[] _metadataFields;
}