001
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.PortletURL;
038 import javax.portlet.RenderRequest;
039 import javax.portlet.RenderResponse;
040
041
048 public abstract class BaseWorkflowHandler implements WorkflowHandler {
049
050 public AssetRenderer getAssetRenderer(long classPK)
051 throws PortalException, SystemException {
052
053 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
054
055 if (assetRendererFactory != null) {
056 return assetRendererFactory.getAssetRenderer(
057 classPK, AssetRendererFactory.TYPE_LATEST);
058 }
059 else {
060 return null;
061 }
062 }
063
064 public AssetRendererFactory getAssetRendererFactory() {
065 return AssetRendererFactoryRegistryUtil.
066 getAssetRendererFactoryByClassName(getClassName());
067 }
068
069 public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
070 ThemeDisplay themeDisplay =
071 (ThemeDisplay)liferayPortletRequest.getAttribute(
072 WebKeys.THEME_DISPLAY);
073
074 return getIconPath(themeDisplay);
075 }
076
077 public String getSummary(long classPK, Locale locale) {
078 try {
079 AssetRenderer assetRenderer = getAssetRenderer(classPK);
080
081 if (assetRenderer != null) {
082 return assetRenderer.getSummary(locale);
083 }
084 }
085 catch (Exception e) {
086 if (_log.isWarnEnabled()) {
087 _log.warn(e, e);
088 }
089 }
090
091 return null;
092 }
093
094 public String getTitle(long classPK, Locale locale) {
095 try {
096 AssetRenderer assetRenderer = getAssetRenderer(classPK);
097
098 if (assetRenderer != null) {
099 return assetRenderer.getTitle(locale);
100 }
101 }
102 catch (Exception e) {
103 if (_log.isWarnEnabled()) {
104 _log.warn(e, e);
105 }
106 }
107
108 return null;
109 }
110
111 public PortletURL getURLEdit(
112 long classPK, LiferayPortletRequest liferayPortletRequest,
113 LiferayPortletResponse liferayPortletResponse) {
114
115 try {
116 AssetRenderer assetRenderer = getAssetRenderer(classPK);
117
118 if (assetRenderer != null) {
119 return assetRenderer.getURLEdit(
120 liferayPortletRequest, liferayPortletResponse);
121 }
122 }
123 catch (Exception e) {
124 if (_log.isWarnEnabled()) {
125 _log.warn(e, e);
126 }
127 }
128
129 return null;
130 }
131
132 public String getURLViewInContext(
133 long classPK, LiferayPortletRequest liferayPortletRequest,
134 LiferayPortletResponse liferayPortletResponse,
135 String noSuchEntryRedirect) {
136
137 try {
138 AssetRenderer assetRenderer = getAssetRenderer(classPK);
139
140 if (assetRenderer != null) {
141 return assetRenderer.getURLViewInContext(
142 liferayPortletRequest, liferayPortletResponse,
143 noSuchEntryRedirect);
144 }
145 }
146 catch (Exception e) {
147 if (_log.isWarnEnabled()) {
148 _log.warn(e, e);
149 }
150 }
151
152 return null;
153 }
154
155 public WorkflowDefinitionLink getWorkflowDefinitionLink(
156 long companyId, long groupId, long classPK)
157 throws PortalException, SystemException {
158
159 return WorkflowDefinitionLinkLocalServiceUtil.getWorkflowDefinitionLink(
160 companyId, groupId, getClassName(), 0, 0);
161 }
162
163 public boolean isAssetTypeSearchable() {
164 return _ASSET_TYPE_SEARCHABLE;
165 }
166
167 public boolean isScopeable() {
168 return _SCOPEABLE;
169 }
170
171 public boolean isVisible() {
172 return _VISIBLE;
173 }
174
175 public String render(
176 long classPK, RenderRequest renderRequest,
177 RenderResponse renderResponse, String template) {
178
179 try {
180 AssetRenderer assetRenderer = getAssetRenderer(classPK);
181
182 if (assetRenderer != null) {
183 return assetRenderer.render(
184 renderRequest, renderResponse, template);
185 }
186 }
187 catch (Exception e) {
188 if (_log.isWarnEnabled()) {
189 _log.warn(e, e);
190 }
191 }
192
193 return null;
194 }
195
196 public void startWorkflowInstance(
197 long companyId, long groupId, long userId, long classPK,
198 Object model, Map<String, Serializable> workflowContext)
199 throws PortalException, SystemException {
200
201 WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
202 companyId, groupId, userId, getClassName(), classPK,
203 workflowContext);
204 }
205
206 protected String getIconPath(ThemeDisplay themeDisplay) {
207 return themeDisplay.getPathThemeImages() + "/common/page.png";
208 }
209
210 private static final boolean _ASSET_TYPE_SEARCHABLE = true;
211
212 private static final boolean _SCOPEABLE = true;
213
214 private static final boolean _VISIBLE = true;
215
216 private static Log _log = LogFactoryUtil.getLog(BaseWorkflowHandler.class);
217
218 }