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