001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.SystemException;
018 import com.liferay.portal.model.ResourceBlockConstants;
019 import com.liferay.portal.model.ResourceBlockPermission;
020 import com.liferay.portal.model.ResourceBlockPermissionsContainer;
021 import com.liferay.portal.service.base.ResourceBlockPermissionLocalServiceBaseImpl;
022
023 import java.util.List;
024 import java.util.Map;
025
026
036 public class ResourceBlockPermissionLocalServiceImpl
037 extends ResourceBlockPermissionLocalServiceBaseImpl {
038
039 public void addResourceBlockPermissions(
040 long resourceBlockId,
041 ResourceBlockPermissionsContainer resourceBlockPermissionsContainer)
042 throws SystemException {
043
044 Map<Long, Long> permissions =
045 resourceBlockPermissionsContainer.getPermissions();
046
047 for (Map.Entry<Long, Long> permission : permissions.entrySet()) {
048 long resourceBlockPermissionId = counterLocalService.increment();
049
050 ResourceBlockPermission resourceBlockPermission =
051 resourceBlockPermissionPersistence.create(
052 resourceBlockPermissionId);
053
054 resourceBlockPermission.setResourceBlockId(resourceBlockId);
055 resourceBlockPermission.setRoleId(permission.getKey());
056 resourceBlockPermission.setActionIds(permission.getValue());
057
058 updateResourceBlockPermission(resourceBlockPermission);
059 }
060 }
061
062 public void deleteResourceBlockPermissions(long resourceBlockId)
063 throws SystemException {
064
065 resourceBlockPermissionPersistence.removeByResourceBlockId(
066 resourceBlockId);
067 }
068
069 public ResourceBlockPermissionsContainer
070 getResourceBlockPermissionsContainer(long resourceBlockId)
071 throws SystemException {
072
073 List<ResourceBlockPermission> resourceBlockPermissions =
074 resourceBlockPermissionPersistence.findByResourceBlockId(
075 resourceBlockId);
076
077 ResourceBlockPermissionsContainer resourceBlockPermissionContainer =
078 new ResourceBlockPermissionsContainer();
079
080 for (ResourceBlockPermission resourceBlockPermission :
081 resourceBlockPermissions) {
082
083 resourceBlockPermissionContainer.setPermissions(
084 resourceBlockPermission.getRoleId(),
085 resourceBlockPermission.getActionIds());
086 }
087
088 return resourceBlockPermissionContainer;
089 }
090
091 public void updateResourceBlockPermission(
092 long resourceBlockId, long roleId, long actionIdsLong, int operator)
093 throws SystemException {
094
095 ResourceBlockPermission resourceBlockPermission =
096 resourceBlockPermissionPersistence.fetchByR_R(
097 resourceBlockId, roleId);
098
099 if (resourceBlockPermission == null) {
100 if (actionIdsLong == 0) {
101 return;
102 }
103
104 long resourceBlockPermissionId = counterLocalService.increment();
105
106 resourceBlockPermission = resourceBlockPermissionPersistence.create(
107 resourceBlockPermissionId);
108
109 resourceBlockPermission.setResourceBlockId(resourceBlockId);
110 resourceBlockPermission.setRoleId(roleId);
111 }
112
113 if (operator == ResourceBlockConstants.OPERATOR_ADD) {
114 actionIdsLong |= resourceBlockPermission.getActionIds();
115 }
116 else if (operator == ResourceBlockConstants.OPERATOR_REMOVE) {
117 actionIdsLong =
118 resourceBlockPermission.getActionIds() & (~actionIdsLong);
119 }
120
121 if (actionIdsLong == 0) {
122 deleteResourceBlockPermission(resourceBlockPermission);
123 }
124 else {
125 resourceBlockPermission.setActionIds(actionIdsLong);
126
127 updateResourceBlockPermission(resourceBlockPermission);
128 }
129 }
130
131 }