001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.service.impl;
016    
017    import com.liferay.portal.exception.NoSuchUserGroupGroupRoleException;
018    import com.liferay.portal.kernel.exception.PortalException;
019    import com.liferay.portal.model.Role;
020    import com.liferay.portal.model.UserGroup;
021    import com.liferay.portal.model.UserGroupGroupRole;
022    import com.liferay.portal.security.permission.PermissionCacheUtil;
023    import com.liferay.portal.service.base.UserGroupGroupRoleLocalServiceBaseImpl;
024    import com.liferay.portal.service.persistence.UserGroupGroupRolePK;
025    
026    import java.util.List;
027    
028    /**
029     * @author Brett Swaim
030     */
031    public class UserGroupGroupRoleLocalServiceImpl
032            extends UserGroupGroupRoleLocalServiceBaseImpl {
033    
034            @Override
035            public void addUserGroupGroupRoles(
036                    long userGroupId, long groupId, long[] roleIds) {
037    
038                    for (long roleId : roleIds) {
039                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
040                                    userGroupId, groupId, roleId);
041    
042                            UserGroupGroupRole userGroupGroupRole =
043                                    userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
044    
045                            if (userGroupGroupRole == null) {
046                                    userGroupGroupRole = userGroupGroupRolePersistence.create(pk);
047    
048                                    userGroupGroupRolePersistence.update(userGroupGroupRole);
049                            }
050                    }
051    
052                    PermissionCacheUtil.clearCache();
053            }
054    
055            @Override
056            public void addUserGroupGroupRoles(
057                    long[] userGroupIds, long groupId, long roleId) {
058    
059                    for (long userGroupId : userGroupIds) {
060                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
061                                    userGroupId, groupId, roleId);
062    
063                            UserGroupGroupRole userGroupGroupRole =
064                                    userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
065    
066                            if (userGroupGroupRole == null) {
067                                    userGroupGroupRole = userGroupGroupRolePersistence.create(pk);
068    
069                                    userGroupGroupRolePersistence.update(userGroupGroupRole);
070                            }
071                    }
072    
073                    PermissionCacheUtil.clearCache();
074            }
075    
076            @Override
077            public UserGroupGroupRole deleteUserGroupGroupRole(
078                    UserGroupGroupRole userGroupGroupRole) {
079    
080                    userGroupGroupRolePersistence.remove(userGroupGroupRole);
081    
082                    PermissionCacheUtil.clearCache();
083    
084                    return userGroupGroupRole;
085            }
086    
087            @Override
088            public void deleteUserGroupGroupRoles(long groupId, int roleType) {
089                    List<UserGroupGroupRole> userGroupGroupRoles =
090                            userGroupGroupRoleFinder.findByGroupRoleType(groupId, roleType);
091    
092                    for (UserGroupGroupRole userGroupGroupRole : userGroupGroupRoles) {
093                            userGroupGroupRolePersistence.removeByG_R(
094                                    groupId, userGroupGroupRole.getRoleId());
095                    }
096    
097                    PermissionCacheUtil.clearCache();
098            }
099    
100            @Override
101            public void deleteUserGroupGroupRoles(
102                    long userGroupId, long groupId, long[] roleIds) {
103    
104                    for (long roleId : roleIds) {
105                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
106                                    userGroupId, groupId, roleId);
107    
108                            try {
109                                    userGroupGroupRolePersistence.remove(pk);
110                            }
111                            catch (NoSuchUserGroupGroupRoleException nsuggre) {
112                            }
113                    }
114    
115                    PermissionCacheUtil.clearCache();
116            }
117    
118            @Override
119            public void deleteUserGroupGroupRoles(long userGroupId, long[] groupIds) {
120                    for (long groupId : groupIds) {
121                            userGroupGroupRolePersistence.removeByU_G(userGroupId, groupId);
122                    }
123    
124                    PermissionCacheUtil.clearCache();
125            }
126    
127            @Override
128            public void deleteUserGroupGroupRoles(long[] userGroupIds, long groupId) {
129                    for (long userGroupId : userGroupIds) {
130                            userGroupGroupRolePersistence.removeByU_G(userGroupId, groupId);
131                    }
132    
133                    PermissionCacheUtil.clearCache();
134            }
135    
136            @Override
137            public void deleteUserGroupGroupRoles(
138                    long[] userGroupIds, long groupId, long roleId) {
139    
140                    for (long userGroupId : userGroupIds) {
141                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
142                                    userGroupId, groupId, roleId);
143    
144                            try {
145                                    userGroupGroupRolePersistence.remove(pk);
146                            }
147                            catch (NoSuchUserGroupGroupRoleException nsuggre) {
148                            }
149                    }
150    
151                    PermissionCacheUtil.clearCache();
152            }
153    
154            @Override
155            public void deleteUserGroupGroupRolesByGroupId(long groupId) {
156                    userGroupGroupRolePersistence.removeByGroupId(groupId);
157    
158                    PermissionCacheUtil.clearCache();
159            }
160    
161            @Override
162            public void deleteUserGroupGroupRolesByRoleId(long roleId) {
163                    userGroupGroupRolePersistence.removeByRoleId(roleId);
164    
165                    PermissionCacheUtil.clearCache();
166            }
167    
168            @Override
169            public void deleteUserGroupGroupRolesByUserGroupId(long userGroupId) {
170                    userGroupGroupRolePersistence.removeByUserGroupId(userGroupId);
171    
172                    PermissionCacheUtil.clearCache();
173            }
174    
175            @Override
176            public List<UserGroupGroupRole> getUserGroupGroupRoles(long userGroupId) {
177                    return userGroupGroupRolePersistence.findByUserGroupId(userGroupId);
178            }
179    
180            @Override
181            public List<UserGroupGroupRole> getUserGroupGroupRoles(
182                    long userGroupId, long groupId) {
183    
184                    return userGroupGroupRolePersistence.findByU_G(userGroupId, groupId);
185            }
186    
187            @Override
188            public List<UserGroupGroupRole> getUserGroupGroupRolesByGroupAndRole(
189                    long groupId, long roleId) {
190    
191                    return userGroupGroupRolePersistence.findByG_R(groupId, roleId);
192            }
193    
194            @Override
195            public List<UserGroupGroupRole> getUserGroupGroupRolesByUser(long userId) {
196                    return userGroupGroupRoleFinder.findByUserGroupsUsers(userId);
197            }
198    
199            @Override
200            public boolean hasUserGroupGroupRole(
201                    long userGroupId, long groupId, long roleId) {
202    
203                    UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
204                            userGroupId, groupId, roleId);
205    
206                    UserGroupGroupRole userGroupGroupRole =
207                            userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
208    
209                    if (userGroupGroupRole != null) {
210                            return true;
211                    }
212                    else {
213                            return false;
214                    }
215            }
216    
217            @Override
218            public boolean hasUserGroupGroupRole(
219                            long userGroupId, long groupId, String roleName)
220                    throws PortalException {
221    
222                    UserGroup userGroup = userGroupPersistence.findByPrimaryKey(
223                            userGroupId);
224    
225                    long companyId = userGroup.getCompanyId();
226    
227                    Role role = rolePersistence.findByC_N(companyId, roleName);
228    
229                    long roleId = role.getRoleId();
230    
231                    return hasUserGroupGroupRole(userGroupId, groupId, roleId);
232            }
233    
234    }