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