1
14
15 package com.liferay.portal.editor.fckeditor.receiver.impl;
16
17 import com.liferay.portal.editor.fckeditor.command.CommandArgument;
18 import com.liferay.portal.editor.fckeditor.exception.FCKException;
19 import com.liferay.portal.kernel.util.StringBundler;
20 import com.liferay.portal.kernel.util.StringPool;
21 import com.liferay.portal.kernel.util.Validator;
22 import com.liferay.portal.model.Group;
23 import com.liferay.portal.theme.ThemeDisplay;
24 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
25 import com.liferay.portlet.documentlibrary.model.DLFolder;
26 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
27 import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
28 import com.liferay.portlet.documentlibrary.service.DLFileEntryServiceUtil;
29 import com.liferay.portlet.documentlibrary.service.DLFolderServiceUtil;
30
31 import java.io.File;
32
33 import java.util.List;
34 import java.util.StringTokenizer;
35
36 import org.w3c.dom.Document;
37 import org.w3c.dom.Element;
38 import org.w3c.dom.Node;
39
40
45 public class DocumentCommandReceiver extends BaseCommandReceiver {
46
47 protected String createFolder(CommandArgument arg) {
48 try {
49 Group group = arg.getCurrentGroup();
50
51 DLFolder folder = _getFolder(
52 group.getGroupId(), StringPool.SLASH + arg.getCurrentFolder());
53
54 long plid = arg.getPlid();
55 long parentFolderId = folder.getFolderId();
56 String name = arg.getNewFolder();
57 String description = StringPool.BLANK;
58 boolean addCommunityPermissions = true;
59 boolean addGuestPermissions = true;
60
61 DLFolderServiceUtil.addFolder(
62 plid, parentFolderId, name, description,
63 addCommunityPermissions, addGuestPermissions);
64 }
65 catch (Exception e) {
66 throw new FCKException(e);
67 }
68
69 return "0";
70 }
71
72 protected String fileUpload(
73 CommandArgument arg, String fileName, File file, String extension) {
74
75 try {
76 Group group = arg.getCurrentGroup();
77
78 DLFolder folder = _getFolder(
79 group.getGroupId(), arg.getCurrentFolder());
80
81 long folderId = folder.getFolderId();
82 String name = fileName;
83 String title = fileName;
84 String description = StringPool.BLANK;
85 String[] tagsEntries = null;
86 String extraSettings = StringPool.BLANK;
87 boolean addCommunityPermissions = true;
88 boolean addGuestPermissions = true;
89
90 DLFileEntryServiceUtil.addFileEntry(
91 folderId, name, title, description, tagsEntries, extraSettings,
92 file, addCommunityPermissions, addGuestPermissions);
93 }
94 catch (Exception e) {
95 throw new FCKException(e);
96 }
97
98 return "0";
99 }
100
101 protected void getFolders(CommandArgument arg, Document doc, Node root) {
102 try {
103 _getFolders(arg, doc, root);
104 }
105 catch (Exception e) {
106 throw new FCKException(e);
107 }
108 }
109
110 protected void getFoldersAndFiles(
111 CommandArgument arg, Document doc, Node root) {
112
113 try {
114 _getFolders(arg, doc, root);
115 _getFiles(arg, doc, root);
116 }
117 catch (Exception e) {
118 throw new FCKException(e);
119 }
120 }
121
122 private void _getFiles(CommandArgument arg, Document doc, Node root)
123 throws Exception {
124
125 Element filesEl = doc.createElement("Files");
126
127 root.appendChild(filesEl);
128
129 if (Validator.isNull(arg.getCurrentGroupName())) {
130 return;
131 }
132
133 Group group = arg.getCurrentGroup();
134
135 DLFolder folder = _getFolder(
136 group.getGroupId(), arg.getCurrentFolder());
137
138 List<DLFileEntry> fileEntries = DLFileEntryServiceUtil.getFileEntries(
139 folder.getFolderId());
140
141 for (DLFileEntry fileEntry : fileEntries) {
142 Element fileEl = doc.createElement("File");
143
144 filesEl.appendChild(fileEl);
145
146 fileEl.setAttribute("name", fileEntry.getTitleWithExtension());
147 fileEl.setAttribute("desc", fileEntry.getTitleWithExtension());
148 fileEl.setAttribute("size", getSize(fileEntry.getSize()));
149
150 StringBundler url = new StringBundler(5);
151
152 ThemeDisplay themeDisplay = arg.getThemeDisplay();
153
154 url.append(themeDisplay.getPathMain());
155 url.append("/document_library/get_file?uuid=");
156 url.append(fileEntry.getUuid());
157 url.append("&groupId=");
158 url.append(folder.getGroupId());
159
160 fileEl.setAttribute("url", url.toString());
161 }
162 }
163
164 private DLFolder _getFolder(long groupId, String folderName)
165 throws Exception {
166
167 DLFolder folder = new DLFolderImpl();
168
169 folder.setFolderId(DLFolderConstants.DEFAULT_PARENT_FOLDER_ID);
170
171 if (folderName.equals(StringPool.SLASH)) {
172 return folder;
173 }
174
175 StringTokenizer st = new StringTokenizer(folderName, StringPool.SLASH);
176
177 while (st.hasMoreTokens()) {
178 String curFolderName = st.nextToken();
179
180 List<DLFolder> folders = DLFolderServiceUtil.getFolders(
181 groupId, folder.getFolderId());
182
183 for (DLFolder curFolder : folders) {
184 if (curFolder.getName().equals(curFolderName)) {
185 folder = curFolder;
186
187 break;
188 }
189 }
190 }
191
192 return folder;
193 }
194
195 private void _getFolders(CommandArgument arg, Document doc, Node root)
196 throws Exception {
197
198 Element foldersEl = doc.createElement("Folders");
199
200 root.appendChild(foldersEl);
201
202 if (arg.getCurrentFolder().equals(StringPool.SLASH)) {
203 getRootFolders(arg, doc, foldersEl);
204 }
205 else {
206 Group group = arg.getCurrentGroup();
207
208 DLFolder folder = _getFolder(
209 group.getGroupId(), arg.getCurrentFolder());
210
211 List<DLFolder> folders = DLFolderServiceUtil.getFolders(
212 group.getGroupId(), folder.getFolderId());
213
214 for (DLFolder curFolder : folders) {
215 Element folderEl = doc.createElement("Folder");
216
217 foldersEl.appendChild(folderEl);
218
219 folderEl.setAttribute("name", curFolder.getName());
220 }
221 }
222 }
223
224 }