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(
176 _fileEntry, null, themeDisplay);
177
178 if (Validator.isNotNull(thumbnailSrc)) {
179 return thumbnailSrc;
180 }
181
182 return themeDisplay.getPathThemeImages() +
183 "/file_system/large/document.png";
184 }
185
186 @Override
187 public String getTitle(Locale locale) {
188 String title = null;
189
190 if (getAssetRendererType() == AssetRendererFactory.TYPE_LATEST) {
191 title = _fileVersion.getTitle();
192 }
193 else {
194 title = _fileEntry.getTitle();
195 }
196
197 return TrashUtil.getOriginalTitle(title);
198 }
199
200 @Override
201 public String getType() {
202 return DLFileEntryAssetRendererFactory.TYPE;
203 }
204
205 @Override
206 public String getURLDownload(ThemeDisplay themeDisplay) {
207 return DLUtil.getPreviewURL(
208 _fileEntry, _fileVersion, themeDisplay, StringPool.BLANK);
209 }
210
211 @Override
212 public PortletURL getURLEdit(
213 LiferayPortletRequest liferayPortletRequest,
214 LiferayPortletResponse liferayPortletResponse)
215 throws Exception {
216
217 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
218 getControlPanelPlid(liferayPortletRequest),
219 PortletKeys.DOCUMENT_LIBRARY, PortletRequest.RENDER_PHASE);
220
221 portletURL.setParameter(
222 "struts_action", "/document_library/edit_file_entry");
223 portletURL.setParameter(
224 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
225
226 return portletURL;
227 }
228
229 @Override
230 public PortletURL getURLExport(
231 LiferayPortletRequest liferayPortletRequest,
232 LiferayPortletResponse liferayPortletResponse) {
233
234 PortletURL portletURL = liferayPortletResponse.createActionURL();
235
236 portletURL.setParameter("struts_action", "/asset_publisher/get_file");
237 portletURL.setParameter(
238 "groupId", String.valueOf(_fileEntry.getRepositoryId()));
239 portletURL.setParameter(
240 "folderId", String.valueOf(_fileEntry.getFolderId()));
241 portletURL.setParameter("title", String.valueOf(_fileEntry.getTitle()));
242
243 return portletURL;
244 }
245
246 @Override
247 public String getURLImagePreview(PortletRequest portletRequest)
248 throws Exception {
249
250 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
251 WebKeys.THEME_DISPLAY);
252
253 return DLUtil.getImagePreviewURL(
254 _fileEntry, _fileVersion, themeDisplay);
255 }
256
257 @Override
258 public PortletURL getURLView(
259 LiferayPortletResponse liferayPortletResponse,
260 WindowState windowState)
261 throws Exception {
262
263 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
264
265 PortletURL portletURL = assetRendererFactory.getURLView(
266 liferayPortletResponse, windowState);
267
268 portletURL.setParameter(
269 "struts_action", "/document_library_display/view_file_entry");
270 portletURL.setParameter(
271 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
272 portletURL.setWindowState(windowState);
273
274 return portletURL;
275 }
276
277 @Override
278 public String getURLViewInContext(
279 LiferayPortletRequest liferayPortletRequest,
280 LiferayPortletResponse liferayPortletResponse,
281 String noSuchEntryRedirect) {
282
283 return getURLViewInContext(
284 liferayPortletRequest, noSuchEntryRedirect,
285 "/document_library/find_file_entry", "fileEntryId",
286 _fileEntry.getFileEntryId());
287 }
288
289 @Override
290 public long getUserId() {
291 return _fileEntry.getUserId();
292 }
293
294 @Override
295 public String getUserName() {
296 return _fileEntry.getUserName();
297 }
298
299 @Override
300 public String getUuid() {
301 return _fileEntry.getUuid();
302 }
303
304 public boolean hasDeletePermission(PermissionChecker permissionChecker)
305 throws PortalException {
306
307 return DLFileEntryPermission.contains(
308 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.DELETE);
309 }
310
311 @Override
312 public boolean hasEditPermission(PermissionChecker permissionChecker)
313 throws PortalException {
314
315 return DLFileEntryPermission.contains(
316 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.UPDATE);
317 }
318
319 @Override
320 public boolean hasViewPermission(PermissionChecker permissionChecker)
321 throws PortalException {
322
323 return DLFileEntryPermission.contains(
324 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.VIEW);
325 }
326
327 @Override
328 public boolean isConvertible() {
329 return true;
330 }
331
332 @Override
333 public boolean isPrintable() {
334 return false;
335 }
336
337 @Override
338 public String render(
339 RenderRequest renderRequest, RenderResponse renderResponse,
340 String template)
341 throws Exception {
342
343 if (template.equals(TEMPLATE_ABSTRACT) ||
344 template.equals(TEMPLATE_FULL_CONTENT)) {
345
346 renderRequest.setAttribute(
347 WebKeys.DOCUMENT_LIBRARY_FILE_ENTRY, _fileEntry);
348
349 String version = ParamUtil.getString(renderRequest, "version");
350
351 if ((getAssetRendererType() == AssetRendererFactory.TYPE_LATEST) ||
352 Validator.isNotNull(version)) {
353
354 if ((_fileEntry != null) && Validator.isNotNull(version)) {
355 _fileVersion = _fileEntry.getFileVersion(version);
356 }
357
358 renderRequest.setAttribute(
359 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION, _fileVersion);
360 }
361 else {
362 renderRequest.setAttribute(
363 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION,
364 _fileEntry.getFileVersion());
365 }
366
367 return "/html/portlet/document_library/asset/file_entry_" +
368 template + ".jsp";
369 }
370 else {
371 return null;
372 }
373 }
374
375 @Override
376 public void setAddToPagePreferences(
377 PortletPreferences preferences, String portletId,
378 ThemeDisplay themeDisplay)
379 throws Exception {
380
381 preferences.setValue("showAssetTitle", Boolean.FALSE.toString());
382 preferences.setValue("showExtraInfo", Boolean.FALSE.toString());
383
384 super.setAddToPagePreferences(preferences, portletId, themeDisplay);
385 }
386
387 private final FileEntry _fileEntry;
388 private FileVersion _fileVersion;
389
390 }