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
52 public class DLUtil {
53
54 public static String getBreadcrumbs(
55 long folderId, String name, PageContext pageContext,
56 RenderRequest renderRequest, RenderResponse renderResponse)
57 throws Exception {
58
59 if ((folderId > 0) && Validator.isNotNull(name)) {
60 DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
61 folderId, name);
62
63 return getBreadcrumbs(
64 fileEntry.getFolder(), fileEntry, pageContext, renderRequest,
65 renderResponse);
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(
77 folder, null, pageContext, renderRequest, renderResponse);
78 }
79 }
80
81 public static String getBreadcrumbs(
82 DLFolder folder, DLFileEntry fileEntry, PageContext pageContext,
83 RenderRequest renderRequest, 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 foldersLink;
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 portletURL.setWindowState(WindowState.MAXIMIZED);
137
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 breadcrumbs = folderLink;
150 }
151 else {
152 breadcrumbs = folderLink + " » " + breadcrumbs;
153 }
154
155 if (folder.isRoot()) {
156 break;
157 }
158
159 folder = DLFolderLocalServiceUtil.getFolder(
160 folder.getParentFolderId());
161 }
162 }
163
164 breadcrumbs = foldersLink + " » " + breadcrumbs;
165
166 if (fileEntry != null) {
167 fileEntry = fileEntry.toEscapedModel();
168
169 PortletURL fileEntryURL = renderResponse.createRenderURL();
170
171 fileEntryURL.setWindowState(WindowState.MAXIMIZED);
172
173 fileEntryURL.setParameter(
174 "struts_action", "/document_library/edit_file_entry");
175 fileEntryURL.setParameter(
176 "folderId", String.valueOf(fileEntry.getFolderId()));
177 fileEntryURL.setParameter("name", fileEntry.getName());
178
179 String fileEntryLink =
180 "<a href=\"" + fileEntryURL.toString() + "\">" +
181 fileEntry.getName() + "</a>";
182
183 breadcrumbs = breadcrumbs + " » " + fileEntryLink;
184 }
185
186 return breadcrumbs;
187 }
188
189 public static String getFileExtension(String name) {
190 return _instance._getFileExtension(name);
191 }
192
193 public static String getLockId(long folderId, String name) {
194 StringBuilder sb = new StringBuilder();
195
196 sb.append(folderId);
197 sb.append(StringPool.POUND);
198 sb.append(name);
199
200 return sb.toString();
201 }
202
203 private DLUtil() {
204 _fileExtensions = new HashSet<String>();
205
206 String[] fileExtensions = PropsValues.DL_FILE_EXTENSIONS;
207
208 for (int i = 0; i < fileExtensions.length; i++) {
209
210
212 if (!StringPool.STAR.equals(fileExtensions[i])) {
213
214
216 String extension = fileExtensions[i];
217 extension = extension.substring(1, extension.length());
218
219 _fileExtensions.add(extension);
220 }
221 }
222 }
223
224 private String _getFileExtension(String name) {
225 String extension = StringPool.BLANK;
226
227 int pos = name.lastIndexOf(StringPool.PERIOD);
228
229 if (pos != -1) {
230 extension = name.substring(pos + 1, name.length()).toLowerCase();
231 }
232
233 if (!_fileExtensions.contains(extension)) {
234 extension = _DEFAULT_FILE_EXTENSION;
235 }
236
237 return extension;
238 }
239
240 private static final String _DEFAULT_FILE_EXTENSION = "page";
241
242 private static DLUtil _instance = new DLUtil();
243
244 private Set<String> _fileExtensions;
245
246 }