1
22
23 package com.liferay.portlet.documentlibrary.util;
24
25 import com.liferay.portal.kernel.language.LanguageUtil;
26 import com.liferay.portal.kernel.portlet.LiferayWindowState;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.kernel.util.StringMaker;
29 import com.liferay.portal.kernel.util.StringPool;
30 import com.liferay.portal.kernel.util.Validator;
31 import com.liferay.portal.util.PropsUtil;
32 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
33 import com.liferay.portlet.documentlibrary.model.DLFolder;
34 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
35 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
36 import com.liferay.util.CollectionFactory;
37
38 import java.util.Set;
39
40 import javax.portlet.PortletURL;
41 import javax.portlet.RenderRequest;
42 import javax.portlet.RenderResponse;
43 import javax.portlet.WindowState;
44
45 import javax.servlet.jsp.PageContext;
46
47
53 public class DLUtil {
54
55 public static String getBreadcrumbs(
56 long folderId, String name, PageContext pageContext,
57 RenderRequest req, RenderResponse res)
58 throws Exception {
59
60 if ((folderId > 0) && Validator.isNotNull(name)) {
61 DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
62 folderId, name);
63
64 return getBreadcrumbs(
65 fileEntry.getFolder(), fileEntry, pageContext, req, res);
66 }
67 else {
68 DLFolder folder = null;
69
70 try {
71 folder = DLFolderLocalServiceUtil.getFolder(folderId);
72 }
73 catch (Exception e) {
74 }
75
76 return getBreadcrumbs(folder, null, pageContext, req, res);
77 }
78 }
79
80 public static String getBreadcrumbs(
81 DLFolder folder, DLFileEntry fileEntry, PageContext pageContext,
82 RenderRequest req, RenderResponse res)
83 throws Exception {
84
85 long groupId = ParamUtil.getLong(req, "groupId");
86
87 if ((fileEntry != null) && (folder == null)) {
88 folder = fileEntry.getFolder();
89 }
90
91 PortletURL foldersURL = res.createRenderURL();
92
93 WindowState windowState = req.getWindowState();
94
95 if (windowState.equals(LiferayWindowState.POP_UP)) {
96 foldersURL.setWindowState(LiferayWindowState.POP_UP);
97
98 String strutsAction = ParamUtil.getString(req, "struts_action");
99
100 foldersURL.setParameter("struts_action", strutsAction);
101 foldersURL.setParameter("groupId", String.valueOf(groupId));
102 }
103 else {
104
106 foldersURL.setParameter("struts_action", "/document_library/view");
107 }
108
109 String foldersLink =
110 "<a href=\"" + foldersURL.toString() + "\">" +
111 LanguageUtil.get(pageContext, "folders") + "</a>";
112
113 if (folder == null) {
114 return foldersLink;
115 }
116
117 String breadcrumbs = StringPool.BLANK;
118
119 if (folder != null) {
120 for (int i = 0;; i++) {
121 PortletURL portletURL = res.createRenderURL();
122
123 if (windowState.equals(LiferayWindowState.POP_UP)) {
124 portletURL.setWindowState(LiferayWindowState.POP_UP);
125
126 String strutsAction = ParamUtil.getString(
127 req, "struts_action");
128
129 portletURL.setParameter("struts_action", strutsAction);
130 portletURL.setParameter("groupId", String.valueOf(groupId));
131 portletURL.setParameter(
132 "folderId", String.valueOf(folder.getFolderId()));
133 }
134 else {
135 portletURL.setWindowState(WindowState.MAXIMIZED);
136
137 portletURL.setParameter(
138 "struts_action", "/document_library/view");
139 portletURL.setParameter(
140 "folderId", String.valueOf(folder.getFolderId()));
141 }
142
143 String folderLink =
144 "<a href=\"" + portletURL.toString() + "\">" +
145 folder.getName() + "</a>";
146
147 if (i == 0) {
148 breadcrumbs = folderLink;
149 }
150 else {
151 breadcrumbs = folderLink + " » " + breadcrumbs;
152 }
153
154 if (folder.isRoot()) {
155 break;
156 }
157
158 folder = DLFolderLocalServiceUtil.getFolder(
159 folder.getParentFolderId());
160 }
161 }
162
163 breadcrumbs = foldersLink + " » " + breadcrumbs;
164
165 if (fileEntry != null) {
166 PortletURL fileEntryURL = res.createRenderURL();
167
168 fileEntryURL.setWindowState(WindowState.MAXIMIZED);
169
170 fileEntryURL.setParameter(
171 "struts_action", "/document_library/edit_file_entry");
172 fileEntryURL.setParameter(
173 "folderId", String.valueOf(fileEntry.getFolderId()));
174 fileEntryURL.setParameter("name", fileEntry.getName());
175
176 String fileEntryLink =
177 "<a href=\"" + fileEntryURL.toString() + "\">" +
178 fileEntry.getName() + "</a>";
179
180 breadcrumbs = breadcrumbs + " » " + fileEntryLink;
181 }
182
183 return breadcrumbs;
184 }
185
186 public static String getFileExtension(String name) {
187 return _instance._getFileExtension(name);
188 }
189
190 public static String getLockId(long folderId, String name) {
191 StringMaker sm = new StringMaker();
192
193 sm.append(folderId);
194 sm.append(StringPool.POUND);
195 sm.append(name);
196
197 return sm.toString();
198 }
199
200 private DLUtil() {
201 _fileExtensions = CollectionFactory.getHashSet();
202
203 String[] fileExtensions =
204 PropsUtil.getArray(PropsUtil.DL_FILE_EXTENSIONS);
205
206 for (int i = 0; i < fileExtensions.length; i++) {
207
208
210 if (!StringPool.STAR.equals(fileExtensions[i])) {
211
212
214 String extension = fileExtensions[i];
215 extension = extension.substring(1, extension.length());
216
217 _fileExtensions.add(extension);
218 }
219 }
220 }
221
222 private String _getFileExtension(String name) {
223 String extension = StringPool.BLANK;
224
225 int pos = name.lastIndexOf(StringPool.PERIOD);
226
227 if (pos != -1) {
228 extension = name.substring(pos + 1, name.length()).toLowerCase();
229 }
230
231 if (!_fileExtensions.contains(extension)) {
232 extension = _DEFAULT_FILE_EXTENSION;
233 }
234
235 return extension;
236 }
237
238 private static final String _DEFAULT_FILE_EXTENSION = "page";
239
240 private static DLUtil _instance = new DLUtil();
241
242 private Set _fileExtensions;
243
244 }