/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.bookmarks.service.impl;
import com.liferay.bookmarks.model.BookmarksFolder;
import com.liferay.bookmarks.service.base.BookmarksFolderServiceBaseImpl;
import com.liferay.bookmarks.service.permission.BookmarksFolderPermissionChecker;
import com.liferay.portal.kernel.dao.orm.QueryDefinition;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import java.util.ArrayList;
import java.util.List;
/**
* @author Brian Wing Shun Chan
*/
public class BookmarksFolderServiceImpl extends BookmarksFolderServiceBaseImpl {
@Override
public BookmarksFolder addFolder(
long parentFolderId, String name, String description,
ServiceContext serviceContext)
throws PortalException {
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), serviceContext.getScopeGroupId(),
parentFolderId, ActionKeys.ADD_FOLDER);
return bookmarksFolderLocalService.addFolder(
getUserId(), parentFolderId, name, description, serviceContext);
}
@Override
public void deleteFolder(long folderId) throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.DELETE);
bookmarksFolderLocalService.deleteFolder(folderId);
}
@Override
public void deleteFolder(long folderId, boolean includeTrashedEntries)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.DELETE);
bookmarksFolderLocalService.deleteFolder(
folderId, includeTrashedEntries);
}
@Override
public BookmarksFolder getFolder(long folderId) throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.VIEW);
return folder;
}
@Override
public List<Long> getFolderIds(long groupId, long folderId)
throws PortalException {
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), groupId, folderId, ActionKeys.VIEW);
List<Long> folderIds = getSubfolderIds(groupId, folderId, true);
folderIds.add(0, folderId);
return folderIds;
}
@Override
public List<BookmarksFolder> getFolders(long groupId) {
return bookmarksFolderPersistence.filterFindByGroupId(groupId);
}
@Override
public List<BookmarksFolder> getFolders(long groupId, long parentFolderId) {
return bookmarksFolderPersistence.filterFindByG_P_S(
groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
}
@Override
public List<BookmarksFolder> getFolders(
long groupId, long parentFolderId, int start, int end) {
return getFolders(
groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED, start,
end);
}
@Override
public List<BookmarksFolder> getFolders(
long groupId, long parentFolderId, int status, int start, int end) {
if (status == WorkflowConstants.STATUS_ANY) {
return bookmarksFolderPersistence.filterFindByG_P(
groupId, parentFolderId, start, end);
}
else {
return bookmarksFolderPersistence.filterFindByG_P_S(
groupId, parentFolderId, status, start, end);
}
}
@Override
public List<Object> getFoldersAndEntries(long groupId, long folderId) {
return getFoldersAndEntries(
groupId, folderId, WorkflowConstants.STATUS_ANY);
}
@Override
public List<Object> getFoldersAndEntries(
long groupId, long folderId, int status) {
QueryDefinition<?> queryDefinition = new QueryDefinition<>(status);
return bookmarksFolderFinder.filterFindBF_E_ByG_F(
groupId, folderId, queryDefinition);
}
@Override
public List<Object> getFoldersAndEntries(
long groupId, long folderId, int status, int start, int end) {
QueryDefinition<?> queryDefinition = new QueryDefinition<>(
status, start, end, null);
return bookmarksFolderFinder.filterFindBF_E_ByG_F(
groupId, folderId, queryDefinition);
}
@Override
public int getFoldersAndEntriesCount(long groupId, long folderId) {
return getFoldersAndEntriesCount(
groupId, folderId, WorkflowConstants.STATUS_ANY);
}
@Override
public int getFoldersAndEntriesCount(
long groupId, long folderId, int status) {
QueryDefinition<?> queryDefinition = new QueryDefinition<>(status);
return bookmarksFolderFinder.filterCountF_E_ByG_F(
groupId, folderId, queryDefinition);
}
@Override
public int getFoldersCount(long groupId, long parentFolderId) {
return getFoldersCount(
groupId, parentFolderId, WorkflowConstants.STATUS_APPROVED);
}
@Override
public int getFoldersCount(long groupId, long parentFolderId, int status) {
if (status == WorkflowConstants.STATUS_ANY) {
return bookmarksFolderPersistence.filterCountByG_P_NotS(
groupId, parentFolderId, WorkflowConstants.STATUS_IN_TRASH);
}
else {
return bookmarksFolderPersistence.filterCountByG_P_S(
groupId, parentFolderId, status);
}
}
/**
* @deprecated As of 1.0.0, replaced by {@link #getSubfolderIds(List, long,
* long, boolean)}
*/
@Deprecated
@Override
public void getSubfolderIds(
List<Long> folderIds, long groupId, long folderId) {
getSubfolderIds(folderIds, groupId, folderId, true);
}
@Override
public void getSubfolderIds(
List<Long> folderIds, long groupId, long folderId, boolean recurse) {
List<BookmarksFolder> folders =
bookmarksFolderPersistence.filterFindByG_P_S(
groupId, folderId, WorkflowConstants.STATUS_APPROVED);
for (BookmarksFolder folder : folders) {
folderIds.add(folder.getFolderId());
if (recurse) {
getSubfolderIds(
folderIds, folder.getGroupId(), folder.getFolderId(),
recurse);
}
}
}
@Override
public List<Long> getSubfolderIds(
long groupId, long folderId, boolean recurse) {
List<Long> folderIds = new ArrayList<>();
getSubfolderIds(folderIds, groupId, folderId, recurse);
return folderIds;
}
@Override
public void mergeFolders(long folderId, long parentFolderId)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
bookmarksFolderLocalService.mergeFolders(folderId, parentFolderId);
}
@Override
public BookmarksFolder moveFolder(long folderId, long parentFolderId)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
return bookmarksFolderLocalService.moveFolder(folderId, parentFolderId);
}
@Override
public BookmarksFolder moveFolderFromTrash(
long folderId, long parentFolderId)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
return bookmarksFolderLocalService.moveFolderFromTrash(
getUserId(), folderId, parentFolderId);
}
@Override
public BookmarksFolder moveFolderToTrash(long folderId)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.DELETE);
return bookmarksFolderLocalService.moveFolderToTrash(
getUserId(), folderId);
}
@Override
public void restoreFolderFromTrash(long folderId) throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
bookmarksFolderLocalService.restoreFolderFromTrash(
getUserId(), folderId);
}
@Override
public void subscribeFolder(long groupId, long folderId)
throws PortalException {
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
bookmarksFolderLocalService.subscribeFolder(
getUserId(), groupId, folderId);
}
@Override
public void unsubscribeFolder(long groupId, long folderId)
throws PortalException {
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), groupId, folderId, ActionKeys.SUBSCRIBE);
bookmarksFolderLocalService.unsubscribeFolder(
getUserId(), groupId, folderId);
}
/**
* @deprecated As of 1.0.0, replaced by {@link #updateFolder(long, long,
* String, String, ServiceContext)} and {@link
* #mergeFolders(long, long)}
*/
@Deprecated
@Override
public BookmarksFolder updateFolder(
long folderId, long parentFolderId, String name, String description,
boolean mergeWithParentFolder, ServiceContext serviceContext)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
return bookmarksFolderLocalService.updateFolder(
getUserId(), folderId, parentFolderId, name, description,
mergeWithParentFolder, serviceContext);
}
@Override
public BookmarksFolder updateFolder(
long folderId, long parentFolderId, String name, String description,
ServiceContext serviceContext)
throws PortalException {
BookmarksFolder folder = bookmarksFolderLocalService.getFolder(
folderId);
BookmarksFolderPermissionChecker.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
return bookmarksFolderLocalService.updateFolder(
getUserId(), folderId, parentFolderId, name, description,
serviceContext);
}
}