001
014
015 package com.liferay.portlet.documentlibrary.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
020 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
021 import com.liferay.portal.kernel.repository.model.FileEntry;
022 import com.liferay.portal.kernel.repository.model.FileVersion;
023 import com.liferay.portal.kernel.trash.TrashRenderer;
024 import com.liferay.portal.kernel.util.CharPool;
025 import com.liferay.portal.kernel.util.FileUtil;
026 import com.liferay.portal.kernel.util.HtmlUtil;
027 import com.liferay.portal.kernel.util.ParamUtil;
028 import com.liferay.portal.kernel.util.StringBundler;
029 import com.liferay.portal.kernel.util.StringPool;
030 import com.liferay.portal.kernel.util.Validator;
031 import com.liferay.portal.security.permission.ActionKeys;
032 import com.liferay.portal.security.permission.PermissionChecker;
033 import com.liferay.portal.theme.ThemeDisplay;
034 import com.liferay.portal.util.PortletKeys;
035 import com.liferay.portal.util.PropsValues;
036 import com.liferay.portal.util.WebKeys;
037 import com.liferay.portlet.asset.model.AssetRendererFactory;
038 import com.liferay.portlet.asset.model.BaseAssetRenderer;
039 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
040 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
041 import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
042 import com.liferay.portlet.documentlibrary.util.DLUtil;
043 import com.liferay.portlet.trash.util.TrashUtil;
044
045 import java.util.Date;
046 import java.util.Locale;
047
048 import javax.portlet.PortletRequest;
049 import javax.portlet.PortletURL;
050 import javax.portlet.RenderRequest;
051 import javax.portlet.RenderResponse;
052 import javax.portlet.WindowState;
053
054
060 public class DLFileEntryAssetRenderer
061 extends BaseAssetRenderer implements TrashRenderer {
062
063 public DLFileEntryAssetRenderer(
064 FileEntry fileEntry, FileVersion fileVersion) {
065
066 _fileEntry = fileEntry;
067 _fileVersion = fileVersion;
068 }
069
070 @Override
071 public String getClassName() {
072 return DLFileEntry.class.getName();
073 }
074
075 @Override
076 public long getClassPK() {
077 if (!_fileVersion.isApproved() && _fileVersion.isDraft() &&
078 !_fileVersion.isPending() &&
079 !_fileVersion.getVersion().equals(
080 DLFileEntryConstants.VERSION_DEFAULT)) {
081
082 return _fileVersion.getFileVersionId();
083 }
084 else {
085 return _fileEntry.getFileEntryId();
086 }
087 }
088
089 @Override
090 public String getDiscussionPath() {
091 if (PropsValues.DL_FILE_ENTRY_COMMENTS_ENABLED) {
092 return "edit_file_entry_discussion";
093 }
094 else {
095 return null;
096 }
097 }
098
099 @Override
100 public Date getDisplayDate() {
101 return _fileEntry.getModifiedDate();
102 }
103
104 @Override
105 public long getGroupId() {
106 return _fileEntry.getGroupId();
107 }
108
109 @Override
110 public String getIconPath(ThemeDisplay themeDisplay) {
111 return themeDisplay.getPathThemeImages() + "/file_system/small/" +
112 _fileEntry.getIcon() + ".png";
113 }
114
115 @Override
116 public String getNewName(String oldName, String token) {
117 String extension = FileUtil.getExtension(oldName);
118
119 if (Validator.isNull(extension)) {
120 return super.getNewName(oldName, token);
121 }
122
123 StringBundler sb = new StringBundler(5);
124
125 int index = oldName.lastIndexOf(CharPool.PERIOD);
126
127 sb.append(oldName.substring(0, index));
128
129 sb.append(StringPool.SPACE);
130 sb.append(token);
131 sb.append(StringPool.PERIOD);
132 sb.append(extension);
133
134 return sb.toString();
135 }
136
137 @Override
138 public String getPortletId() {
139 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
140
141 return assetRendererFactory.getPortletId();
142 }
143
144 @Override
145 public String getSummary(Locale locale) {
146 return HtmlUtil.stripHtml(_fileEntry.getDescription());
147 }
148
149 @Override
150 public String getThumbnailPath(PortletRequest portletRequest)
151 throws Exception {
152
153 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
154 WebKeys.THEME_DISPLAY);
155
156 String thumbnailSrc = DLUtil.getThumbnailSrc(
157 _fileEntry, null, themeDisplay);
158
159 if (Validator.isNotNull(thumbnailSrc)) {
160 return thumbnailSrc;
161 }
162
163 return themeDisplay.getPathThemeImages() +
164 "/file_system/large/document.png";
165 }
166
167 @Override
168 public String getTitle(Locale locale) {
169 String title = null;
170
171 if (getAssetRendererType() == AssetRendererFactory.TYPE_LATEST) {
172 title = _fileVersion.getTitle();
173 }
174 else {
175 title = _fileEntry.getTitle();
176 }
177
178 return TrashUtil.getOriginalTitle(title);
179 }
180
181 @Override
182 public String getType() {
183 return DLFileEntryAssetRendererFactory.TYPE;
184 }
185
186 @Override
187 public String getURLDownload(ThemeDisplay themeDisplay) {
188 return DLUtil.getPreviewURL(
189 _fileEntry, _fileVersion, themeDisplay, StringPool.BLANK);
190 }
191
192 @Override
193 public PortletURL getURLEdit(
194 LiferayPortletRequest liferayPortletRequest,
195 LiferayPortletResponse liferayPortletResponse)
196 throws Exception {
197
198 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
199 getControlPanelPlid(liferayPortletRequest),
200 PortletKeys.DOCUMENT_LIBRARY, PortletRequest.RENDER_PHASE);
201
202 portletURL.setParameter(
203 "struts_action", "/document_library/edit_file_entry");
204 portletURL.setParameter(
205 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
206
207 return portletURL;
208 }
209
210 @Override
211 public PortletURL getURLExport(
212 LiferayPortletRequest liferayPortletRequest,
213 LiferayPortletResponse liferayPortletResponse) {
214
215 PortletURL portletURL = liferayPortletResponse.createActionURL();
216
217 portletURL.setParameter("struts_action", "/asset_publisher/get_file");
218 portletURL.setParameter(
219 "groupId", String.valueOf(_fileEntry.getRepositoryId()));
220 portletURL.setParameter(
221 "folderId", String.valueOf(_fileEntry.getFolderId()));
222 portletURL.setParameter("title", String.valueOf(_fileEntry.getTitle()));
223
224 return portletURL;
225 }
226
227 @Override
228 public String getURLImagePreview(PortletRequest portletRequest)
229 throws Exception {
230
231 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
232 WebKeys.THEME_DISPLAY);
233
234 return DLUtil.getImagePreviewURL(
235 _fileEntry, _fileVersion, themeDisplay);
236 }
237
238 @Override
239 public PortletURL getURLView(
240 LiferayPortletResponse liferayPortletResponse,
241 WindowState windowState)
242 throws Exception {
243
244 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
245
246 PortletURL portletURL = assetRendererFactory.getURLView(
247 liferayPortletResponse, windowState);
248
249 portletURL.setParameter(
250 "struts_action", "/document_library_display/view_file_entry");
251 portletURL.setParameter(
252 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
253 portletURL.setWindowState(windowState);
254
255 return portletURL;
256 }
257
258 @Override
259 public String getURLViewInContext(
260 LiferayPortletRequest liferayPortletRequest,
261 LiferayPortletResponse liferayPortletResponse,
262 String noSuchEntryRedirect) {
263
264 return getURLViewInContext(
265 liferayPortletRequest, noSuchEntryRedirect,
266 "/document_library/find_file_entry", "fileEntryId",
267 _fileEntry.getFileEntryId());
268 }
269
270 @Override
271 public long getUserId() {
272 return _fileEntry.getUserId();
273 }
274
275 @Override
276 public String getUserName() {
277 return _fileEntry.getUserName();
278 }
279
280 @Override
281 public String getUuid() {
282 return _fileEntry.getUuid();
283 }
284
285 public boolean hasDeletePermission(PermissionChecker permissionChecker)
286 throws PortalException, SystemException {
287
288 return DLFileEntryPermission.contains(
289 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.DELETE);
290 }
291
292 @Override
293 public boolean hasEditPermission(PermissionChecker permissionChecker)
294 throws PortalException, SystemException {
295
296 return DLFileEntryPermission.contains(
297 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.UPDATE);
298 }
299
300 @Override
301 public boolean hasViewPermission(PermissionChecker permissionChecker)
302 throws PortalException, SystemException {
303
304 return DLFileEntryPermission.contains(
305 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.VIEW);
306 }
307
308 @Override
309 public boolean isConvertible() {
310 return true;
311 }
312
313 @Override
314 public boolean isPrintable() {
315 return false;
316 }
317
318 @Override
319 public String render(
320 RenderRequest renderRequest, RenderResponse renderResponse,
321 String template)
322 throws Exception {
323
324 if (template.equals(TEMPLATE_ABSTRACT) ||
325 template.equals(TEMPLATE_FULL_CONTENT)) {
326
327 renderRequest.setAttribute(
328 WebKeys.DOCUMENT_LIBRARY_FILE_ENTRY, _fileEntry);
329
330 String version = ParamUtil.getString(renderRequest, "version");
331
332 if ((getAssetRendererType() == AssetRendererFactory.TYPE_LATEST) ||
333 Validator.isNotNull(version)) {
334
335 if ((_fileEntry != null) && Validator.isNotNull(version)) {
336 _fileVersion = _fileEntry.getFileVersion(version);
337 }
338
339 renderRequest.setAttribute(
340 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION, _fileVersion);
341 }
342 else {
343 renderRequest.setAttribute(
344 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION,
345 _fileEntry.getFileVersion());
346 }
347
348 return "/html/portlet/document_library/asset/file_entry_" +
349 template + ".jsp";
350 }
351 else {
352 return null;
353 }
354 }
355
356 private FileEntry _fileEntry;
357 private FileVersion _fileVersion;
358
359 }