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