001    /**
002     * Copyright (c) 2000-2013 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.model.WorkflowDefinitionLink;
025    import com.liferay.portal.service.WorkflowDefinitionLinkLocalServiceUtil;
026    import com.liferay.portal.service.WorkflowInstanceLinkLocalServiceUtil;
027    import com.liferay.portal.theme.ThemeDisplay;
028    import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
029    import com.liferay.portlet.asset.model.AssetRenderer;
030    import com.liferay.portlet.asset.model.AssetRendererFactory;
031    
032    import java.io.Serializable;
033    
034    import java.util.Locale;
035    import java.util.Map;
036    
037    import javax.portlet.PortletRequest;
038    import javax.portlet.PortletResponse;
039    import javax.portlet.PortletURL;
040    import javax.portlet.RenderRequest;
041    import javax.portlet.RenderResponse;
042    
043    /**
044     * @author Bruno Farache
045     * @author Marcellus Tavares
046     * @author Juan Fern??ndez
047     * @author Julio Camarero
048     * @author Jorge Ferrer
049     */
050    public abstract class BaseWorkflowHandler implements WorkflowHandler {
051    
052            @Override
053            public AssetRenderer getAssetRenderer(long classPK)
054                    throws PortalException, SystemException {
055    
056                    AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
057    
058                    if (assetRendererFactory != null) {
059                            return assetRendererFactory.getAssetRenderer(
060                                    classPK, AssetRendererFactory.TYPE_LATEST);
061                    }
062                    else {
063                            return null;
064                    }
065            }
066    
067            @Override
068            public AssetRendererFactory getAssetRendererFactory() {
069                    return AssetRendererFactoryRegistryUtil.
070                            getAssetRendererFactoryByClassName(getClassName());
071            }
072    
073            @Override
074            public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
075                    ThemeDisplay themeDisplay =
076                            (ThemeDisplay)liferayPortletRequest.getAttribute(
077                                    WebKeys.THEME_DISPLAY);
078    
079                    return getIconPath(themeDisplay);
080            }
081    
082            /**
083             * @deprecated As of 7.0.0, replaced by {@link #getSummary(long,
084             *             PortletRequest, PortletResponse)}
085             */
086            @Deprecated
087            @Override
088            public String getSummary(long classPK, Locale locale) {
089                    return getSummary(classPK, null, null);
090            }
091    
092            @Override
093            public String getSummary(
094                    long classPK, PortletRequest portletRequest,
095                    PortletResponse portletResponse) {
096    
097                    try {
098                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
099    
100                            if (assetRenderer != null) {
101                                    return assetRenderer.getSummary(
102                                            portletRequest, portletResponse);
103                            }
104                    }
105                    catch (Exception e) {
106                            if (_log.isWarnEnabled()) {
107                                    _log.warn(e, e);
108                            }
109                    }
110    
111                    return null;
112            }
113    
114            @Override
115            public String getTitle(long classPK, Locale locale) {
116                    try {
117                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
118    
119                            if (assetRenderer != null) {
120                                    return assetRenderer.getTitle(locale);
121                            }
122                    }
123                    catch (Exception e) {
124                            if (_log.isWarnEnabled()) {
125                                    _log.warn(e, e);
126                            }
127                    }
128    
129                    return null;
130            }
131    
132            @Override
133            public PortletURL getURLEdit(
134                    long classPK, LiferayPortletRequest liferayPortletRequest,
135                    LiferayPortletResponse liferayPortletResponse) {
136    
137                    try {
138                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
139    
140                            if (assetRenderer != null) {
141                                    return assetRenderer.getURLEdit(
142                                            liferayPortletRequest, liferayPortletResponse);
143                            }
144                    }
145                    catch (Exception e) {
146                            if (_log.isWarnEnabled()) {
147                                    _log.warn(e, e);
148                            }
149                    }
150    
151                    return null;
152            }
153    
154            @Override
155            public String getURLViewInContext(
156                    long classPK, LiferayPortletRequest liferayPortletRequest,
157                    LiferayPortletResponse liferayPortletResponse,
158                    String noSuchEntryRedirect) {
159    
160                    try {
161                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
162    
163                            if (assetRenderer != null) {
164                                    return assetRenderer.getURLViewInContext(
165                                            liferayPortletRequest, liferayPortletResponse,
166                                            noSuchEntryRedirect);
167                            }
168                    }
169                    catch (Exception e) {
170                            if (_log.isWarnEnabled()) {
171                                    _log.warn(e, e);
172                            }
173                    }
174    
175                    return null;
176            }
177    
178            @Override
179            public WorkflowDefinitionLink getWorkflowDefinitionLink(
180                            long companyId, long groupId, long classPK)
181                    throws PortalException, SystemException {
182    
183                    return WorkflowDefinitionLinkLocalServiceUtil.
184                            fetchWorkflowDefinitionLink(
185                                    companyId, groupId, getClassName(), 0, 0);
186            }
187    
188            @Override
189            public boolean isAssetTypeSearchable() {
190                    return _ASSET_TYPE_SEARCHABLE;
191            }
192    
193            @Override
194            public boolean isScopeable() {
195                    return _SCOPEABLE;
196            }
197    
198            @Override
199            public boolean isVisible() {
200                    return _VISIBLE;
201            }
202    
203            @Override
204            public String render(
205                    long classPK, RenderRequest renderRequest,
206                    RenderResponse renderResponse, String template) {
207    
208                    try {
209                            AssetRenderer assetRenderer = getAssetRenderer(classPK);
210    
211                            if (assetRenderer != null) {
212                                    return assetRenderer.render(
213                                            renderRequest, renderResponse, template);
214                            }
215                    }
216                    catch (Exception e) {
217                            if (_log.isWarnEnabled()) {
218                                    _log.warn(e, e);
219                            }
220                    }
221    
222                    return null;
223            }
224    
225            @Override
226            public void startWorkflowInstance(
227                            long companyId, long groupId, long userId, long classPK,
228                            Object model, Map<String, Serializable> workflowContext)
229                    throws PortalException, SystemException {
230    
231                    WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
232                            companyId, groupId, userId, getClassName(), classPK,
233                            workflowContext);
234            }
235    
236            protected String getIconPath(ThemeDisplay themeDisplay) {
237                    return themeDisplay.getPathThemeImages() + "/common/page.png";
238            }
239    
240            private static final boolean _ASSET_TYPE_SEARCHABLE = true;
241    
242            private static final boolean _SCOPEABLE = true;
243    
244            private static final boolean _VISIBLE = true;
245    
246            private static Log _log = LogFactoryUtil.getLog(BaseWorkflowHandler.class);
247    
248    }