001
014
015 package com.liferay.portlet.bookmarks.service.impl;
016
017 import com.liferay.portal.kernel.dao.orm.QueryDefinition;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.workflow.WorkflowConstants;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
024 import com.liferay.portlet.bookmarks.service.base.BookmarksFolderServiceBaseImpl;
025 import com.liferay.portlet.bookmarks.service.permission.BookmarksFolderPermission;
026
027 import java.util.ArrayList;
028 import java.util.List;
029
030
033 public class BookmarksFolderServiceImpl extends BookmarksFolderServiceBaseImpl {
034
035 public BookmarksFolder addFolder(
036 long parentFolderId, String name, String description,
037 ServiceContext serviceContext)
038 throws PortalException, SystemException {
039
040 BookmarksFolderPermission.check(
041 getPermissionChecker(), serviceContext.getScopeGroupId(),
042 parentFolderId, ActionKeys.ADD_FOLDER);
043
044 return bookmarksFolderLocalService.addFolder(
045 getUserId(), parentFolderId, name, description, serviceContext);
046 }
047
048 public void deleteFolder(long folderId)
049 throws PortalException, SystemException {
050
051 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
052 folderId);
053
054 BookmarksFolderPermission.check(
055 getPermissionChecker(), folder, ActionKeys.DELETE);
056
057 bookmarksFolderLocalService.deleteFolder(folderId);
058 }
059
060 public void deleteFolder(long folderId, boolean includeTrashedEntries)
061 throws PortalException, SystemException {
062
063 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
064 folderId);
065
066 BookmarksFolderPermission.check(
067 getPermissionChecker(), folder, ActionKeys.DELETE);
068
069 bookmarksFolderLocalService.deleteFolder(
070 folderId, includeTrashedEntries);
071 }
072
073 public BookmarksFolder getFolder(long folderId)
074 throws PortalException, SystemException {
075
076 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
077 folderId);
078
079 BookmarksFolderPermission.check(
080 getPermissionChecker(), folder, ActionKeys.VIEW);
081
082 return folder;
083 }
084
085 public List<Long> getFolderIds(long groupId, long folderId)
086 throws PortalException, SystemException {
087
088 BookmarksFolderPermission.check(
089 getPermissionChecker(), groupId, folderId, ActionKeys.VIEW);
090
091 List<Long> folderIds = getSubfolderIds(groupId, folderId, true);
092
093 folderIds.add(0, folderId);
094
095 return folderIds;
096 }
097
098 public List<BookmarksFolder> getFolders(long groupId)
099 throws SystemException {
100
101 return bookmarksFolderPersistence.filterFindByGroupId(groupId);
102 }
103
104 public List<BookmarksFolder> getFolders(long groupId, long parentFolderId)
105 throws SystemException {
106
107 return bookmarksFolderPersistence.filterFindByG_P_S(
108 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
109 }
110
111 public List<BookmarksFolder> getFolders(
112 long groupId, long parentFolderId, int start, int end)
113 throws SystemException {
114
115 return getFolders(
116 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED, start,
117 end);
118 }
119
120 public List<BookmarksFolder> getFolders(
121 long groupId, long parentFolderId, int status, int start, int end)
122 throws SystemException {
123
124 if (status == WorkflowConstants.STATUS_ANY) {
125 return bookmarksFolderPersistence.filterFindByG_P(
126 groupId, parentFolderId, start, end);
127 }
128 else {
129 return bookmarksFolderPersistence.filterFindByG_P_S(
130 groupId, parentFolderId, status, start, end);
131 }
132 }
133
134 public List<Object> getFoldersAndEntries(long groupId, long folderId)
135 throws SystemException {
136
137 return getFoldersAndEntries(
138 groupId, folderId, WorkflowConstants.STATUS_ANY);
139 }
140
141 public List<Object> getFoldersAndEntries(
142 long groupId, long folderId, int status)
143 throws SystemException {
144
145 QueryDefinition queryDefinition = new QueryDefinition(status);
146
147 return bookmarksFolderFinder.filterFindBF_E_ByG_F(
148 groupId, folderId, queryDefinition);
149 }
150
151 public List<Object> getFoldersAndEntries(
152 long groupId, long folderId, int status, int start, int end)
153 throws SystemException {
154
155 QueryDefinition queryDefinition = new QueryDefinition(
156 status, start, end, null);
157
158 return bookmarksFolderFinder.filterFindBF_E_ByG_F(
159 groupId, folderId, queryDefinition);
160 }
161
162 public int getFoldersAndEntriesCount(long groupId, long folderId)
163 throws SystemException {
164
165 return getFoldersAndEntriesCount(
166 groupId, folderId, WorkflowConstants.STATUS_ANY);
167 }
168
169 public int getFoldersAndEntriesCount(
170 long groupId, long folderId, int status)
171 throws SystemException {
172
173 QueryDefinition queryDefinition = new QueryDefinition(status);
174
175 return bookmarksFolderFinder.filterCountF_E_ByG_F(
176 groupId, folderId, queryDefinition);
177 }
178
179 public int getFoldersCount(long groupId, long parentFolderId)
180 throws SystemException {
181
182 return getFoldersCount(
183 groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
184 }
185
186 public int getFoldersCount(long groupId, long parentFolderId, int status)
187 throws SystemException {
188
189 if (status == WorkflowConstants.STATUS_ANY) {
190 return bookmarksFolderPersistence.filterCountByG_P(
191 groupId, parentFolderId);
192 }
193 else {
194 return bookmarksFolderPersistence.filterCountByG_P_S(
195 groupId, parentFolderId, status);
196 }
197 }
198
199 public void getSubfolderIds(
200 List<Long> folderIds, long groupId, long folderId)
201 throws SystemException {
202
203 List<BookmarksFolder> folders =
204 bookmarksFolderPersistence.filterFindByG_P_S(
205 groupId, folderId, WorkflowConstants.STATUS_APPROVED);
206
207 for (BookmarksFolder folder : folders) {
208 if (folder.isInTrashContainer()) {
209 continue;
210 }
211
212 folderIds.add(folder.getFolderId());
213
214 getSubfolderIds(
215 folderIds, folder.getGroupId(), folder.getFolderId());
216 }
217 }
218
219 public List<Long> getSubfolderIds(
220 long groupId, long folderId, boolean recurse)
221 throws SystemException {
222
223 List<Long> folderIds = new ArrayList<Long>();
224
225 getSubfolderIds(folderIds, groupId, folderId);
226
227 return folderIds;
228 }
229
230 public BookmarksFolder moveFolder(long folderId, long parentFolderId)
231 throws PortalException, SystemException {
232
233 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
234 folderId);
235
236 BookmarksFolderPermission.check(
237 getPermissionChecker(), folder, ActionKeys.UPDATE);
238
239 return bookmarksFolderLocalService.moveFolder(folderId, parentFolderId);
240 }
241
242 public BookmarksFolder moveFolderFromTrash(
243 long folderId, long parentFolderId)
244 throws PortalException, SystemException {
245
246 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
247 folderId);
248
249 BookmarksFolderPermission.check(
250 getPermissionChecker(), folder, ActionKeys.UPDATE);
251
252 return bookmarksFolderLocalService.moveFolderFromTrash(
253 getUserId(), folderId, parentFolderId);
254 }
255
256 public void moveFolderToTrash(long folderId)
257 throws PortalException, SystemException {
258
259 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
260 folderId);
261
262 BookmarksFolderPermission.check(
263 getPermissionChecker(), folder, ActionKeys.DELETE);
264
265 bookmarksFolderLocalService.moveFolderToTrash(getUserId(), folderId);
266 }
267
268 public void restoreFolderFromTrash(long folderId)
269 throws PortalException, SystemException {
270
271 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
272 folderId);
273
274 BookmarksFolderPermission.check(
275 getPermissionChecker(), folder, ActionKeys.UPDATE);
276
277 bookmarksFolderLocalService.restoreFolderFromTrash(
278 getUserId(), folderId);
279 }
280
281 public void subscribeFolder(long groupId, long folderId)
282 throws PortalException, SystemException {
283
284 BookmarksFolderPermission.check(
285 getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
286
287 bookmarksFolderLocalService.subscribeFolder(
288 getUserId(), groupId, folderId);
289 }
290
291 public void unsubscribeFolder(long groupId, long folderId)
292 throws PortalException, SystemException {
293
294 BookmarksFolderPermission.check(
295 getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
296
297 bookmarksFolderLocalService.unsubscribeFolder(
298 getUserId(), groupId, folderId);
299 }
300
301 public BookmarksFolder updateFolder(
302 long folderId, long parentFolderId, String name, String description,
303 boolean mergeWithParentFolder, ServiceContext serviceContext)
304 throws PortalException, SystemException {
305
306 BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
307 folderId);
308
309 BookmarksFolderPermission.check(
310 getPermissionChecker(), folder, ActionKeys.UPDATE);
311
312 return bookmarksFolderLocalService.updateFolder(
313 getUserId(), folderId, parentFolderId, name, description,
314 mergeWithParentFolder, serviceContext);
315 }
316
317 }