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.LocaleUtil;
024 import com.liferay.portal.kernel.util.WebKeys;
025 import com.liferay.portal.service.WorkflowInstanceLinkLocalServiceUtil;
026 import com.liferay.portal.theme.ThemeDisplay;
027 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
028 import com.liferay.portlet.asset.model.AssetRenderer;
029 import com.liferay.portlet.asset.model.AssetRendererFactory;
030
031 import java.io.Serializable;
032
033 import java.util.Locale;
034 import java.util.Map;
035
036 import javax.portlet.PortletURL;
037 import javax.portlet.RenderRequest;
038 import javax.portlet.RenderResponse;
039
040
047 public abstract class BaseWorkflowHandler implements WorkflowHandler {
048
049 public AssetRenderer getAssetRenderer(long classPK)
050 throws PortalException, SystemException {
051
052 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
053
054 if (assetRendererFactory != null) {
055 return assetRendererFactory.getAssetRenderer(
056 classPK, AssetRendererFactory.TYPE_LATEST);
057 }
058 else {
059 return null;
060 }
061 }
062
063 public AssetRendererFactory getAssetRendererFactory() {
064 return AssetRendererFactoryRegistryUtil.
065 getAssetRendererFactoryByClassName(getClassName());
066 }
067
068 public String getIconPath(LiferayPortletRequest liferayPortletRequest) {
069 ThemeDisplay themeDisplay =
070 (ThemeDisplay)liferayPortletRequest.getAttribute(
071 WebKeys.THEME_DISPLAY);
072
073 return getIconPath(themeDisplay);
074 }
075
076
079 public String getSummary(long classPK) {
080 Locale locale = LocaleUtil.getDefault();
081
082 return getSummary(classPK, locale);
083 }
084
085 public String getSummary(long classPK, Locale locale) {
086 try {
087 AssetRenderer assetRenderer = getAssetRenderer(classPK);
088
089 if (assetRenderer != null) {
090 return assetRenderer.getSummary(locale);
091 }
092 }
093 catch (Exception e) {
094 if (_log.isWarnEnabled()) {
095 _log.warn(e, e);
096 }
097 }
098
099 return null;
100 }
101
102
105 public String getTitle(long classPK) {
106 Locale locale = LocaleUtil.getDefault();
107
108 return getTitle(classPK, locale);
109 }
110
111 public String getTitle(long classPK, Locale locale) {
112 try {
113 AssetRenderer assetRenderer = getAssetRenderer(classPK);
114
115 if (assetRenderer != null) {
116 return assetRenderer.getTitle(locale);
117 }
118 }
119 catch (Exception e) {
120 if (_log.isWarnEnabled()) {
121 _log.warn(e, e);
122 }
123 }
124
125 return null;
126 }
127
128 public PortletURL getURLEdit(
129 long classPK, LiferayPortletRequest liferayPortletRequest,
130 LiferayPortletResponse liferayPortletResponse) {
131
132 try {
133 AssetRenderer assetRenderer = getAssetRenderer(classPK);
134
135 if (assetRenderer != null) {
136 return assetRenderer.getURLEdit(
137 liferayPortletRequest, liferayPortletResponse);
138 }
139 }
140 catch (Exception e) {
141 if (_log.isWarnEnabled()) {
142 _log.warn(e, e);
143 }
144 }
145
146 return null;
147 }
148
149 public String getURLViewInContext(
150 long classPK, LiferayPortletRequest liferayPortletRequest,
151 LiferayPortletResponse liferayPortletResponse,
152 String noSuchEntryRedirect) {
153
154 try {
155 AssetRenderer assetRenderer = getAssetRenderer(classPK);
156
157 if (assetRenderer != null) {
158 return assetRenderer.getURLViewInContext(
159 liferayPortletRequest, liferayPortletResponse,
160 noSuchEntryRedirect);
161 }
162 }
163 catch (Exception e) {
164 if (_log.isWarnEnabled()) {
165 _log.warn(e, e);
166 }
167 }
168
169 return null;
170 }
171
172 public boolean isScopeable() {
173 return _SCOPEABLE;
174 }
175
176 public String render(
177 long classPK, RenderRequest renderRequest,
178 RenderResponse renderResponse, String template) {
179
180 try {
181 AssetRenderer assetRenderer = getAssetRenderer(classPK);
182
183 if (assetRenderer != null) {
184 return assetRenderer.render(
185 renderRequest, renderResponse, template);
186 }
187 }
188 catch (Exception e) {
189 if (_log.isWarnEnabled()) {
190 _log.warn(e, e);
191 }
192 }
193
194 return null;
195 }
196
197 public void startWorkflowInstance(
198 long companyId, long groupId, long userId, long classPK,
199 Object model, Map<String, Serializable> workflowContext)
200 throws PortalException, SystemException {
201
202 WorkflowInstanceLinkLocalServiceUtil.startWorkflowInstance(
203 companyId, groupId, userId, getClassName(), classPK,
204 workflowContext);
205 }
206
207 protected String getIconPath(ThemeDisplay themeDisplay) {
208 return themeDisplay.getPathThemeImages() + "/common/page.png";
209 }
210
211 private static final boolean _SCOPEABLE = true;
212
213 private static Log _log = LogFactoryUtil.getLog(BaseWorkflowHandler.class);
214
215 }