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