1
22
23 package com.liferay.portlet.documentlibrary.action;
24
25 import com.liferay.portal.SystemException;
26 import com.liferay.portal.kernel.json.JSONArray;
27 import com.liferay.portal.kernel.json.JSONFactoryUtil;
28 import com.liferay.portal.kernel.json.JSONObject;
29 import com.liferay.portal.kernel.util.ParamUtil;
30 import com.liferay.portal.struts.JSONAction;
31 import com.liferay.portlet.documentlibrary.model.DLFolder;
32 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
33 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
34 import com.liferay.portlet.documentlibrary.service.http.DLFolderJSONSerializer;
35
36 import java.util.ArrayList;
37 import java.util.List;
38
39 import javax.servlet.http.HttpServletRequest;
40 import javax.servlet.http.HttpServletResponse;
41
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionMapping;
44
45
51 public class GetFoldersAction extends JSONAction {
52
53 public String getJSON(
54 ActionMapping mapping, ActionForm form, HttpServletRequest request,
55 HttpServletResponse response)
56 throws Exception {
57
58 long groupId = ParamUtil.getLong(request, "groupId");
59 long parentFolderId = ParamUtil.getLong(request, "folderId");
60
61 List<DLFolder> folders = DLFolderLocalServiceUtil.getFolders(
62 groupId, parentFolderId);
63
64 JSONArray jsonArray = toJSONArray(folders);
65
66 return jsonArray.toString();
67 }
68
69 protected JSONArray toJSONArray(List<DLFolder> folders)
70 throws SystemException {
71
72 JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
73
74 for (DLFolder folder : folders) {
75 jsonArray.put(toJSONObject(folder));
76 }
77
78 return jsonArray;
79 }
80
81 protected JSONObject toJSONObject(DLFolder folder) throws SystemException {
82 JSONObject jsonObj = DLFolderJSONSerializer.toJSONObject(folder);
83
84 List<Long> subfolderIds = new ArrayList<Long>();
85
86 subfolderIds.add(folder.getFolderId());
87
88 DLFolderLocalServiceUtil.getSubfolderIds(
89 subfolderIds, folder.getGroupId(), folder.getFolderId());
90
91 int subFoldersCount = subfolderIds.size() - 1;
92 int fileEntriesCount =
93 DLFileEntryLocalServiceUtil.getFileEntriesAndShortcutsCount(
94 subfolderIds);
95
96 jsonObj.put("subFoldersCount", subFoldersCount);
97 jsonObj.put("fileEntriesCount", fileEntriesCount);
98
99 return jsonObj;
100 }
101
102 }