/** * 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.portal.service.impl; import com.liferay.portal.kernel.exception.NoSuchUserGroupRoleException; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Role; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.model.UserGroupRole; import com.liferay.portal.kernel.service.persistence.UserGroupRolePK; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.service.base.UserGroupRoleLocalServiceBaseImpl; import java.util.ArrayList; import java.util.List; /** * @author Jorge Ferrer */ public class UserGroupRoleLocalServiceImpl extends UserGroupRoleLocalServiceBaseImpl { @Override public List<UserGroupRole> addUserGroupRoles( long userId, long groupId, long[] roleIds) { List<UserGroupRole> userGroupRoles = new ArrayList<>(); for (long roleId : roleIds) { UserGroupRole userGroupRole = addUserGroupRole( userId, groupId, roleId); userGroupRoles.add(userGroupRole); } Group group = groupPersistence.fetchByPrimaryKey(groupId); if (group.isRegularSite()) { groupPersistence.addUser(groupId, userId); } return userGroupRoles; } @Override public List<UserGroupRole> addUserGroupRoles( long[] userIds, long groupId, long roleId) { List<UserGroupRole> userGroupRoles = new ArrayList<>(); for (long userId : userIds) { UserGroupRole userGroupRole = addUserGroupRole( userId, groupId, roleId); userGroupRoles.add(userGroupRole); } Group group = groupPersistence.fetchByPrimaryKey(groupId); if (group.isRegularSite()) { groupPersistence.addUsers(groupId, userIds); } return userGroupRoles; } @Override public void deleteUserGroupRoles(long groupId, int roleType) { List<UserGroupRole> userGroupRoles = userGroupRoleFinder.findByGroupRoleType(groupId, roleType); for (UserGroupRole userGroupRole : userGroupRoles) { userGroupRolePersistence.removeByG_R( groupId, userGroupRole.getRoleId()); } } @Override public void deleteUserGroupRoles( long userId, long groupId, long[] roleIds) { for (long roleId : roleIds) { UserGroupRolePK userGroupRolePK = new UserGroupRolePK( userId, groupId, roleId); try { userGroupRolePersistence.remove(userGroupRolePK); } catch (NoSuchUserGroupRoleException nsugre) { // LPS-52675 if (_log.isDebugEnabled()) { _log.debug(nsugre, nsugre); } } } } @Override public void deleteUserGroupRoles(long userId, long[] groupIds) { for (long groupId : groupIds) { userGroupRolePersistence.removeByU_G(userId, groupId); } } @Override public void deleteUserGroupRoles(long[] userIds, long groupId) { for (long userId : userIds) { userGroupRolePersistence.removeByU_G(userId, groupId); } } @Override public void deleteUserGroupRoles( long[] userIds, long groupId, int roleType) { List<Role> roles = rolePersistence.findByT_S( roleType, StringPool.BLANK); for (long userId : userIds) { for (Role role : roles) { UserGroupRolePK userGroupRolePK = new UserGroupRolePK( userId, groupId, role.getRoleId()); try { userGroupRolePersistence.remove(userGroupRolePK); } catch (NoSuchUserGroupRoleException nsugre) { // LPS-52675 if (_log.isDebugEnabled()) { _log.debug(nsugre, nsugre); } } } } } @Override public void deleteUserGroupRoles( long[] userIds, long groupId, long roleId) { for (long userId : userIds) { UserGroupRolePK pk = new UserGroupRolePK(userId, groupId, roleId); try { userGroupRolePersistence.remove(pk); } catch (NoSuchUserGroupRoleException nsugre) { // LPS-52675 if (_log.isDebugEnabled()) { _log.debug(nsugre, nsugre); } } } } @Override public void deleteUserGroupRolesByGroupId(long groupId) { userGroupRolePersistence.removeByGroupId(groupId); } @Override public void deleteUserGroupRolesByRoleId(long roleId) { userGroupRolePersistence.removeByRoleId(roleId); } @Override public void deleteUserGroupRolesByUserId(long userId) { userGroupRolePersistence.removeByUserId(userId); } @Override public List<UserGroupRole> getUserGroupRoles(long userId) { return userGroupRolePersistence.findByUserId(userId); } @Override public List<UserGroupRole> getUserGroupRoles(long userId, long groupId) { return userGroupRolePersistence.findByU_G(userId, groupId); } @Override public List<UserGroupRole> getUserGroupRoles( long userId, long groupId, int start, int end) { return userGroupRolePersistence.findByU_G(userId, groupId, start, end); } @Override public List<UserGroupRole> getUserGroupRolesByGroup(long groupId) { return userGroupRolePersistence.findByGroupId(groupId); } @Override public List<UserGroupRole> getUserGroupRolesByGroupAndRole( long groupId, long roleId) { return userGroupRolePersistence.findByG_R(groupId, roleId); } @Override public List<UserGroupRole> getUserGroupRolesByUserUserGroupAndGroup( long userId, long groupId) { return userGroupRoleFinder.findByUserUserGroupGroupRole( userId, groupId); } @Override public int getUserGroupRolesCount(long userId, long groupId) { return userGroupRolePersistence.countByU_G(userId, groupId); } @Override public boolean hasUserGroupRole(long userId, long groupId, long roleId) { return hasUserGroupRole(userId, groupId, roleId, false); } @Override public boolean hasUserGroupRole( long userId, long groupId, long roleId, boolean inherit) { UserGroupRolePK userGroupRolePK = new UserGroupRolePK( userId, groupId, roleId); UserGroupRole userGroupRole = userGroupRolePersistence.fetchByPrimaryKey(userGroupRolePK); if (userGroupRole != null) { return true; } if (inherit) { if (roleFinder.countByU_G_R(userId, groupId, roleId) > 0) { return true; } } return false; } @Override public boolean hasUserGroupRole(long userId, long groupId, String roleName) throws PortalException { return hasUserGroupRole(userId, groupId, roleName, false); } @Override public boolean hasUserGroupRole( long userId, long groupId, String roleName, boolean inherit) throws PortalException { User user = userPersistence.findByPrimaryKey(userId); long companyId = user.getCompanyId(); Role role = rolePersistence.fetchByC_N(companyId, roleName); if (role == null) { return false; } return hasUserGroupRole(userId, groupId, role.getRoleId(), inherit); } protected UserGroupRole addUserGroupRole( long userId, long groupId, long roleId) { UserGroupRolePK userGroupRolePK = new UserGroupRolePK( userId, groupId, roleId); UserGroupRole userGroupRole = userGroupRolePersistence.fetchByPrimaryKey(userGroupRolePK); if (userGroupRole == null) { userGroupRole = userGroupRolePersistence.create(userGroupRolePK); userGroupRolePersistence.update(userGroupRole); } return userGroupRole; } private static final Log _log = LogFactoryUtil.getLog( UserGroupRoleLocalServiceImpl.class); }