001
014
015 package com.liferay.portlet.documentlibrary.util;
016
017 import com.liferay.portal.kernel.configuration.Filter;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
023 import com.liferay.portal.kernel.portlet.LiferayWindowState;
024 import com.liferay.portal.kernel.repository.model.FileEntry;
025 import com.liferay.portal.kernel.repository.model.FileVersion;
026 import com.liferay.portal.kernel.repository.model.Folder;
027 import com.liferay.portal.kernel.util.GetterUtil;
028 import com.liferay.portal.kernel.util.HtmlUtil;
029 import com.liferay.portal.kernel.util.HttpUtil;
030 import com.liferay.portal.kernel.util.OrderByComparator;
031 import com.liferay.portal.kernel.util.ParamUtil;
032 import com.liferay.portal.kernel.util.PrefsParamUtil;
033 import com.liferay.portal.kernel.util.PrefsPropsUtil;
034 import com.liferay.portal.kernel.util.PropsKeys;
035 import com.liferay.portal.kernel.util.PropsUtil;
036 import com.liferay.portal.kernel.util.SetUtil;
037 import com.liferay.portal.kernel.util.StringBundler;
038 import com.liferay.portal.kernel.util.StringPool;
039 import com.liferay.portal.kernel.util.StringUtil;
040 import com.liferay.portal.kernel.util.Validator;
041 import com.liferay.portal.kernel.util.WebKeys;
042 import com.liferay.portal.model.Group;
043 import com.liferay.portal.service.GroupLocalServiceUtil;
044 import com.liferay.portal.service.WorkflowDefinitionLinkLocalServiceUtil;
045 import com.liferay.portal.theme.ThemeDisplay;
046 import com.liferay.portal.util.PortalUtil;
047 import com.liferay.portlet.PortletPreferencesFactoryUtil;
048 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
049 import com.liferay.portlet.documentlibrary.model.DLFileEntryTypeConstants;
050 import com.liferay.portlet.documentlibrary.model.DLFileShortcut;
051 import com.liferay.portlet.documentlibrary.model.DLFolder;
052 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
053 import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
054 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
055 import com.liferay.portlet.documentlibrary.util.comparator.RepositoryModelCreateDateComparator;
056 import com.liferay.portlet.documentlibrary.util.comparator.RepositoryModelModifiedDateComparator;
057 import com.liferay.portlet.documentlibrary.util.comparator.RepositoryModelNameComparator;
058 import com.liferay.portlet.documentlibrary.util.comparator.RepositoryModelReadCountComparator;
059 import com.liferay.portlet.documentlibrary.util.comparator.RepositoryModelSizeComparator;
060
061 import java.util.Arrays;
062 import java.util.Collections;
063 import java.util.Date;
064 import java.util.HashMap;
065 import java.util.HashSet;
066 import java.util.List;
067 import java.util.Map;
068 import java.util.Set;
069 import java.util.TreeSet;
070
071 import javax.portlet.PortletPreferences;
072 import javax.portlet.PortletRequest;
073 import javax.portlet.PortletURL;
074 import javax.portlet.RenderResponse;
075
076 import javax.servlet.http.HttpServletRequest;
077
078
082 public class DLUtil {
083
084 public static void addPortletBreadcrumbEntries(
085 DLFileShortcut dlFileShortcut, HttpServletRequest request,
086 RenderResponse renderResponse)
087 throws Exception {
088
089 Folder folder = dlFileShortcut.getFolder();
090
091 if (folder.getFolderId() !=
092 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
093
094 addPortletBreadcrumbEntries(folder, request, renderResponse);
095 }
096
097 PortletURL portletURL = renderResponse.createRenderURL();
098
099 portletURL.setParameter(
100 "struts_action", "/document_library/view_file_entry");
101 portletURL.setParameter(
102 "fileEntryId", String.valueOf(dlFileShortcut.getToFileEntryId()));
103
104 PortalUtil.addPortletBreadcrumbEntry(
105 request, dlFileShortcut.getToTitle(), portletURL.toString());
106 }
107
108 public static void addPortletBreadcrumbEntries(
109 FileEntry fileEntry, HttpServletRequest request,
110 RenderResponse renderResponse)
111 throws Exception {
112
113 Folder folder = fileEntry.getFolder();
114
115 if (folder.getFolderId() !=
116 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
117
118 addPortletBreadcrumbEntries(folder, request, renderResponse);
119 }
120
121 PortletURL portletURL = renderResponse.createRenderURL();
122
123 portletURL.setParameter(
124 "struts_action", "/document_library/view_file_entry");
125 portletURL.setParameter(
126 "fileEntryId", String.valueOf(fileEntry.getFileEntryId()));
127
128 PortalUtil.addPortletBreadcrumbEntry(
129 request, fileEntry.getTitle(), portletURL.toString());
130 }
131
132 public static void addPortletBreadcrumbEntries(
133 Folder folder, HttpServletRequest request,
134 LiferayPortletResponse liferayPortletResponse)
135 throws Exception {
136
137 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
138 WebKeys.THEME_DISPLAY);
139
140 PortletURL portletURL = liferayPortletResponse.createRenderURL();
141
142 portletURL.setParameter("struts_action", "/document_library/view");
143
144 Map<String, Object> data = new HashMap<String, Object>();
145
146 data.put("direction-right", Boolean.TRUE.toString());
147 data.put("folder-id", _getDefaultFolderId(request));
148
149 PortalUtil.addPortletBreadcrumbEntry(
150 request, themeDisplay.translate("home"), portletURL.toString(),
151 data);
152
153 addPortletBreadcrumbEntries(folder, request, portletURL);
154 }
155
156 public static void addPortletBreadcrumbEntries(
157 Folder folder, HttpServletRequest request, PortletURL portletURL)
158 throws Exception {
159
160 long defaultFolderId = _getDefaultFolderId(request);
161
162 List<Folder> ancestorFolders = Collections.emptyList();
163
164 if ((folder != null) && (folder.getFolderId() != defaultFolderId)) {
165 ancestorFolders = folder.getAncestors();
166
167 int indexOfRootFolder = -1;
168
169 for (int i = 0; i < ancestorFolders.size(); i++) {
170 Folder ancestorFolder = ancestorFolders.get(i);
171
172 if (defaultFolderId == ancestorFolder.getFolderId()) {
173 indexOfRootFolder = i;
174 }
175 }
176
177 if (indexOfRootFolder > -1) {
178 ancestorFolders = ancestorFolders.subList(0, indexOfRootFolder);
179 }
180 }
181
182 Collections.reverse(ancestorFolders);
183
184 for (Folder ancestorFolder : ancestorFolders) {
185 portletURL.setParameter(
186 "folderId", String.valueOf(ancestorFolder.getFolderId()));
187
188 Map<String, Object> data = new HashMap<String, Object>();
189
190 data.put("direction-right", Boolean.TRUE.toString());
191 data.put("folder-id", ancestorFolder.getFolderId());
192
193 PortalUtil.addPortletBreadcrumbEntry(
194 request, ancestorFolder.getName(), portletURL.toString(), data);
195 }
196
197 long folderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
198
199 if (folder != null) {
200 folderId = folder.getFolderId();
201 }
202
203 portletURL.setParameter("folderId", String.valueOf(folderId));
204
205 if ((folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) &&
206 (folderId != defaultFolderId)) {
207
208 Map<String, Object> data = new HashMap<String, Object>();
209
210 data.put("direction-right", Boolean.TRUE.toString());
211 data.put("folder-id", folderId);
212
213 PortalUtil.addPortletBreadcrumbEntry(
214 request, folder.getName(), portletURL.toString(), data);
215 }
216 }
217
218 public static void addPortletBreadcrumbEntries(
219 Folder folder, HttpServletRequest request,
220 RenderResponse renderResponse)
221 throws Exception {
222
223 String strutsAction = ParamUtil.getString(request, "struts_action");
224
225 long groupId = ParamUtil.getLong(request, "groupId");
226
227 PortletURL portletURL = renderResponse.createRenderURL();
228
229 if (strutsAction.equals("/journal/select_document_library") ||
230 strutsAction.equals("/document_library/select_file_entry") ||
231 strutsAction.equals("/document_library/select_folder") ||
232 strutsAction.equals("/document_library_display/select_folder") ||
233 strutsAction.equals("/image_gallery_display/select_folder")) {
234
235 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
236 WebKeys.THEME_DISPLAY);
237
238 portletURL.setWindowState(LiferayWindowState.POP_UP);
239
240 portletURL.setParameter("struts_action", strutsAction);
241 portletURL.setParameter("groupId", String.valueOf(groupId));
242
243 PortalUtil.addPortletBreadcrumbEntry(
244 request, themeDisplay.translate("home"), portletURL.toString());
245 }
246 else {
247 portletURL.setParameter("struts_action", "/document_library/view");
248 }
249
250 addPortletBreadcrumbEntries(folder, request, portletURL);
251 }
252
253 public static void addPortletBreadcrumbEntries(
254 long folderId, HttpServletRequest request,
255 RenderResponse renderResponse)
256 throws Exception {
257
258 if (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
259 Folder folder = DLAppLocalServiceUtil.getFolder(folderId);
260
261 if (folder.getFolderId() !=
262 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
263
264 addPortletBreadcrumbEntries(folder, request, renderResponse);
265 }
266 }
267 }
268
269 public static int compareVersions(String version1, String version2) {
270 int[] splitVersion1 = StringUtil.split(version1, StringPool.PERIOD, 0);
271 int[] splitVersion2 = StringUtil.split(version2, StringPool.PERIOD, 0);
272
273 if ((splitVersion1.length != 2) && (splitVersion2.length != 2)) {
274 return 0;
275 }
276 else if (splitVersion1.length != 2) {
277 return -1;
278 }
279 else if (splitVersion2.length != 2) {
280 return 1;
281 }
282
283 if (splitVersion1[0] > splitVersion2[0]) {
284 return 1;
285 }
286 else if (splitVersion1[0] < splitVersion2[0]) {
287 return -1;
288 }
289 else if (splitVersion1[1] > splitVersion2[1]) {
290 return 1;
291 }
292 else if (splitVersion1[1] < splitVersion2[1]) {
293 return -1;
294 }
295
296 return 0;
297 }
298
299 public static Set<String> getAllMediaGalleryMimeTypes() {
300 return _instance._allMediaGalleryMimeTypes;
301 }
302
303 public static String getDDMStructureKey(DLFileEntryType dlFileEntryType) {
304 return getDDMStructureKey(dlFileEntryType.getUuid());
305 }
306
307 public static String getDDMStructureKey(String fileEntryTypeUuid) {
308 return "auto_" + fileEntryTypeUuid;
309 }
310
311 public static String getDeprecatedDDMStructureKey(
312 DLFileEntryType dlFileEntryType) {
313
314 return getDeprecatedDDMStructureKey(
315 dlFileEntryType.getFileEntryTypeId());
316 }
317
318 public static String getDeprecatedDDMStructureKey(long fileEntryTypeId) {
319 return "auto_" + fileEntryTypeId;
320 }
321
322 public static String getDividedPath(long id) {
323 StringBundler sb = new StringBundler(16);
324
325 long dividend = id;
326
327 while ((dividend / _DIVISOR) != 0) {
328 sb.append(StringPool.SLASH);
329 sb.append(dividend % _DIVISOR);
330
331 dividend = dividend / _DIVISOR;
332 }
333
334 sb.append(StringPool.SLASH);
335 sb.append(id);
336
337 return sb.toString();
338 }
339
340 public static String getFileEntryImage(
341 FileEntry fileEntry, ThemeDisplay themeDisplay) {
342
343 StringBundler sb = new StringBundler(5);
344
345 sb.append("<img style=\"border-width: 0; text-align: left;\" src=\"");
346 sb.append(themeDisplay.getPathThemeImages());
347 sb.append("/file_system/small/");
348 sb.append(fileEntry.getIcon());
349 sb.append(".png\">");
350
351 return sb.toString();
352 }
353
354 public static String getFileIcon(String extension) {
355 return _instance._getFileIcon(extension);
356 }
357
358 public static String getGenericName(String extension) {
359 return _instance._getGenericName(extension);
360 }
361
362 public static long[] getGroupIds(long groupId)
363 throws PortalException, SystemException {
364
365 Group scopeGroup = GroupLocalServiceUtil.getGroup(groupId);
366
367 Group companyGroup = GroupLocalServiceUtil.getCompanyGroup(
368 scopeGroup.getCompanyId());
369
370 if (scopeGroup.isLayout()) {
371 return new long[] {
372 scopeGroup.getParentGroupId(), companyGroup.getGroupId()
373 };
374 }
375 else {
376 return new long[] {groupId, companyGroup.getGroupId()};
377 }
378 }
379
380 public static long[] getGroupIds(ThemeDisplay themeDisplay)
381 throws PortalException, SystemException {
382
383 return getGroupIds(themeDisplay.getScopeGroupId());
384 }
385
386 public static String[] getMediaGalleryMimeTypes(
387 PortletPreferences portletPreferences, PortletRequest portletRequest) {
388
389 String mimeTypes = PrefsParamUtil.getString(
390 portletPreferences, portletRequest, "mimeTypes",
391 _instance._allMediaGalleryMimeTypesString);
392
393 String[] mimeTypesArray = StringUtil.split(mimeTypes);
394
395 Arrays.sort(mimeTypesArray);
396
397 return mimeTypesArray;
398 }
399
400 public static String getPreviewURL(
401 FileEntry fileEntry, FileVersion fileVersion, ThemeDisplay themeDisplay,
402 String queryString) {
403
404 return getPreviewURL(
405 fileEntry, fileVersion, themeDisplay, queryString, true, true);
406 }
407
408
412 public static String getPreviewURL(
413 FileEntry fileEntry, FileVersion fileVersion, ThemeDisplay themeDisplay,
414 String queryString, boolean appendToken) {
415
416 return getPreviewURL(
417 fileEntry, fileVersion, themeDisplay, queryString, true, true);
418 }
419
420 public static String getPreviewURL(
421 FileEntry fileEntry, FileVersion fileVersion, ThemeDisplay themeDisplay,
422 String queryString, boolean appendVersion, boolean absoluteURL) {
423
424 StringBundler sb = new StringBundler(15);
425
426 if (themeDisplay != null) {
427 if (absoluteURL) {
428 sb.append(themeDisplay.getPortalURL());
429 }
430
431 sb.append(themeDisplay.getPathContext());
432 }
433
434 sb.append("/documents/");
435 sb.append(fileEntry.getRepositoryId());
436 sb.append(StringPool.SLASH);
437 sb.append(fileEntry.getFolderId());
438 sb.append(StringPool.SLASH);
439 sb.append(HttpUtil.encodeURL(HtmlUtil.unescape(fileEntry.getTitle())));
440 sb.append(StringPool.SLASH);
441 sb.append(fileEntry.getUuid());
442
443 if (appendVersion) {
444 sb.append("?version=");
445 sb.append(fileVersion.getVersion());
446 }
447
448 if (ImageProcessorUtil.isImageSupported(fileVersion)) {
449 if (appendVersion) {
450 sb.append("&t=");
451 }
452 else {
453 sb.append("?t=");
454 }
455
456 Date modifiedDate = fileVersion.getModifiedDate();
457
458 sb.append(modifiedDate.getTime());
459 }
460
461 sb.append(queryString);
462
463 String previewURL = sb.toString();
464
465 if ((themeDisplay != null) && themeDisplay.isAddSessionIdToURL()) {
466 return PortalUtil.getURLWithSessionId(
467 previewURL, themeDisplay.getSessionId());
468 }
469
470 return previewURL;
471 }
472
473 public static OrderByComparator getRepositoryModelOrderByComparator(
474 String orderByCol, String orderByType) {
475
476 boolean orderByAsc = true;
477
478 if (orderByType.equals("desc")) {
479 orderByAsc = false;
480 }
481
482 OrderByComparator orderByComparator = null;
483
484 if (orderByCol.equals("creationDate")) {
485 orderByComparator = new RepositoryModelCreateDateComparator(
486 orderByAsc);
487 }
488 else if (orderByCol.equals("downloads")) {
489 orderByComparator = new RepositoryModelReadCountComparator(
490 orderByAsc);
491 }
492 else if (orderByCol.equals("modifiedDate")) {
493 orderByComparator = new RepositoryModelModifiedDateComparator(
494 orderByAsc);
495 }
496 else if (orderByCol.equals("size")) {
497 orderByComparator = new RepositoryModelSizeComparator(orderByAsc);
498 }
499 else {
500 orderByComparator = new RepositoryModelNameComparator(orderByAsc);
501 }
502
503 return orderByComparator;
504 }
505
506 public static String getTempFileId(long id, String version) {
507 return getTempFileId(id, version, null);
508 }
509
510 public static String getTempFileId(
511 long id, String version, String languageId) {
512
513 if (Validator.isNull(languageId)) {
514 return String.valueOf(id).concat(StringPool.PERIOD).concat(version);
515 }
516
517 StringBundler sb = new StringBundler(5);
518
519 sb.append(id);
520 sb.append(StringPool.PERIOD);
521 sb.append(version);
522 sb.append(StringPool.PERIOD);
523 sb.append(languageId);
524
525 return sb.toString();
526 }
527
528 public static String getThumbnailSrc(
529 FileEntry fileEntry, DLFileShortcut dlFileShortcut,
530 ThemeDisplay themeDisplay)
531 throws Exception {
532
533 return getThumbnailSrc(
534 fileEntry, fileEntry.getFileVersion(), dlFileShortcut,
535 themeDisplay);
536 }
537
538 public static String getThumbnailSrc(
539 FileEntry fileEntry, FileVersion fileVersion,
540 DLFileShortcut dlFileShortcut, ThemeDisplay themeDisplay)
541 throws Exception {
542
543 StringBundler sb = new StringBundler(4);
544
545 sb.append(themeDisplay.getPathThemeImages());
546 sb.append("/file_system/large/");
547 sb.append(DLUtil.getGenericName(fileEntry.getExtension()));
548 sb.append(".png");
549
550 String thumbnailSrc = sb.toString();
551
552 if (dlFileShortcut == null) {
553 String thumbnailQueryString = null;
554
555 if (ImageProcessorUtil.hasImages(fileVersion)) {
556 thumbnailQueryString = "&imageThumbnail=1";
557 }
558 else if (PDFProcessorUtil.hasImages(fileVersion)) {
559 thumbnailQueryString = "&documentThumbnail=1";
560 }
561 else if (VideoProcessorUtil.hasVideo(fileVersion)) {
562 thumbnailQueryString = "&videoThumbnail=1";
563 }
564
565 if (Validator.isNotNull(thumbnailQueryString)) {
566 thumbnailSrc = getPreviewURL(
567 fileEntry, fileVersion, themeDisplay, thumbnailQueryString,
568 true, true);
569 }
570 }
571
572 return thumbnailSrc;
573 }
574
575 public static String getThumbnailStyle() throws Exception {
576 StringBundler sb = new StringBundler(5);
577
578 sb.append("max-height: ");
579 sb.append(
580 PrefsPropsUtil.getLong(
581 PropsKeys.DL_FILE_ENTRY_THUMBNAIL_MAX_HEIGHT));
582 sb.append("px; max-width: ");
583 sb.append(
584 PrefsPropsUtil.getLong(
585 PropsKeys.DL_FILE_ENTRY_THUMBNAIL_MAX_WIDTH));
586 sb.append("px;");
587
588 return sb.toString();
589 }
590
591 public static String getTitleWithExtension(FileEntry fileEntry) {
592 String title = fileEntry.getTitle();
593 String extension = fileEntry.getExtension();
594
595 return getTitleWithExtension(title, extension);
596 }
597
598 public static String getTitleWithExtension(String title, String extension) {
599 if (Validator.isNotNull(extension)) {
600 String periodAndExtension = StringPool.PERIOD + extension;
601
602 if (!title.endsWith(periodAndExtension)) {
603 title += periodAndExtension;
604 }
605 }
606
607 return title;
608 }
609
610 public static String getWebDavURL(
611 ThemeDisplay themeDisplay, Folder folder, FileEntry fileEntry)
612 throws PortalException, SystemException {
613
614 StringBuilder sb = new StringBuilder();
615
616 if (folder != null) {
617 Folder curFolder = folder;
618
619 while (true) {
620 sb.insert(0, HttpUtil.encodeURL(curFolder.getName(), true));
621 sb.insert(0, StringPool.SLASH);
622
623 if (curFolder.getParentFolderId() ==
624 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
625
626 break;
627 }
628 else {
629 curFolder = DLAppLocalServiceUtil.getFolder(
630 curFolder.getParentFolderId());
631 }
632 }
633 }
634
635 if (fileEntry != null) {
636 sb.append(StringPool.SLASH);
637 sb.append(HttpUtil.encodeURL(fileEntry.getTitle(), true));
638 }
639
640 Group group = themeDisplay.getScopeGroup();
641
642 return themeDisplay.getPortalURL() + themeDisplay.getPathContext() +
643 "/api/secure/webdav" + group.getFriendlyURL() +
644 "/document_library" + sb.toString();
645 }
646
647 public static boolean hasWorkflowDefinitionLink(
648 long companyId, long groupId, long folderId, long fileEntryTypeId)
649 throws Exception {
650
651 while (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
652 DLFolder dlFolder = DLFolderLocalServiceUtil.fetchDLFolder(
653 folderId);
654
655 if (dlFolder == null) {
656 return false;
657 }
658
659 if (dlFolder.isOverrideFileEntryTypes()) {
660 break;
661 }
662
663 folderId = dlFolder.getParentFolderId();
664 }
665
666 if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(
667 companyId, groupId, DLFolderConstants.getClassName(), folderId,
668 fileEntryTypeId) ||
669 WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(
670 companyId, groupId, DLFolderConstants.getClassName(), folderId,
671 DLFileEntryTypeConstants.FILE_ENTRY_TYPE_ID_ALL)) {
672
673 return true;
674 }
675
676 return false;
677 }
678
679 public static boolean isAutoGeneratedDLFileEntryTypeDDMStructureKey(
680 String ddmStructureKey) {
681
682 if (ddmStructureKey.startsWith("auto_")) {
683 return true;
684 }
685
686 return false;
687 }
688
689 private static long _getDefaultFolderId(HttpServletRequest request)
690 throws Exception {
691
692 PortletPreferences portletPreferences =
693 PortletPreferencesFactoryUtil.getPortletPreferences(
694 request, PortalUtil.getPortletId(request));
695
696 return GetterUtil.getLong(
697 portletPreferences.getValue(
698 "rootFolderId",
699 String.valueOf(DLFolderConstants.DEFAULT_PARENT_FOLDER_ID)));
700 }
701
702 private DLUtil() {
703 _allMediaGalleryMimeTypes.addAll(
704 SetUtil.fromArray(
705 PropsUtil.getArray(
706 PropsKeys.DL_FILE_ENTRY_PREVIEW_AUDIO_MIME_TYPES)));
707 _allMediaGalleryMimeTypes.addAll(
708 SetUtil.fromArray(
709 PropsUtil.getArray(
710 PropsKeys.DL_FILE_ENTRY_PREVIEW_VIDEO_MIME_TYPES)));
711 _allMediaGalleryMimeTypes.addAll(
712 SetUtil.fromArray(
713 PropsUtil.getArray(
714 PropsKeys.DL_FILE_ENTRY_PREVIEW_IMAGE_MIME_TYPES)));
715
716 _allMediaGalleryMimeTypesString = StringUtil.merge(
717 _allMediaGalleryMimeTypes);
718
719 String[] fileIcons = null;
720
721 try {
722 fileIcons = PrefsPropsUtil.getStringArray(
723 PropsKeys.DL_FILE_ICONS, StringPool.COMMA);
724 }
725 catch (Exception e) {
726 _log.error(e, e);
727
728 fileIcons = new String[] {StringPool.BLANK};
729 }
730
731 for (int i = 0; i < fileIcons.length; i++) {
732
733
734
735 if (!StringPool.STAR.equals(fileIcons[i])) {
736
737
738
739 String extension = fileIcons[i];
740 extension = extension.substring(1);
741
742 _fileIcons.add(extension);
743 }
744 }
745
746 String[] genericNames = PropsUtil.getArray(
747 PropsKeys.DL_FILE_GENERIC_NAMES);
748
749 for (String genericName : genericNames) {
750 _populateGenericNamesMap(genericName);
751 }
752 }
753
754 private String _getFileIcon(String extension) {
755 if (!_fileIcons.contains(extension)) {
756 extension = _DEFAULT_FILE_ICON;
757 }
758
759 return extension;
760 }
761
762 private String _getGenericName(String extension) {
763 String genericName = _genericNames.get(extension);
764
765 if (genericName == null) {
766 genericName = _DEFAULT_GENERIC_NAME;
767 }
768
769 return genericName;
770 }
771
772 private void _populateGenericNamesMap(String genericName) {
773 String[] extensions = PropsUtil.getArray(
774 PropsKeys.DL_FILE_GENERIC_EXTENSIONS, new Filter(genericName));
775
776 for (String extension : extensions) {
777 _genericNames.put(extension, genericName);
778 }
779 }
780
781 private static final String _DEFAULT_FILE_ICON = "page";
782
783 private static final String _DEFAULT_GENERIC_NAME = "default";
784
785 private static final long _DIVISOR = 256;;
786
787 private static Log _log = LogFactoryUtil.getLog(DLUtil.class);
788
789 private static DLUtil _instance = new DLUtil();
790
791 private Set<String> _allMediaGalleryMimeTypes = new TreeSet<String>();
792 private String _allMediaGalleryMimeTypesString;
793 private Set<String> _fileIcons = new HashSet<String>();
794 private Map<String, String> _genericNames = new HashMap<String, String>();
795
796 }