/**
* 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.social.privatemessaging.internal.upgrade.v1_0_1;
import com.liferay.document.library.kernel.model.DLFolder;
import com.liferay.message.boards.web.constants.MBPortletKeys;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Company;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.Repository;
import com.liferay.portal.kernel.model.ResourceConstants;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.RoleConstants;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.CompanyLocalService;
import com.liferay.portal.kernel.service.GroupLocalService;
import com.liferay.portal.kernel.service.RepositoryLocalService;
import com.liferay.portal.kernel.service.ResourceLocalService;
import com.liferay.portal.kernel.service.ResourcePermissionLocalService;
import com.liferay.portal.kernel.service.RoleLocalService;
import com.liferay.portal.kernel.upgrade.UpgradeProcess;
import java.util.List;
/**
* @author Sherry Yang
*/
public class UpgradeResourcePermission extends UpgradeProcess {
public UpgradeResourcePermission(
CompanyLocalService companyLocalService,
GroupLocalService groupLocalService,
RepositoryLocalService repositoryLocalService,
ResourceLocalService resourceLocalService,
ResourcePermissionLocalService resourcePermissionLocalService,
RoleLocalService roleLocalService) {
_companyLocalService = companyLocalService;
_groupLocalService = groupLocalService;
_repositoryLocalService = repositoryLocalService;
_resourceLocalService = resourceLocalService;
_resourcePermissionLocalService = resourcePermissionLocalService;
_roleLocalService = roleLocalService;
}
@Override
protected void doUpgrade() throws Exception {
List<Company> companies = _companyLocalService.getCompanies();
for (Company company : companies) {
Group group = _groupLocalService.getCompanyGroup(
company.getCompanyId());
_upgradeDLFolderResourcePermission(company, group);
_upgradeDLResourcePermission(company, group);
}
}
private void _upgradeDLFolderResourcePermission(
Company company, Group group)
throws PortalException {
Repository repository = _repositoryLocalService.fetchRepository(
group.getGroupId(), MBPortletKeys.MESSAGE_BOARDS);
if (repository == null) {
return;
}
long folderId = repository.getDlFolderId();
Role role = _roleLocalService.getRole(
company.getCompanyId(), RoleConstants.GUEST);
if (_resourcePermissionLocalService.hasResourcePermission(
company.getCompanyId(), DLFolder.class.getName(),
ResourceConstants.SCOPE_INDIVIDUAL, String.valueOf(folderId),
role.getRoleId(), ActionKeys.VIEW)) {
return;
}
_resourceLocalService.addResources(
company.getCompanyId(), group.getGroupId(), 0,
DLFolder.class.getName(), folderId, false, true, true);
}
private void _upgradeDLResourcePermission(Company company, Group group)
throws PortalException {
int count = _resourcePermissionLocalService.getResourcePermissionsCount(
company.getCompanyId(), _DL_RESOURCE_NAME,
ResourceConstants.SCOPE_INDIVIDUAL,
String.valueOf(group.getGroupId()));
if (count > 0) {
return;
}
_resourceLocalService.addResources(
company.getCompanyId(), group.getGroupId(), 0, _DL_RESOURCE_NAME,
group.getGroupId(), false, true, true);
}
private static final String _DL_RESOURCE_NAME =
"com.liferay.document.library";
private final CompanyLocalService _companyLocalService;
private final GroupLocalService _groupLocalService;
private final RepositoryLocalService _repositoryLocalService;
private final ResourceLocalService _resourceLocalService;
private final ResourcePermissionLocalService
_resourcePermissionLocalService;
private final RoleLocalService _roleLocalService;
}