001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.model.ResourceBlock;
019 import com.liferay.portal.model.ResourceBlockConstants;
020 import com.liferay.portal.model.ResourceBlockPermission;
021 import com.liferay.portal.model.ResourceBlockPermissionsContainer;
022 import com.liferay.portal.service.base.ResourceBlockPermissionLocalServiceBaseImpl;
023
024 import java.util.Collections;
025 import java.util.HashMap;
026 import java.util.HashSet;
027 import java.util.List;
028 import java.util.Map;
029 import java.util.Set;
030
031
041 public class ResourceBlockPermissionLocalServiceImpl
042 extends ResourceBlockPermissionLocalServiceBaseImpl {
043
044 @Override
045 public void addResourceBlockPermissions(
046 long resourceBlockId,
047 ResourceBlockPermissionsContainer resourceBlockPermissionsContainer) {
048
049 Map<Long, Long> permissions =
050 resourceBlockPermissionsContainer.getPermissions();
051
052 for (Map.Entry<Long, Long> permission : permissions.entrySet()) {
053 long resourceBlockPermissionId = counterLocalService.increment();
054
055 ResourceBlockPermission resourceBlockPermission =
056 resourceBlockPermissionPersistence.create(
057 resourceBlockPermissionId);
058
059 resourceBlockPermission.setResourceBlockId(resourceBlockId);
060 resourceBlockPermission.setRoleId(permission.getKey());
061 resourceBlockPermission.setActionIds(permission.getValue());
062
063 updateResourceBlockPermission(resourceBlockPermission);
064 }
065 }
066
067 @Override
068 public void deleteResourceBlockPermissions(long resourceBlockId) {
069 resourceBlockPermissionPersistence.removeByResourceBlockId(
070 resourceBlockId);
071 }
072
073
078 @Deprecated
079 @Override
080 public Map<Long, Set<String>> getAvailableResourceBlockPermissionActionIds(
081 long[] roleIds, String name, long primKey, List<String> actionIds)
082 throws PortalException {
083
084 return getAvailableResourceBlockPermissionActionIds(
085 name, primKey, actionIds);
086 }
087
088 @Override
089 public Map<Long, Set<String>> getAvailableResourceBlockPermissionActionIds(
090 String name, long primKey, List<String> actionIds)
091 throws PortalException {
092
093 if (actionIds.isEmpty()) {
094 return Collections.emptyMap();
095 }
096
097 ResourceBlock resourceBlock =
098 resourceBlockLocalService.getResourceBlock(name, primKey);
099
100 List<ResourceBlockPermission> resourceBlockPermissions =
101 resourceBlockPermissionPersistence.findByResourceBlockId(
102 resourceBlock.getResourceBlockId());
103
104 Map<Long, Set<String>> roleIdsToActionIds =
105 new HashMap<Long, Set<String>>();
106
107 for (ResourceBlockPermission resourceBlockPermission :
108 resourceBlockPermissions) {
109
110 Set<String> availableActionIds = new HashSet<String>();
111
112 List<String> resourceBlockActionIds =
113 resourceBlockLocalService.getActionIds(
114 name, resourceBlockPermission.getActionIds());
115
116 for (String actionId : actionIds) {
117 if (resourceBlockActionIds.contains(actionId)) {
118 availableActionIds.add(actionId);
119 }
120 }
121
122 if (!availableActionIds.isEmpty()) {
123 roleIdsToActionIds.put(
124 resourceBlockPermission.getRoleId(), availableActionIds);
125 }
126 }
127
128 return roleIdsToActionIds;
129 }
130
131 @Override
132 public ResourceBlockPermissionsContainer
133 getResourceBlockPermissionsContainer(long resourceBlockId) {
134
135 List<ResourceBlockPermission> resourceBlockPermissions =
136 resourceBlockPermissionPersistence.findByResourceBlockId(
137 resourceBlockId);
138
139 ResourceBlockPermissionsContainer resourceBlockPermissionContainer =
140 new ResourceBlockPermissionsContainer();
141
142 for (ResourceBlockPermission resourceBlockPermission :
143 resourceBlockPermissions) {
144
145 resourceBlockPermissionContainer.setPermissions(
146 resourceBlockPermission.getRoleId(),
147 resourceBlockPermission.getActionIds());
148 }
149
150 return resourceBlockPermissionContainer;
151 }
152
153 @Override
154 public int getResourceBlockPermissionsCount(
155 long resourceBlockId, long roleId) {
156
157 return resourceBlockPermissionPersistence.countByR_R(
158 resourceBlockId, roleId);
159 }
160
161 @Override
162 public void updateResourceBlockPermission(
163 long resourceBlockId, long roleId, long actionIdsLong, int operator) {
164
165 ResourceBlockPermission resourceBlockPermission =
166 resourceBlockPermissionPersistence.fetchByR_R(
167 resourceBlockId, roleId);
168
169 if (resourceBlockPermission == null) {
170 if (actionIdsLong == 0) {
171 return;
172 }
173
174 long resourceBlockPermissionId = counterLocalService.increment();
175
176 resourceBlockPermission = resourceBlockPermissionPersistence.create(
177 resourceBlockPermissionId);
178
179 resourceBlockPermission.setResourceBlockId(resourceBlockId);
180 resourceBlockPermission.setRoleId(roleId);
181 }
182
183 if (operator == ResourceBlockConstants.OPERATOR_ADD) {
184 actionIdsLong |= resourceBlockPermission.getActionIds();
185 }
186 else if (operator == ResourceBlockConstants.OPERATOR_REMOVE) {
187 actionIdsLong =
188 resourceBlockPermission.getActionIds() & (~actionIdsLong);
189 }
190
191 if (actionIdsLong == 0) {
192 deleteResourceBlockPermission(resourceBlockPermission);
193 }
194 else {
195 resourceBlockPermission.setActionIds(actionIdsLong);
196
197 updateResourceBlockPermission(resourceBlockPermission);
198 }
199 }
200
201 }