/**
* 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.portlet.documentlibrary.service.impl;
import com.liferay.document.library.kernel.model.DLFolderConstants;
import com.liferay.portal.kernel.bean.BeanReference;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.repository.Repository;
import com.liferay.portal.kernel.repository.RepositoryProvider;
import com.liferay.portal.kernel.repository.capabilities.TrashCapability;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.FileShortcut;
import com.liferay.portal.kernel.repository.model.Folder;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portlet.documentlibrary.service.base.DLTrashServiceBaseImpl;
import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
import com.liferay.portlet.documentlibrary.service.permission.DLFileShortcutPermission;
import com.liferay.portlet.documentlibrary.service.permission.DLFolderPermission;
/**
* @author Adolfo PĂ©rez
*/
public class DLTrashServiceImpl extends DLTrashServiceBaseImpl {
/**
* Moves the file entry from a trashed folder to the new folder.
*
* @param fileEntryId the primary key of the file entry
* @param newFolderId the primary key of the new folder
* @param serviceContext the service context to be applied
* @return the file entry
*/
@Override
public FileEntry moveFileEntryFromTrash(
long fileEntryId, long newFolderId, ServiceContext serviceContext)
throws PortalException {
Repository repository = repositoryProvider.getFileEntryRepository(
fileEntryId);
FileEntry fileEntry = repository.getFileEntry(fileEntryId);
DLFileEntryPermission.check(
getPermissionChecker(), fileEntry, ActionKeys.UPDATE);
Folder destinationFolder = null;
if (newFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
destinationFolder = repository.getFolder(newFolderId);
}
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFileEntryFromTrash(
getUserId(), fileEntry, destinationFolder, serviceContext);
}
/**
* Moves the file entry with the primary key to the trash portlet.
*
* @param fileEntryId the primary key of the file entry
* @return the file entry
*/
@Override
public FileEntry moveFileEntryToTrash(long fileEntryId)
throws PortalException {
Repository repository = repositoryProvider.getFileEntryRepository(
fileEntryId);
FileEntry fileEntry = repository.getFileEntry(fileEntryId);
DLFileEntryPermission.check(
getPermissionChecker(), fileEntry, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFileEntryToTrash(getUserId(), fileEntry);
}
/**
* Moves the file shortcut from a trashed folder to the new folder.
*
* @param fileShortcutId the primary key of the file shortcut
* @param newFolderId the primary key of the new folder
* @param serviceContext the service context to be applied
* @return the file shortcut
*/
@Override
public FileShortcut moveFileShortcutFromTrash(
long fileShortcutId, long newFolderId,
ServiceContext serviceContext)
throws PortalException {
Repository repository = repositoryProvider.getFileShortcutRepository(
fileShortcutId);
FileShortcut fileShortcut = repository.getFileShortcut(fileShortcutId);
DLFileShortcutPermission.check(
getPermissionChecker(), fileShortcut, ActionKeys.UPDATE);
Folder destinationFolder = null;
if (newFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
destinationFolder = repository.getFolder(newFolderId);
}
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFileShortcutFromTrash(
getUserId(), fileShortcut, destinationFolder, serviceContext);
}
/**
* Moves the file shortcut with the primary key to the trash portlet.
*
* @param fileShortcutId the primary key of the file shortcut
* @return the file shortcut
*/
@Override
public FileShortcut moveFileShortcutToTrash(long fileShortcutId)
throws PortalException {
Repository repository = repositoryProvider.getFileShortcutRepository(
fileShortcutId);
FileShortcut fileShortcut = repository.getFileShortcut(fileShortcutId);
DLFileShortcutPermission.check(
getPermissionChecker(), fileShortcut, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFileShortcutToTrash(
getUserId(), fileShortcut);
}
/**
* Moves the folder with the primary key from the trash portlet to the new
* parent folder with the primary key.
*
* @param folderId the primary key of the folder
* @param parentFolderId the primary key of the new parent folder
* @param serviceContext the service context to be applied
* @return the file entry
*/
@Override
public Folder moveFolderFromTrash(
long folderId, long parentFolderId, ServiceContext serviceContext)
throws PortalException {
Repository repository = repositoryProvider.getFolderRepository(
folderId);
Folder folder = repository.getFolder(folderId);
DLFolderPermission.check(
getPermissionChecker(), folder, ActionKeys.UPDATE);
Folder destinationFolder = null;
if (parentFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
destinationFolder = repository.getFolder(parentFolderId);
}
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFolderFromTrash(
getUserId(), folder, destinationFolder, serviceContext);
}
/**
* Moves the folder with the primary key to the trash portlet.
*
* @param folderId the primary key of the folder
* @return the file entry
*/
@Override
public Folder moveFolderToTrash(long folderId) throws PortalException {
Repository repository = repositoryProvider.getFolderRepository(
folderId);
Folder folder = repository.getFolder(folderId);
DLFolderPermission.check(
getPermissionChecker(), folder, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
return trashCapability.moveFolderToTrash(getUserId(), folder);
}
/**
* Restores the file entry with the primary key from the trash portlet.
*
* @param fileEntryId the primary key of the file entry
*/
@Override
public void restoreFileEntryFromTrash(long fileEntryId)
throws PortalException {
Repository repository = repositoryProvider.getFileEntryRepository(
fileEntryId);
FileEntry fileEntry = repository.getFileEntry(fileEntryId);
DLFileEntryPermission.check(
getPermissionChecker(), fileEntry, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
trashCapability.restoreFileEntryFromTrash(getUserId(), fileEntry);
}
/**
* Restores the file shortcut with the primary key from the trash portlet.
*
* @param fileShortcutId the primary key of the file shortcut
*/
@Override
public void restoreFileShortcutFromTrash(long fileShortcutId)
throws PortalException {
Repository repository = repositoryProvider.getFileShortcutRepository(
fileShortcutId);
FileShortcut fileShortcut = repository.getFileShortcut(fileShortcutId);
DLFileShortcutPermission.check(
getPermissionChecker(), fileShortcut, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
trashCapability.restoreFileShortcutFromTrash(getUserId(), fileShortcut);
}
/**
* Restores the folder with the primary key from the trash portlet.
*
* @param folderId the primary key of the folder
*/
@Override
public void restoreFolderFromTrash(long folderId) throws PortalException {
Repository repository = repositoryProvider.getFolderRepository(
folderId);
Folder folder = repository.getFolder(folderId);
DLFolderPermission.check(
getPermissionChecker(), folder, ActionKeys.DELETE);
TrashCapability trashCapability = repository.getCapability(
TrashCapability.class);
trashCapability.restoreFolderFromTrash(getUserId(), folder);
}
@BeanReference(type = RepositoryProvider.class)
protected RepositoryProvider repositoryProvider;
}