/modules/apps/bookmarks/bookmarks-service/src/main/java/com/liferay/bookmarks/service/impl/BookmarksFolderServiceImpl.java

https://github.com/kiyoshilee/liferay-portal · Java · 337 lines · 246 code · 75 blank · 16 comment · 6 complexity · 15c06cd47d4b9414f020f409e4527f36 MD5 · raw file

  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.bookmarks.service.impl;
  15. import com.liferay.bookmarks.model.BookmarksFolder;
  16. import com.liferay.bookmarks.service.base.BookmarksFolderServiceBaseImpl;
  17. import com.liferay.portal.aop.AopService;
  18. import com.liferay.portal.kernel.dao.orm.QueryDefinition;
  19. import com.liferay.portal.kernel.exception.PortalException;
  20. import com.liferay.portal.kernel.security.permission.ActionKeys;
  21. import com.liferay.portal.kernel.security.permission.resource.ModelResourcePermission;
  22. import com.liferay.portal.kernel.security.permission.resource.ModelResourcePermissionHelper;
  23. import com.liferay.portal.kernel.service.ServiceContext;
  24. import com.liferay.portal.kernel.workflow.WorkflowConstants;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import org.osgi.service.component.annotations.Component;
  28. import org.osgi.service.component.annotations.Reference;
  29. import org.osgi.service.component.annotations.ReferencePolicy;
  30. import org.osgi.service.component.annotations.ReferencePolicyOption;
  31. /**
  32. * @author Brian Wing Shun Chan
  33. */
  34. @Component(
  35. property = {
  36. "json.web.service.context.name=bookmarks",
  37. "json.web.service.context.path=BookmarksFolder"
  38. },
  39. service = AopService.class
  40. )
  41. public class BookmarksFolderServiceImpl extends BookmarksFolderServiceBaseImpl {
  42. @Override
  43. public BookmarksFolder addFolder(
  44. long parentFolderId, String name, String description,
  45. ServiceContext serviceContext)
  46. throws PortalException {
  47. ModelResourcePermissionHelper.check(
  48. _bookmarksFolderModelResourcePermission, getPermissionChecker(),
  49. serviceContext.getScopeGroupId(), parentFolderId,
  50. ActionKeys.ADD_FOLDER);
  51. return bookmarksFolderLocalService.addFolder(
  52. getUserId(), parentFolderId, name, description, serviceContext);
  53. }
  54. @Override
  55. public void deleteFolder(long folderId) throws PortalException {
  56. _bookmarksFolderModelResourcePermission.check(
  57. getPermissionChecker(),
  58. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.DELETE);
  59. bookmarksFolderLocalService.deleteFolder(folderId);
  60. }
  61. @Override
  62. public void deleteFolder(long folderId, boolean includeTrashedEntries)
  63. throws PortalException {
  64. _bookmarksFolderModelResourcePermission.check(
  65. getPermissionChecker(),
  66. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.DELETE);
  67. bookmarksFolderLocalService.deleteFolder(
  68. folderId, includeTrashedEntries);
  69. }
  70. @Override
  71. public BookmarksFolder getFolder(long folderId) throws PortalException {
  72. BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
  73. folderId);
  74. _bookmarksFolderModelResourcePermission.check(
  75. getPermissionChecker(), folder, ActionKeys.VIEW);
  76. return folder;
  77. }
  78. @Override
  79. public List<Long> getFolderIds(long groupId, long folderId)
  80. throws PortalException {
  81. ModelResourcePermissionHelper.check(
  82. _bookmarksFolderModelResourcePermission, getPermissionChecker(),
  83. groupId, folderId, ActionKeys.VIEW);
  84. List<Long> folderIds = getSubfolderIds(groupId, folderId, true);
  85. folderIds.add(0, folderId);
  86. return folderIds;
  87. }
  88. @Override
  89. public List<BookmarksFolder> getFolders(long groupId) {
  90. return bookmarksFolderPersistence.filterFindByGroupId(groupId);
  91. }
  92. @Override
  93. public List<BookmarksFolder> getFolders(long groupId, long parentFolderId) {
  94. return bookmarksFolderPersistence.filterFindByG_P_S(
  95. groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
  96. }
  97. @Override
  98. public List<BookmarksFolder> getFolders(
  99. long groupId, long parentFolderId, int start, int end) {
  100. return getFolders(
  101. groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED, start,
  102. end);
  103. }
  104. @Override
  105. public List<BookmarksFolder> getFolders(
  106. long groupId, long parentFolderId, int status, int start, int end) {
  107. if (status == WorkflowConstants.STATUS_ANY) {
  108. return bookmarksFolderPersistence.filterFindByG_P(
  109. groupId, parentFolderId, start, end);
  110. }
  111. return bookmarksFolderPersistence.filterFindByG_P_S(
  112. groupId, parentFolderId, status, start, end);
  113. }
  114. @Override
  115. public List<Object> getFoldersAndEntries(long groupId, long folderId) {
  116. return getFoldersAndEntries(
  117. groupId, folderId, WorkflowConstants.STATUS_ANY);
  118. }
  119. @Override
  120. public List<Object> getFoldersAndEntries(
  121. long groupId, long folderId, int status) {
  122. QueryDefinition<?> queryDefinition = new QueryDefinition<>(status);
  123. return bookmarksFolderFinder.filterFindBF_E_ByG_F(
  124. groupId, folderId, queryDefinition);
  125. }
  126. @Override
  127. public List<Object> getFoldersAndEntries(
  128. long groupId, long folderId, int status, int start, int end) {
  129. QueryDefinition<?> queryDefinition = new QueryDefinition<>(
  130. status, start, end, null);
  131. return bookmarksFolderFinder.filterFindBF_E_ByG_F(
  132. groupId, folderId, queryDefinition);
  133. }
  134. @Override
  135. public int getFoldersAndEntriesCount(long groupId, long folderId) {
  136. return getFoldersAndEntriesCount(
  137. groupId, folderId, WorkflowConstants.STATUS_ANY);
  138. }
  139. @Override
  140. public int getFoldersAndEntriesCount(
  141. long groupId, long folderId, int status) {
  142. QueryDefinition<?> queryDefinition = new QueryDefinition<>(status);
  143. return bookmarksFolderFinder.filterCountF_E_ByG_F(
  144. groupId, folderId, queryDefinition);
  145. }
  146. @Override
  147. public int getFoldersCount(long groupId, long parentFolderId) {
  148. return getFoldersCount(
  149. groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
  150. }
  151. @Override
  152. public int getFoldersCount(long groupId, long parentFolderId, int status) {
  153. if (status == WorkflowConstants.STATUS_ANY) {
  154. return bookmarksFolderPersistence.filterCountByG_P_NotS(
  155. groupId, parentFolderId, WorkflowConstants.STATUS_IN_TRASH);
  156. }
  157. return bookmarksFolderPersistence.filterCountByG_P_S(
  158. groupId, parentFolderId, status);
  159. }
  160. @Override
  161. public void getSubfolderIds(
  162. List<Long> folderIds, long groupId, long folderId, boolean recurse) {
  163. List<BookmarksFolder> folders =
  164. bookmarksFolderPersistence.filterFindByG_P_S(
  165. groupId, folderId, WorkflowConstants.STATUS_APPROVED);
  166. for (BookmarksFolder folder : folders) {
  167. folderIds.add(folder.getFolderId());
  168. if (recurse) {
  169. getSubfolderIds(
  170. folderIds, folder.getGroupId(), folder.getFolderId(),
  171. recurse);
  172. }
  173. }
  174. }
  175. @Override
  176. public List<Long> getSubfolderIds(
  177. long groupId, long folderId, boolean recurse) {
  178. List<Long> folderIds = new ArrayList<>();
  179. getSubfolderIds(folderIds, groupId, folderId, recurse);
  180. return folderIds;
  181. }
  182. @Override
  183. public void mergeFolders(long folderId, long parentFolderId)
  184. throws PortalException {
  185. _bookmarksFolderModelResourcePermission.check(
  186. getPermissionChecker(),
  187. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.UPDATE);
  188. bookmarksFolderLocalService.mergeFolders(folderId, parentFolderId);
  189. }
  190. @Override
  191. public BookmarksFolder moveFolder(long folderId, long parentFolderId)
  192. throws PortalException {
  193. _bookmarksFolderModelResourcePermission.check(
  194. getPermissionChecker(),
  195. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.UPDATE);
  196. return bookmarksFolderLocalService.moveFolder(folderId, parentFolderId);
  197. }
  198. @Override
  199. public BookmarksFolder moveFolderFromTrash(
  200. long folderId, long parentFolderId)
  201. throws PortalException {
  202. _bookmarksFolderModelResourcePermission.check(
  203. getPermissionChecker(),
  204. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.UPDATE);
  205. return bookmarksFolderLocalService.moveFolderFromTrash(
  206. getUserId(), folderId, parentFolderId);
  207. }
  208. @Override
  209. public BookmarksFolder moveFolderToTrash(long folderId)
  210. throws PortalException {
  211. _bookmarksFolderModelResourcePermission.check(
  212. getPermissionChecker(),
  213. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.DELETE);
  214. return bookmarksFolderLocalService.moveFolderToTrash(
  215. getUserId(), folderId);
  216. }
  217. @Override
  218. public void restoreFolderFromTrash(long folderId) throws PortalException {
  219. _bookmarksFolderModelResourcePermission.check(
  220. getPermissionChecker(),
  221. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.UPDATE);
  222. bookmarksFolderLocalService.restoreFolderFromTrash(
  223. getUserId(), folderId);
  224. }
  225. @Override
  226. public void subscribeFolder(long groupId, long folderId)
  227. throws PortalException {
  228. ModelResourcePermissionHelper.check(
  229. _bookmarksFolderModelResourcePermission, getPermissionChecker(),
  230. groupId, folderId, ActionKeys.SUBSCRIBE);
  231. bookmarksFolderLocalService.subscribeFolder(
  232. getUserId(), groupId, folderId);
  233. }
  234. @Override
  235. public void unsubscribeFolder(long groupId, long folderId)
  236. throws PortalException {
  237. ModelResourcePermissionHelper.check(
  238. _bookmarksFolderModelResourcePermission, getPermissionChecker(),
  239. groupId, folderId, ActionKeys.SUBSCRIBE);
  240. bookmarksFolderLocalService.unsubscribeFolder(
  241. getUserId(), groupId, folderId);
  242. }
  243. @Override
  244. public BookmarksFolder updateFolder(
  245. long folderId, long parentFolderId, String name, String description,
  246. ServiceContext serviceContext)
  247. throws PortalException {
  248. _bookmarksFolderModelResourcePermission.check(
  249. getPermissionChecker(),
  250. bookmarksFolderLocalService.getFolder(folderId), ActionKeys.UPDATE);
  251. return bookmarksFolderLocalService.updateFolder(
  252. getUserId(), folderId, parentFolderId, name, description,
  253. serviceContext);
  254. }
  255. @Reference(
  256. policy = ReferencePolicy.DYNAMIC,
  257. policyOption = ReferencePolicyOption.GREEDY,
  258. target = "(model.class.name=com.liferay.bookmarks.model.BookmarksFolder)"
  259. )
  260. private volatile ModelResourcePermission<BookmarksFolder>
  261. _bookmarksFolderModelResourcePermission;
  262. }