1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.kernel.workflow;
16  
17  import com.liferay.portal.kernel.exception.PortalException;
18  import com.liferay.portal.kernel.exception.SystemException;
19  import com.liferay.portal.kernel.log.Log;
20  import com.liferay.portal.kernel.log.LogFactoryUtil;
21  import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
22  import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
23  import com.liferay.portal.kernel.util.WebKeys;
24  import com.liferay.portal.service.WorkflowInstanceLinkLocalServiceUtil;
25  import com.liferay.portal.theme.ThemeDisplay;
26  import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
27  import com.liferay.portlet.asset.model.AssetRenderer;
28  import com.liferay.portlet.asset.model.AssetRendererFactory;
29  
30  import java.io.Serializable;
31  
32  import java.util.Map;
33  
34  import javax.portlet.PortletURL;
35  
36  /**
37   * <a href="BaseWorkflowHandler.java.html"><b><i>View Source</i></b></a>
38   *
39   * @author Bruno Farache
40   * @author Marcellus Tavares
41   * @author Juan Fernández
42   */
43  public abstract class BaseWorkflowHandler implements WorkflowHandler {
44  
45      public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
46          ThemeDisplay themeDisplay =
47              (ThemeDisplay)liferayPortletRequest.getAttribute(
48                  WebKeys.THEME_DISPLAY);
49  
50          return getIconPath(themeDisplay);
51      }
52  
53      public String getTitle(long classPK) {
54          try {
55              AssetRenderer assetRenderer = getAssetRenderer(classPK);
56  
57              if (assetRenderer != null) {
58                  return assetRenderer.getTitle();
59              }
60          }
61          catch (Exception e) {
62              if (_log.isWarnEnabled()) {
63                  _log.warn(e, e);
64              }
65          }
66  
67          return null;
68      }
69  
70      public String getType() {
71          return TYPE_UNKNOWN;
72      }
73  
74      public PortletURL getURLEdit(
75          long classPK, LiferayPortletRequest liferayPortletRequest,
76          LiferayPortletResponse liferayPortletResponse) {
77  
78          try {
79              AssetRenderer assetRenderer = getAssetRenderer(classPK);
80  
81              if (assetRenderer != null) {
82                  return assetRenderer.getURLEdit(
83                      liferayPortletRequest, liferayPortletResponse);
84              }
85          }
86          catch (Exception e) {
87              if (_log.isWarnEnabled()) {
88                  _log.warn(e, e);
89              }
90          }
91  
92          return null;
93      }
94  
95      public void startWorkflowInstance(
96              long companyId, long groupId, long userId, long classPK,
97              Object model, Map<String, Serializable> workflowContext)
98          throws PortalException, SystemException {
99  
100         WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
101             companyId, groupId, userId, getClassName(), classPK,
102             workflowContext);
103     }
104 
105     protected AssetRenderer getAssetRenderer(long classPK)
106         throws PortalException, SystemException {
107 
108         AssetRendererFactory assetRendererFactory =
109             AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
110                 getClassName());
111 
112         if (assetRendererFactory != null) {
113             return assetRendererFactory.getAssetRenderer(classPK);
114         }
115         else {
116             return null;
117         }
118     }
119 
120     protected String getIconPath(ThemeDisplay themeDisplay) {
121         return themeDisplay.getPathThemeImages() + "/common/page.png";
122     }
123 
124     private static Log _log = LogFactoryUtil.getLog(BaseWorkflowHandler.class);
125 
126 }