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 foldersLink;
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 breadcrumbs = folderLink;
154 }
155 else {
156 breadcrumbs = folderLink + " » " + breadcrumbs;
157 }
158
159 if (folder.isRoot() || (folder.getFolderId() == rootFolderId)) {
160 break;
161 }
162
163 folder = DLFolderLocalServiceUtil.getFolder(
164 folder.getParentFolderId());
165 }
166 }
167
168 breadcrumbs = foldersLink + " » " + breadcrumbs;
169
170 if (fileEntry != null) {
171 fileEntry = fileEntry.toEscapedModel();
172
173 PortletURL fileEntryURL = renderResponse.createRenderURL();
174
175
177 fileEntryURL.setParameter(
178 "struts_action", "/document_library/edit_file_entry");
179 fileEntryURL.setParameter(
180 "folderId", String.valueOf(fileEntry.getFolderId()));
181 fileEntryURL.setParameter("name", fileEntry.getName());
182
183 String fileEntryLink =
184 "<a href=\"" + fileEntryURL.toString() + "\">" +
185 fileEntry.getName() + "</a>";
186
187 breadcrumbs = breadcrumbs + " » " + fileEntryLink;
188 }
189
190 return breadcrumbs;
191 }
192
193 public static String getFileExtension(String name) {
194 return _instance._getFileExtension(name);
195 }
196
197 public static String getLockId(long folderId, String name) {
198 StringBuilder sb = new StringBuilder();
199
200 sb.append(folderId);
201 sb.append(StringPool.POUND);
202 sb.append(name);
203
204 return sb.toString();
205 }
206
207 private DLUtil() {
208 _fileExtensions = new HashSet<String>();
209
210 String[] fileExtensions = PropsValues.DL_FILE_EXTENSIONS;
211
212 for (int i = 0; i < fileExtensions.length; i++) {
213
214
216 if (!StringPool.STAR.equals(fileExtensions[i])) {
217
218
220 String extension = fileExtensions[i];
221 extension = extension.substring(1, extension.length());
222
223 _fileExtensions.add(extension);
224 }
225 }
226 }
227
228 private String _getFileExtension(String name) {
229 String extension = StringPool.BLANK;
230
231 int pos = name.lastIndexOf(StringPool.PERIOD);
232
233 if (pos != -1) {
234 extension = name.substring(pos + 1, name.length()).toLowerCase();
235 }
236
237 if (!_fileExtensions.contains(extension)) {
238 extension = _DEFAULT_FILE_EXTENSION;
239 }
240
241 return extension;
242 }
243
244 private static final String _DEFAULT_FILE_EXTENSION = "page";
245
246 private static DLUtil _instance = new DLUtil();
247
248 private Set<String> _fileExtensions;
249
250 }