001    /**
002     * Copyright (c) 2000-2013 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.NoSuchUserGroupGroupRoleException;
018    import com.liferay.portal.kernel.exception.PortalException;
019    import com.liferay.portal.kernel.exception.SystemException;
020    import com.liferay.portal.model.Group;
021    import com.liferay.portal.model.ResourceConstants;
022    import com.liferay.portal.model.Role;
023    import com.liferay.portal.model.UserGroup;
024    import com.liferay.portal.model.UserGroupGroupRole;
025    import com.liferay.portal.security.permission.PermissionCacheUtil;
026    import com.liferay.portal.service.base.UserGroupGroupRoleLocalServiceBaseImpl;
027    import com.liferay.portal.service.persistence.UserGroupGroupRolePK;
028    
029    import java.util.List;
030    
031    /**
032     * @author Brett Swaim
033     */
034    public class UserGroupGroupRoleLocalServiceImpl
035            extends UserGroupGroupRoleLocalServiceBaseImpl {
036    
037            @Override
038            public void addUserGroupGroupRoles(
039                            long userGroupId, long groupId, long[] roleIds)
040                    throws PortalException, SystemException {
041    
042                    checkGroupResource(groupId);
043    
044                    for (long roleId : roleIds) {
045                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
046                                    userGroupId, groupId, roleId);
047    
048                            UserGroupGroupRole userGroupGroupRole =
049                                    userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
050    
051                            if (userGroupGroupRole == null) {
052                                    userGroupGroupRole = userGroupGroupRolePersistence.create(pk);
053    
054                                    userGroupGroupRolePersistence.update(userGroupGroupRole, false);
055                            }
056                    }
057    
058                    PermissionCacheUtil.clearCache();
059            }
060    
061            @Override
062            public void addUserGroupGroupRoles(
063                            long[] userGroupIds, long groupId, long roleId)
064                    throws PortalException, SystemException {
065    
066                    checkGroupResource(groupId);
067    
068                    for (long userGroupId : userGroupIds) {
069                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
070                                    userGroupId, groupId, roleId);
071    
072                            UserGroupGroupRole userGroupGroupRole =
073                                    userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
074    
075                            if (userGroupGroupRole == null) {
076                                    userGroupGroupRole = userGroupGroupRolePersistence.create(pk);
077    
078                                    userGroupGroupRolePersistence.update(userGroupGroupRole, false);
079                            }
080                    }
081    
082                    PermissionCacheUtil.clearCache();
083            }
084    
085            @Override
086            public UserGroupGroupRole deleteUserGroupGroupRole(
087                            UserGroupGroupRole userGroupGroupRole)
088                    throws SystemException {
089    
090                    userGroupGroupRolePersistence.remove(userGroupGroupRole);
091    
092                    PermissionCacheUtil.clearCache();
093    
094                    return userGroupGroupRole;
095            }
096    
097            @Override
098            public void deleteUserGroupGroupRoles(
099                            long userGroupId, long groupId, long[] roleIds)
100                    throws SystemException {
101    
102                    for (long roleId : roleIds) {
103                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
104                                    userGroupId, groupId, roleId);
105    
106                            try {
107                                    userGroupGroupRolePersistence.remove(pk);
108                            }
109                            catch (NoSuchUserGroupGroupRoleException nsuggre) {
110                            }
111                    }
112    
113                    PermissionCacheUtil.clearCache();
114            }
115    
116            @Override
117            public void deleteUserGroupGroupRoles(long userGroupId, long[] groupIds)
118                    throws SystemException {
119    
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                    throws SystemException {
130    
131                    for (long userGroupId : userGroupIds) {
132                            userGroupGroupRolePersistence.removeByU_G(userGroupId, groupId);
133                    }
134    
135                    PermissionCacheUtil.clearCache();
136            }
137    
138            @Override
139            public void deleteUserGroupGroupRoles(
140                            long[] userGroupIds, long groupId, long roleId)
141                    throws SystemException {
142    
143                    for (long userGroupId : userGroupIds) {
144                            UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
145                                    userGroupId, groupId, roleId);
146    
147                            try {
148                                    userGroupGroupRolePersistence.remove(pk);
149                            }
150                            catch (NoSuchUserGroupGroupRoleException nsuggre) {
151                            }
152                    }
153    
154                    PermissionCacheUtil.clearCache();
155            }
156    
157            @Override
158            public void deleteUserGroupGroupRolesByGroupId(long groupId)
159                    throws SystemException {
160    
161                    userGroupGroupRolePersistence.removeByGroupId(groupId);
162    
163                    PermissionCacheUtil.clearCache();
164            }
165    
166            @Override
167            public void deleteUserGroupGroupRolesByRoleId(long roleId)
168                    throws SystemException {
169    
170                    userGroupGroupRolePersistence.removeByRoleId(roleId);
171    
172                    PermissionCacheUtil.clearCache();
173            }
174    
175            @Override
176            public void deleteUserGroupGroupRolesByUserGroupId(long userGroupId)
177                    throws SystemException {
178    
179                    userGroupGroupRolePersistence.removeByUserGroupId(userGroupId);
180    
181                    PermissionCacheUtil.clearCache();
182            }
183    
184            @Override
185            public List<UserGroupGroupRole> getUserGroupGroupRoles(long userGroupId)
186                    throws SystemException {
187    
188                    return userGroupGroupRolePersistence.findByUserGroupId(userGroupId);
189            }
190    
191            @Override
192            public List<UserGroupGroupRole> getUserGroupGroupRoles(
193                            long userGroupId, long groupId)
194                    throws SystemException {
195    
196                    return userGroupGroupRolePersistence.findByU_G(userGroupId, groupId);
197            }
198    
199            @Override
200            public List<UserGroupGroupRole> getUserGroupGroupRolesByGroupAndRole(
201                            long groupId, long roleId)
202                    throws SystemException {
203    
204                    return userGroupGroupRolePersistence.findByG_R(groupId, roleId);
205            }
206    
207            @Override
208            public boolean hasUserGroupGroupRole(
209                            long userGroupId, long groupId, long roleId)
210                    throws SystemException {
211    
212                    UserGroupGroupRolePK pk = new UserGroupGroupRolePK(
213                            userGroupId, groupId, roleId);
214    
215                    UserGroupGroupRole userGroupGroupRole =
216                            userGroupGroupRolePersistence.fetchByPrimaryKey(pk);
217    
218                    if (userGroupGroupRole != null) {
219                            return true;
220                    }
221                    else {
222                            return false;
223                    }
224            }
225    
226            @Override
227            public boolean hasUserGroupGroupRole(
228                            long userGroupId, long groupId, String roleName)
229                    throws PortalException, SystemException {
230    
231                    UserGroup userGroup = userGroupPersistence.findByPrimaryKey(
232                            userGroupId);
233    
234                    long companyId = userGroup.getCompanyId();
235    
236                    Role role = rolePersistence.findByC_N(companyId, roleName);
237    
238                    long roleId = role.getRoleId();
239    
240                    return hasUserGroupGroupRole(userGroupId, groupId, roleId);
241            }
242    
243            protected void checkGroupResource(long groupId)
244                    throws PortalException, SystemException {
245    
246                    // Make sure that the individual resource for the group exists
247    
248                    Group group = groupPersistence.findByPrimaryKey(groupId);
249    
250                    resourceLocalService.addResource(
251                            group.getCompanyId(), Group.class.getName(),
252                            ResourceConstants.SCOPE_INDIVIDUAL, String.valueOf(groupId));
253            }
254    
255    }