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