1
19
20 package com.liferay.portlet.documentlibrary.util;
21
22 import com.liferay.portal.SystemException;
23 import com.liferay.portal.kernel.language.LanguageUtil;
24 import com.liferay.portal.kernel.log.Log;
25 import com.liferay.portal.kernel.log.LogFactoryUtil;
26 import com.liferay.portal.kernel.portlet.LiferayWindowState;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.kernel.util.StringPool;
29 import com.liferay.portal.kernel.util.Validator;
30 import com.liferay.portal.util.PrefsPropsUtil;
31 import com.liferay.portal.util.PropsKeys;
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
37 import java.util.HashSet;
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
54 public class DLUtil {
55
56 public static String getBreadcrumbs(
57 long folderId, String name, long rootFolderId,
58 PageContext pageContext, RenderRequest renderRequest,
59 RenderResponse renderResponse)
60 throws Exception {
61
62 if ((folderId > 0) && Validator.isNotNull(name)) {
63 DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
64 folderId, name);
65
66 return getBreadcrumbs(
67 fileEntry.getFolder(), fileEntry, rootFolderId, pageContext,
68 renderRequest, renderResponse);
69 }
70 else {
71 DLFolder folder = null;
72
73 try {
74 folder = DLFolderLocalServiceUtil.getFolder(folderId);
75 }
76 catch (Exception e) {
77 }
78
79 return getBreadcrumbs(
80 folder, null, rootFolderId, pageContext, renderRequest,
81 renderResponse);
82 }
83 }
84
85 public static String getBreadcrumbs(
86 DLFolder folder, DLFileEntry fileEntry, long rootFolderId,
87 PageContext pageContext, RenderRequest renderRequest,
88 RenderResponse renderResponse)
89 throws Exception {
90
91 String strutsAction = ParamUtil.getString(
92 renderRequest, "struts_action");
93
94 long groupId = ParamUtil.getLong(renderRequest, "groupId");
95
96 if ((fileEntry != null) && (folder == null)) {
97 folder = fileEntry.getFolder();
98 }
99
100 PortletURL foldersURL = renderResponse.createRenderURL();
101
102 WindowState windowState = renderRequest.getWindowState();
103
104 if (windowState.equals(LiferayWindowState.POP_UP)) {
105 foldersURL.setWindowState(LiferayWindowState.POP_UP);
106
107 foldersURL.setParameter("struts_action", strutsAction);
108 foldersURL.setParameter("groupId", String.valueOf(groupId));
109 }
110 else {
111
113 foldersURL.setParameter("struts_action", "/document_library/view");
114 }
115
116 String foldersLink =
117 "<a href=\"" + foldersURL.toString() + "\">" +
118 LanguageUtil.get(pageContext, "folders") + "</a>";
119
120 if (folder == null) {
121 return "<span class=\"first last\">" + foldersLink + "</span>";
122 }
123
124 String breadcrumbs = StringPool.BLANK;
125
126 if (folder != null) {
127 for (int i = 0;; i++) {
128 folder = folder.toEscapedModel();
129
130 PortletURL portletURL = renderResponse.createRenderURL();
131
132 if (windowState.equals(LiferayWindowState.POP_UP)) {
133 portletURL.setWindowState(LiferayWindowState.POP_UP);
134
135 portletURL.setParameter("struts_action", strutsAction);
136 portletURL.setParameter("groupId", String.valueOf(groupId));
137 portletURL.setParameter(
138 "folderId", String.valueOf(folder.getFolderId()));
139 }
140 else {
141
143 portletURL.setParameter(
144 "struts_action", "/document_library/view");
145 portletURL.setParameter(
146 "folderId", String.valueOf(folder.getFolderId()));
147 }
148
149 String folderLink =
150 "<a href=\"" + portletURL.toString() + "\">" +
151 folder.getName() + "</a>";
152
153 if (i == 0) {
154 if (fileEntry != null) {
155 breadcrumbs += folderLink;
156 }
157 else {
158 breadcrumbs =
159 "<span class=\"last\">" + folderLink + "</span>";
160 }
161 }
162 else {
163 breadcrumbs = folderLink + " » " + breadcrumbs;
164 }
165
166 if (folder.isRoot() || (folder.getFolderId() == rootFolderId)) {
167 break;
168 }
169
170 folder = DLFolderLocalServiceUtil.getFolder(
171 folder.getParentFolderId());
172 }
173 }
174
175 breadcrumbs =
176 "<span class=\"first\">" + foldersLink + " » </span>" +
177 breadcrumbs;
178
179 if (fileEntry != null) {
180 fileEntry = fileEntry.toEscapedModel();
181
182 PortletURL fileEntryURL = renderResponse.createRenderURL();
183
184
186 fileEntryURL.setParameter(
187 "struts_action", "/document_library/edit_file_entry");
188 fileEntryURL.setParameter(
189 "folderId", String.valueOf(fileEntry.getFolderId()));
190 fileEntryURL.setParameter("name", fileEntry.getName());
191
192 String fileEntryLink =
193 "<span class=\"last\"><a href=\"" + fileEntryURL.toString() +
194 "\">" + fileEntry.getName() + "</a></span>";
195
196 breadcrumbs = breadcrumbs + " » " + fileEntryLink;
197 }
198
199 return breadcrumbs;
200 }
201
202 public static String getFileExtension(String name) {
203 return _instance._getFileExtension(name);
204 }
205
206 public static String getLockId(long folderId, String name) {
207 StringBuilder sb = new StringBuilder();
208
209 sb.append(folderId);
210 sb.append(StringPool.POUND);
211 sb.append(name);
212
213 return sb.toString();
214 }
215
216 private DLUtil() {
217 _fileExtensions = new HashSet<String>();
218
219 String[] fileExtensions = null;
220
221 try {
222 fileExtensions = PrefsPropsUtil.getStringArray(
223 PropsKeys.DL_FILE_EXTENSIONS, StringPool.COMMA);
224 }
225 catch (SystemException se) {
226 _log.error(se, se);
227
228 fileExtensions = new String[] {StringPool.BLANK};
229 }
230
231 for (int i = 0; i < fileExtensions.length; i++) {
232
233
235 if (!StringPool.STAR.equals(fileExtensions[i])) {
236
237
239 String extension = fileExtensions[i];
240 extension = extension.substring(1, extension.length());
241
242 _fileExtensions.add(extension);
243 }
244 }
245 }
246
247 private String _getFileExtension(String name) {
248 String extension = StringPool.BLANK;
249
250 int pos = name.lastIndexOf(StringPool.PERIOD);
251
252 if (pos != -1) {
253 extension = name.substring(pos + 1, name.length()).toLowerCase();
254 }
255
256 if (!_fileExtensions.contains(extension)) {
257 extension = _DEFAULT_FILE_EXTENSION;
258 }
259
260 return extension;
261 }
262
263 private static final String _DEFAULT_FILE_EXTENSION = "page";
264
265 private static Log _log = LogFactoryUtil.getLog(DLUtil.class);
266
267 private static DLUtil _instance = new DLUtil();
268
269 private Set<String> _fileExtensions;
270
271 }