1
14
15 package com.liferay.portlet.documentlibrary.util;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.portlet.LiferayWindowState;
20 import com.liferay.portal.kernel.util.FileUtil;
21 import com.liferay.portal.kernel.util.ParamUtil;
22 import com.liferay.portal.kernel.util.PrefsPropsUtil;
23 import com.liferay.portal.kernel.util.PropsKeys;
24 import com.liferay.portal.kernel.util.StringBundler;
25 import com.liferay.portal.kernel.util.StringPool;
26 import com.liferay.portal.kernel.util.StringUtil;
27 import com.liferay.portal.kernel.util.WebKeys;
28 import com.liferay.portal.theme.ThemeDisplay;
29 import com.liferay.portal.util.PortalUtil;
30 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
31 import com.liferay.portlet.documentlibrary.model.DLFileShortcut;
32 import com.liferay.portlet.documentlibrary.model.DLFolder;
33 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
34 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
35
36 import java.util.Collections;
37 import java.util.HashMap;
38 import java.util.HashSet;
39 import java.util.List;
40 import java.util.Map;
41 import java.util.Set;
42
43 import javax.portlet.PortletURL;
44 import javax.portlet.RenderResponse;
45
46 import javax.servlet.http.HttpServletRequest;
47
48
54 public class DLUtil {
55
56 public static void addPortletBreadcrumbEntries(
57 DLFileEntry fileEntry, HttpServletRequest request,
58 RenderResponse renderResponse)
59 throws Exception {
60
61 DLFolder folder = fileEntry.getFolder();
62
63 addPortletBreadcrumbEntries(folder, request, renderResponse);
64
65 PortletURL portletURL = renderResponse.createRenderURL();
66
67 portletURL.setParameter(
68 "struts_action", "/document_library/view_file_entry");
69 portletURL.setParameter(
70 "folderId", String.valueOf(fileEntry.getFolderId()));
71 portletURL.setParameter("name", fileEntry.getName());
72
73 PortalUtil.addPortletBreadcrumbEntry(
74 request, fileEntry.getTitle(), portletURL.toString());
75 }
76
77 public static void addPortletBreadcrumbEntries(
78 DLFileShortcut fileShortcut, HttpServletRequest request,
79 RenderResponse renderResponse)
80 throws Exception {
81
82 DLFolder folder = fileShortcut.getFolder();
83
84 addPortletBreadcrumbEntries(folder, request, renderResponse);
85
86 PortletURL portletURL = renderResponse.createRenderURL();
87
88 portletURL.setParameter(
89 "struts_action", "/document_library/view_file_shortcut");
90 portletURL.setParameter(
91 "fileShortcutId", String.valueOf(fileShortcut.getFileShortcutId()));
92
93 PortalUtil.addPortletBreadcrumbEntry(
94 request, fileShortcut.getToTitle(), portletURL.toString());
95 }
96
97 public static void addPortletBreadcrumbEntries(
98 long folderId, HttpServletRequest request,
99 RenderResponse renderResponse)
100 throws Exception {
101
102 if (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
103 DLFolder folder = DLFolderLocalServiceUtil.getFolder(folderId);
104
105 addPortletBreadcrumbEntries(folder, request, renderResponse);
106 }
107 }
108
109 public static void addPortletBreadcrumbEntries(
110 DLFolder folder, HttpServletRequest request,
111 RenderResponse renderResponse)
112 throws Exception {
113
114 String strutsAction = ParamUtil.getString(
115 request, "struts_action");
116
117 long groupId = ParamUtil.getLong(request, "groupId");
118
119 PortletURL portletURL = renderResponse.createRenderURL();
120
121 if (strutsAction.equals("/journal/select_document_library") ||
122 strutsAction.equals("/document_library/select_file_entry") ||
123 strutsAction.equals("/document_library/select_folder")) {
124
125 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
126 WebKeys.THEME_DISPLAY);
127
128 portletURL.setWindowState(LiferayWindowState.POP_UP);
129
130 portletURL.setParameter("struts_action", strutsAction);
131 portletURL.setParameter("groupId", String.valueOf(groupId));
132
133 PortalUtil.addPortletBreadcrumbEntry(
134 request, themeDisplay.translate("document-home"),
135 portletURL.toString());
136 }
137 else {
138 portletURL.setParameter("struts_action", "/document_library/view");
139 }
140
141 List<DLFolder> ancestorFolders = folder.getAncestors();
142
143 Collections.reverse(ancestorFolders);
144
145 for (DLFolder ancestorFolder : ancestorFolders) {
146 portletURL.setParameter(
147 "folderId", String.valueOf(ancestorFolder.getFolderId()));
148
149 PortalUtil.addPortletBreadcrumbEntry(
150 request, ancestorFolder.getName(), portletURL.toString());
151 }
152
153 portletURL.setParameter(
154 "folderId", String.valueOf(folder.getFolderId()));
155
156 PortalUtil.addPortletBreadcrumbEntry(
157 request, folder.getName(), portletURL.toString());
158 }
159
160 public static int compareVersions(String version1, String version2) {
161 int[] splitVersion1 = StringUtil.split(version1, StringPool.PERIOD, 0);
162 int[] splitVersion2 = StringUtil.split(version2, StringPool.PERIOD, 0);
163
164 if ((splitVersion1.length != 2) && (splitVersion2.length != 2)) {
165 return 0;
166 }
167 else if ((splitVersion1.length != 2)) {
168 return -1;
169 }
170 else if ((splitVersion2.length != 2)) {
171 return 1;
172 }
173
174 if (splitVersion1[0] > splitVersion2[0]) {
175 return 1;
176 }
177 else if (splitVersion1[0] < splitVersion2[0]) {
178 return -1;
179 }
180 else if (splitVersion1[1] > splitVersion2[1]) {
181 return 1;
182 }
183 else if (splitVersion1[1] < splitVersion2[1]) {
184 return -1;
185 }
186
187 return 0;
188 }
189
190 public static String getFileIcon(String title) {
191 return _instance._getFileIcon(title);
192 }
193
194 public static String getGenericName(String extension) {
195 return _instance._getGenericName(extension);
196 }
197
198 public static String getLockId(long groupId, long folderId, String name) {
199 StringBundler sb = new StringBundler(5);
200
201 sb.append(groupId);
202 sb.append(StringPool.POUND);
203 sb.append(folderId);
204 sb.append(StringPool.POUND);
205 sb.append(name);
206
207 return sb.toString();
208 }
209
210 private DLUtil() {
211 _fileIcons = new HashSet<String>();
212
213 String[] fileIcons = null;
214
215 try {
216 fileIcons = PrefsPropsUtil.getStringArray(
217 PropsKeys.DL_FILE_ICONS, StringPool.COMMA);
218 }
219 catch (Exception e) {
220 _log.error(e, e);
221
222 fileIcons = new String[] {StringPool.BLANK};
223 }
224
225 for (int i = 0; i < fileIcons.length; i++) {
226
227
229 if (!StringPool.STAR.equals(fileIcons[i])) {
230
231
233 String extension = fileIcons[i];
234 extension = extension.substring(1, extension.length());
235
236 _fileIcons.add(extension);
237 }
238 }
239
240 _genericNames = new HashMap<String, String>();
241
242 _genericNames.put("lar", "compressed");
243 _genericNames.put("rar", "compressed");
244 _genericNames.put("zip", "compressed");
245
246 _genericNames.put("doc", "document");
247 _genericNames.put("docx", "document");
248 _genericNames.put("rtf", "document");
249 _genericNames.put("odt", "document");
250
251 _genericNames.put("flv", "flash");
252 _genericNames.put("swf", "flash");
253
254 _genericNames.put("bmp", "image");
255 _genericNames.put("gif", "image");
256 _genericNames.put("jpeg", "image");
257 _genericNames.put("jpg", "image");
258 _genericNames.put("odg", "image");
259 _genericNames.put("png", "image");
260 _genericNames.put("svg", "image");
261
262 _genericNames.put("acc", "music");
263 _genericNames.put("mid", "music");
264 _genericNames.put("mp3", "music");
265 _genericNames.put("wav", "music");
266 _genericNames.put("wma", "music");
267
268 _genericNames.put("pdf", "pdf");
269
270 _genericNames.put("odp", "presentation");
271 _genericNames.put("ppt", "presentation");
272 _genericNames.put("pptx", "presentation");
273
274 _genericNames.put("csv", "spreadsheet");
275 _genericNames.put("ods", "spreadsheet");
276 _genericNames.put("xls", "spreadsheet");
277 _genericNames.put("xlsx", "spreadsheet");
278
279 _genericNames.put("avi", "video");
280 _genericNames.put("mov", "video");
281 _genericNames.put("mp4", "video");
282 _genericNames.put("mpg", "video");
283 _genericNames.put("qt", "video");
284 _genericNames.put("rm", "video");
285 _genericNames.put("wmv", "video");
286 }
287
288 private String _getFileIcon(String title) {
289 String extension = FileUtil.getExtension(title);
290
291 if (!_fileIcons.contains(extension)) {
292 extension = _DEFAULT_FILE_ICON;
293 }
294
295 return extension;
296 }
297
298 private String _getGenericName(String extension) {
299 String genericName = _genericNames.get(extension);
300
301 if (genericName == null) {
302 genericName = _DEFAULT_GENERIC_NAME;
303 }
304
305 return genericName;
306 }
307
308 private static final String _DEFAULT_GENERIC_NAME = "default";
309
310 private static final String _DEFAULT_FILE_ICON = "page";
311
312 private static Log _log = LogFactoryUtil.getLog(DLUtil.class);
313
314 private static DLUtil _instance = new DLUtil();
315
316 private Map<String, String> _genericNames;
317 private Set<String> _fileIcons;
318
319 }