com.liferay.portal.service.impl.UserGroupRoleLocalServiceImpl Maven / Gradle / Ivy
/**
* 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.petra.sql.dsl.DSLQueryFactoryUtil;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.bean.BeanReference;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.RoleTable;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.model.UserGroupGroupRoleTable;
import com.liferay.portal.kernel.model.UserGroupRole;
import com.liferay.portal.kernel.model.Users_UserGroupsTable;
import com.liferay.portal.kernel.search.Indexable;
import com.liferay.portal.kernel.search.IndexableType;
import com.liferay.portal.kernel.service.persistence.GroupPersistence;
import com.liferay.portal.kernel.service.persistence.RolePersistence;
import com.liferay.portal.kernel.service.persistence.UserPersistence;
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 UserGroupRole addUserGroupRole(
long userId, long groupId, long roleId) {
UserGroupRole userGroupRole = userGroupRolePersistence.fetchByU_G_R(
userId, groupId, roleId);
if (userGroupRole == null) {
userGroupRole = userGroupRolePersistence.create(
counterLocalService.increment(UserGroupRole.class.getName()));
userGroupRole.setUserId(userId);
userGroupRole.setGroupId(groupId);
userGroupRole.setRoleId(roleId);
userGroupRole = userGroupRolePersistence.update(userGroupRole);
}
return userGroupRole;
}
@Indexable(type = IndexableType.REINDEX)
@Override
public UserGroupRole addUserGroupRole(UserGroupRole userGroupRole) {
if (userGroupRole.getUserGroupRoleId() == 0) {
userGroupRole.setUserGroupRoleId(
counterLocalService.increment(UserGroupRole.class.getName()));
}
userGroupRole.setNew(true);
return userGroupRolePersistence.update(userGroupRole);
}
@Override
public List addUserGroupRoles(
long userId, long groupId, long[] roleIds) {
List 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 addUserGroupRoles(
long[] userIds, long groupId, long roleId) {
List 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 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) {
UserGroupRole userGroupRole = userGroupRolePersistence.fetchByU_G_R(
userId, groupId, roleId);
if (userGroupRole != null) {
userGroupRolePersistence.remove(userGroupRole);
}
}
}
@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 roles = _rolePersistence.findByT_S(
roleType, StringPool.BLANK);
for (long userId : userIds) {
for (Role role : roles) {
UserGroupRole userGroupRole =
userGroupRolePersistence.fetchByU_G_R(
userId, groupId, role.getRoleId());
if (userGroupRole != null) {
userGroupRolePersistence.remove(userGroupRole);
}
}
}
}
@Override
public void deleteUserGroupRoles(
long[] userIds, long groupId, long roleId) {
for (long userId : userIds) {
UserGroupRole userGroupRole = userGroupRolePersistence.fetchByU_G_R(
userId, groupId, roleId);
if (userGroupRole != null) {
userGroupRolePersistence.remove(userGroupRole);
}
}
}
@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 UserGroupRole fetchUserGroupRole(
long userId, long groupId, long roleId) {
return userGroupRolePersistence.fetchByU_G_R(userId, groupId, roleId);
}
@Override
public List getUserGroupRoles(long userId) {
return userGroupRolePersistence.findByUserId(userId);
}
@Override
public List getUserGroupRoles(long userId, long groupId) {
return userGroupRolePersistence.findByU_G(userId, groupId);
}
@Override
public List getUserGroupRoles(
long userId, long groupId, int start, int end) {
return userGroupRolePersistence.findByU_G(userId, groupId, start, end);
}
@Override
public List getUserGroupRolesByGroup(long groupId) {
return userGroupRolePersistence.findByGroupId(groupId);
}
@Override
public List getUserGroupRolesByGroupAndRole(
long groupId, long roleId) {
return userGroupRolePersistence.findByG_R(groupId, roleId);
}
@Override
public List 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) {
int count = userGroupRolePersistence.countByU_G_R(
userId, groupId, roleId);
if (count > 0) {
return true;
}
if (inherit) {
count = _rolePersistence.dslQueryCount(
DSLQueryFactoryUtil.count(
).from(
RoleTable.INSTANCE
).innerJoinON(
UserGroupGroupRoleTable.INSTANCE,
UserGroupGroupRoleTable.INSTANCE.roleId.eq(
RoleTable.INSTANCE.roleId)
).innerJoinON(
Users_UserGroupsTable.INSTANCE,
Users_UserGroupsTable.INSTANCE.userGroupId.eq(
UserGroupGroupRoleTable.INSTANCE.userGroupId)
).where(
RoleTable.INSTANCE.roleId.eq(
roleId
).and(
UserGroupGroupRoleTable.INSTANCE.groupId.eq(groupId)
).and(
Users_UserGroupsTable.INSTANCE.userId.eq(userId)
)
));
if (count > 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);
Role role = _rolePersistence.fetchByC_N(user.getCompanyId(), roleName);
if (role == null) {
return false;
}
return hasUserGroupRole(userId, groupId, role.getRoleId(), inherit);
}
@Indexable(type = IndexableType.REINDEX)
@Override
public UserGroupRole updateUserGroupRole(UserGroupRole userGroupRole) {
if (userGroupRole.getUserGroupRoleId() == 0) {
userGroupRole.setUserGroupRoleId(
counterLocalService.increment(UserGroupRole.class.getName()));
}
return userGroupRolePersistence.update(userGroupRole);
}
@BeanReference(type = GroupPersistence.class)
private GroupPersistence _groupPersistence;
@BeanReference(type = RolePersistence.class)
private RolePersistence _rolePersistence;
@BeanReference(type = UserPersistence.class)
private UserPersistence _userPersistence;
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy