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