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.util.WebKeys;
023 import com.liferay.portal.model.WorkflowDefinitionLink;
024 import com.liferay.portal.service.ServiceContext;
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.portal.util.PortalUtil;
029 import com.liferay.portal.util.PortletKeys;
030 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
031 import com.liferay.portlet.asset.model.AssetRenderer;
032 import com.liferay.portlet.asset.model.AssetRendererFactory;
033
034 import java.io.Serializable;
035
036 import java.util.Locale;
037 import java.util.Map;
038
039 import javax.portlet.PortletRequest;
040 import javax.portlet.PortletResponse;
041 import javax.portlet.PortletURL;
042 import javax.portlet.WindowState;
043 import javax.portlet.WindowStateException;
044
045 import javax.servlet.http.HttpServletRequest;
046 import javax.servlet.http.HttpServletResponse;
047
048
055 public abstract class BaseWorkflowHandler<T> implements WorkflowHandler<T> {
056
057 @Override
058 public AssetRenderer<T> getAssetRenderer(long classPK)
059 throws PortalException {
060
061 AssetRendererFactory<T> assetRendererFactory =
062 getAssetRendererFactory();
063
064 if (assetRendererFactory != null) {
065 return assetRendererFactory.getAssetRenderer(
066 classPK, AssetRendererFactory.TYPE_LATEST);
067 }
068 else {
069 return null;
070 }
071 }
072
073 @Override
074 public AssetRendererFactory<T> getAssetRendererFactory() {
075 return (AssetRendererFactory<T>)AssetRendererFactoryRegistryUtil.
076 getAssetRendererFactoryByClassName(getClassName());
077 }
078
079 @Override
080 public String getIconCssClass() {
081 AssetRendererFactory<?> assetRendererFactory =
082 getAssetRendererFactory();
083
084 if (assetRendererFactory != null) {
085 return assetRendererFactory.getIconCssClass();
086 }
087
088 return "icon-file-alt";
089 }
090
091 @Override
092 public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
093 ThemeDisplay themeDisplay =
094 (ThemeDisplay)liferayPortletRequest.getAttribute(
095 WebKeys.THEME_DISPLAY);
096
097 return getIconPath(themeDisplay);
098 }
099
100
104 @Deprecated
105 @Override
106 public String getSummary(long classPK, Locale locale) {
107 return getSummary(classPK, null, null);
108 }
109
110 @Override
111 public String getSummary(
112 long classPK, PortletRequest portletRequest,
113 PortletResponse portletResponse) {
114
115 try {
116 AssetRenderer<?> assetRenderer = getAssetRenderer(classPK);
117
118 if (assetRenderer != null) {
119 return assetRenderer.getSummary(
120 portletRequest, portletResponse);
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 String getTitle(long classPK, Locale locale) {
134 try {
135 AssetRenderer<?> assetRenderer = getAssetRenderer(classPK);
136
137 if (assetRenderer != null) {
138 return assetRenderer.getTitle(locale);
139 }
140 }
141 catch (Exception e) {
142 if (_log.isWarnEnabled()) {
143 _log.warn(e, e);
144 }
145 }
146
147 return null;
148 }
149
150 @Override
151 public PortletURL getURLEdit(
152 long classPK, LiferayPortletRequest liferayPortletRequest,
153 LiferayPortletResponse liferayPortletResponse) {
154
155 try {
156 AssetRenderer<?> assetRenderer = getAssetRenderer(classPK);
157
158 if (assetRenderer != null) {
159 return assetRenderer.getURLEdit(
160 liferayPortletRequest, liferayPortletResponse);
161 }
162 }
163 catch (Exception e) {
164 if (_log.isWarnEnabled()) {
165 _log.warn(e, e);
166 }
167 }
168
169 return null;
170 }
171
172 @Override
173 public String getURLEditWorkflowTask(
174 long workflowTaskId, ServiceContext serviceContext)
175 throws PortalException {
176
177 try {
178 PortletURL portletURL = PortalUtil.getControlPanelPortletURL(
179 serviceContext.getRequest(), PortletKeys.MY_WORKFLOW_TASK, 0,
180 PortletRequest.RENDER_PHASE);
181
182 portletURL.setParameter("mvcPath", "/edit_workflow_task.jsp");
183 portletURL.setParameter(
184 "workflowTaskId", String.valueOf(workflowTaskId));
185 portletURL.setWindowState(WindowState.MAXIMIZED);
186
187 return portletURL.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 include(
255 long classPK, HttpServletRequest request, HttpServletResponse response,
256 String template) {
257
258 try {
259 AssetRenderer<?> assetRenderer = getAssetRenderer(classPK);
260
261 if (assetRenderer != null) {
262 return assetRenderer.include(request, response, template);
263 }
264 }
265 catch (Exception e) {
266 if (_log.isWarnEnabled()) {
267 _log.warn(e, e);
268 }
269 }
270
271 return false;
272 }
273
274 @Override
275 public boolean isAssetTypeSearchable() {
276 return _ASSET_TYPE_SEARCHABLE;
277 }
278
279 @Override
280 public boolean isScopeable() {
281 return _SCOPEABLE;
282 }
283
284 @Override
285 public boolean isVisible() {
286 return _VISIBLE;
287 }
288
289 @Override
290 public void startWorkflowInstance(
291 long companyId, long groupId, long userId, long classPK, T model,
292 Map<String, Serializable> workflowContext)
293 throws PortalException {
294
295 WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
296 companyId, groupId, userId, getClassName(), classPK,
297 workflowContext);
298 }
299
300 protected String getIconPath(ThemeDisplay themeDisplay) {
301 return themeDisplay.getPathThemeImages() + "/common/page.png";
302 }
303
304 private static final boolean _ASSET_TYPE_SEARCHABLE = true;
305
306 private static final boolean _SCOPEABLE = true;
307
308 private static final boolean _VISIBLE = true;
309
310 private static final Log _log = LogFactoryUtil.getLog(
311 BaseWorkflowHandler.class);
312
313 }