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