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