001
014
015 package com.liferay.portal.kernel.workflow;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
021 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
022 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
023 import com.liferay.portal.kernel.util.WebKeys;
024 import com.liferay.portal.model.WorkflowDefinitionLink;
025 import com.liferay.portal.service.ServiceContext;
026 import com.liferay.portal.service.WorkflowDefinitionLinkLocalServiceUtil;
027 import com.liferay.portal.service.WorkflowInstanceLinkLocalServiceUtil;
028 import com.liferay.portal.theme.ThemeDisplay;
029 import com.liferay.portal.util.PortalUtil;
030 import com.liferay.portal.util.PortletKeys;
031 import com.liferay.portlet.PortletURLFactoryUtil;
032 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
033 import com.liferay.portlet.asset.model.AssetRenderer;
034 import com.liferay.portlet.asset.model.AssetRendererFactory;
035
036 import java.io.Serializable;
037
038 import java.util.Locale;
039 import java.util.Map;
040
041 import javax.portlet.PortletRequest;
042 import javax.portlet.PortletResponse;
043 import javax.portlet.PortletURL;
044 import javax.portlet.RenderRequest;
045 import javax.portlet.RenderResponse;
046 import javax.portlet.WindowState;
047 import javax.portlet.WindowStateException;
048
049
056 public abstract class BaseWorkflowHandler<T> implements WorkflowHandler<T> {
057
058 @Override
059 public AssetRenderer getAssetRenderer(long classPK) throws PortalException {
060 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
061
062 if (assetRendererFactory != null) {
063 return assetRendererFactory.getAssetRenderer(
064 classPK, AssetRendererFactory.TYPE_LATEST);
065 }
066 else {
067 return null;
068 }
069 }
070
071 @Override
072 public AssetRendererFactory getAssetRendererFactory() {
073 return AssetRendererFactoryRegistryUtil.
074 getAssetRendererFactoryByClassName(getClassName());
075 }
076
077 @Override
078 public String getIconCssClass() {
079 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
080
081 if (assetRendererFactory != null) {
082 return assetRendererFactory.getIconCssClass();
083 }
084
085 return "icon-file-alt";
086 }
087
088 @Override
089 public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
090 ThemeDisplay themeDisplay =
091 (ThemeDisplay)liferayPortletRequest.getAttribute(
092 WebKeys.THEME_DISPLAY);
093
094 return getIconPath(themeDisplay);
095 }
096
097
101 @Deprecated
102 @Override
103 public String getSummary(long classPK, Locale locale) {
104 return getSummary(classPK, null, null);
105 }
106
107 @Override
108 public String getSummary(
109 long classPK, PortletRequest portletRequest,
110 PortletResponse portletResponse) {
111
112 try {
113 AssetRenderer assetRenderer = getAssetRenderer(classPK);
114
115 if (assetRenderer != null) {
116 return assetRenderer.getSummary(
117 portletRequest, portletResponse);
118 }
119 }
120 catch (Exception e) {
121 if (_log.isWarnEnabled()) {
122 _log.warn(e, e);
123 }
124 }
125
126 return null;
127 }
128
129 @Override
130 public String getTitle(long classPK, Locale locale) {
131 try {
132 AssetRenderer assetRenderer = getAssetRenderer(classPK);
133
134 if (assetRenderer != null) {
135 return assetRenderer.getTitle(locale);
136 }
137 }
138 catch (Exception e) {
139 if (_log.isWarnEnabled()) {
140 _log.warn(e, e);
141 }
142 }
143
144 return null;
145 }
146
147 @Override
148 public PortletURL getURLEdit(
149 long classPK, LiferayPortletRequest liferayPortletRequest,
150 LiferayPortletResponse liferayPortletResponse) {
151
152 try {
153 AssetRenderer assetRenderer = getAssetRenderer(classPK);
154
155 if (assetRenderer != null) {
156 return assetRenderer.getURLEdit(
157 liferayPortletRequest, liferayPortletResponse);
158 }
159 }
160 catch (Exception e) {
161 if (_log.isWarnEnabled()) {
162 _log.warn(e, e);
163 }
164 }
165
166 return null;
167 }
168
169 @Override
170 public String getURLEditWorkflowTask(
171 long workflowTaskId, ServiceContext serviceContext)
172 throws PortalException {
173
174 try {
175 LiferayPortletURL liferayPortletURL = PortletURLFactoryUtil.create(
176 serviceContext.getRequest(), PortletKeys.MY_WORKFLOW_TASKS,
177 PortalUtil.getControlPanelPlid(serviceContext.getCompanyId()),
178 PortletRequest.RENDER_PHASE);
179
180 liferayPortletURL.setControlPanelCategory("my");
181 liferayPortletURL.setParameter(
182 "struts_action", "/my_workflow_tasks/edit_workflow_task");
183 liferayPortletURL.setParameter(
184 "workflowTaskId", String.valueOf(workflowTaskId));
185 liferayPortletURL.setWindowState(WindowState.MAXIMIZED);
186
187 return liferayPortletURL.toString();
188 }
189 catch (WindowStateException wse) {
190 throw new PortalException(wse);
191 }
192 }
193
194 @Override
195 public PortletURL getURLViewDiffs(
196 long classPK, LiferayPortletRequest liferayPortletRequest,
197 LiferayPortletResponse liferayPortletResponse) {
198
199 try {
200 AssetRenderer assetRenderer = getAssetRenderer(classPK);
201
202 if (assetRenderer != null) {
203 return assetRenderer.getURLViewDiffs(
204 liferayPortletRequest, liferayPortletResponse);
205 }
206 }
207 catch (Exception e) {
208 if (_log.isWarnEnabled()) {
209 _log.warn(e, e);
210 }
211 }
212
213 return null;
214 }
215
216 @Override
217 public String getURLViewInContext(
218 long classPK, LiferayPortletRequest liferayPortletRequest,
219 LiferayPortletResponse liferayPortletResponse,
220 String noSuchEntryRedirect) {
221
222 try {
223 AssetRenderer assetRenderer = getAssetRenderer(classPK);
224
225 if (assetRenderer != null) {
226 return assetRenderer.getURLViewInContext(
227 liferayPortletRequest, liferayPortletResponse,
228 noSuchEntryRedirect);
229 }
230 }
231 catch (Exception e) {
232 if (_log.isWarnEnabled()) {
233 _log.warn(e, e);
234 }
235 }
236
237 return null;
238 }
239
240
243 @Override
244 public WorkflowDefinitionLink getWorkflowDefinitionLink(
245 long companyId, long groupId, long classPK)
246 throws PortalException {
247
248 return WorkflowDefinitionLinkLocalServiceUtil.
249 fetchWorkflowDefinitionLink(
250 companyId, groupId, getClassName(), 0, 0);
251 }
252
253 @Override
254 public boolean isAssetTypeSearchable() {
255 return _ASSET_TYPE_SEARCHABLE;
256 }
257
258 @Override
259 public boolean isScopeable() {
260 return _SCOPEABLE;
261 }
262
263 @Override
264 public boolean isVisible() {
265 return _VISIBLE;
266 }
267
268 @Override
269 public String render(
270 long classPK, RenderRequest renderRequest,
271 RenderResponse renderResponse, String template) {
272
273 try {
274 AssetRenderer assetRenderer = getAssetRenderer(classPK);
275
276 if (assetRenderer != null) {
277 return assetRenderer.render(
278 renderRequest, renderResponse, template);
279 }
280 }
281 catch (Exception e) {
282 if (_log.isWarnEnabled()) {
283 _log.warn(e, e);
284 }
285 }
286
287 return null;
288 }
289
290 @Override
291 public void startWorkflowInstance(
292 long companyId, long groupId, long userId, long classPK, T model,
293 Map<String, Serializable> workflowContext)
294 throws PortalException {
295
296 WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
297 companyId, groupId, userId, getClassName(), classPK,
298 workflowContext);
299 }
300
301 protected String getIconPath(ThemeDisplay themeDisplay) {
302 return themeDisplay.getPathThemeImages() + "/common/page.png";
303 }
304
305 private static final boolean _ASSET_TYPE_SEARCHABLE = true;
306
307 private static final boolean _SCOPEABLE = true;
308
309 private static final boolean _VISIBLE = true;
310
311 private static final Log _log = LogFactoryUtil.getLog(
312 BaseWorkflowHandler.class);
313
314 }