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