001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portal.kernel.workflow;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.log.Log;
020    import com.liferay.portal.kernel.log.LogFactoryUtil;
021    import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
022    import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
023    import com.liferay.portal.kernel.util.WebKeys;
024    import com.liferay.portal.service.WorkflowInstanceLinkLocalServiceUtil;
025    import com.liferay.portal.theme.ThemeDisplay;
026    import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
027    import com.liferay.portlet.asset.model.AssetRenderer;
028    import com.liferay.portlet.asset.model.AssetRendererFactory;
029    
030    import java.io.Serializable;
031    
032    import java.util.Map;
033    
034    import javax.portlet.PortletURL;
035    import javax.portlet.RenderRequest;
036    import javax.portlet.RenderResponse;
037    
038    /**
039     * @author Bruno Farache
040     * @author Marcellus Tavares
041     * @author Juan Fernández
042     * @author Julio Camarero
043     * @author Jorge Ferrer
044     */
045    public abstract class BaseWorkflowHandler implements WorkflowHandler {
046    
047            public AssetRenderer getAssetRenderer(long classPK)
048                    throws PortalException, SystemException {
049    
050                    AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
051    
052                    if (assetRendererFactory != null) {
053                            return assetRendererFactory.getAssetRenderer(
054                                    classPK, AssetRendererFactory.TYPE_LATEST);
055                    }
056                    else {
057                            return null;
058                    }
059            }
060    
061            public AssetRendererFactory getAssetRendererFactory() {
062                    return AssetRendererFactoryRegistryUtil.
063                            getAssetRendererFactoryByClassName(getClassName());
064            }
065    
066            public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
067                    ThemeDisplay themeDisplay =
068                            (ThemeDisplay)liferayPortletRequest.getAttribute(
069                                    WebKeys.THEME_DISPLAY);
070    
071                    return getIconPath(themeDisplay);
072            }
073    
074            public String getSummary(long classPK) {
075                    try {
076                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
077    
078                            if (assetRenderer != null) {
079                                    return assetRenderer.getSummary();
080                            }
081                    }
082                    catch (Exception e) {
083                            if (_log.isWarnEnabled()) {
084                                    _log.warn(e, e);
085                            }
086                    }
087    
088                    return null;
089            }
090    
091            public String getTitle(long classPK) {
092                    try {
093                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
094    
095                            if (assetRenderer != null) {
096                                    return assetRenderer.getTitle();
097                            }
098                    }
099                    catch (Exception e) {
100                            if (_log.isWarnEnabled()) {
101                                    _log.warn(e, e);
102                            }
103                    }
104    
105                    return null;
106            }
107    
108            public PortletURL getURLEdit(
109                    long classPK, LiferayPortletRequest liferayPortletRequest,
110                    LiferayPortletResponse liferayPortletResponse) {
111    
112                    try {
113                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
114    
115                            if (assetRenderer != null) {
116                                    return assetRenderer.getURLEdit(
117                                            liferayPortletRequest, liferayPortletResponse);
118                            }
119                    }
120                    catch (Exception e) {
121                            if (_log.isWarnEnabled()) {
122                                    _log.warn(e, e);
123                            }
124                    }
125    
126                    return null;
127            }
128    
129            public String getURLViewInContext(
130                    long classPK, LiferayPortletRequest liferayPortletRequest,
131                    LiferayPortletResponse liferayPortletResponse,
132                    String noSuchEntryRedirect) {
133    
134                    try {
135                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
136    
137                            if (assetRenderer != null) {
138                                    return assetRenderer.getURLViewInContext(
139                                            liferayPortletRequest, liferayPortletResponse,
140                                            noSuchEntryRedirect);
141                            }
142                    }
143                    catch (Exception e) {
144                            if (_log.isWarnEnabled()) {
145                                    _log.warn(e, e);
146                            }
147                    }
148    
149                    return null;
150            }
151    
152            public String render(
153                    long classPK, RenderRequest renderRequest,
154                    RenderResponse renderResponse, String template) {
155    
156                    try {
157                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
158    
159                            if (assetRenderer != null) {
160                                    return assetRenderer.render(
161                                            renderRequest, renderResponse, template);
162                            }
163                    }
164                    catch (Exception e) {
165                            if (_log.isWarnEnabled()) {
166                                    _log.warn(e, e);
167                            }
168                    }
169    
170                    return null;
171            }
172    
173            public void startWorkflowInstance(
174                            long companyId, long groupId, long userId, long classPK,
175                            Object model, Map<String, Serializable> workflowContext)
176                    throws PortalException, SystemException {
177    
178                    WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
179                            companyId, groupId, userId, getClassName(), classPK,
180                            workflowContext);
181            }
182    
183            protected String getIconPath(ThemeDisplay themeDisplay) {
184                    return themeDisplay.getPathThemeImages() + "/common/page.png";
185            }
186    
187            private static Log _log = LogFactoryUtil.getLog(BaseWorkflowHandler.class);
188    
189    }