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