1 /** 2 * Copyright 2004-2013 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.kpme.core.service.role; 17 18 import java.util.List; 19 import java.util.Map; 20 21 import org.joda.time.DateTime; 22 import org.kuali.rice.kim.api.role.RoleMember; 23 import org.springframework.cache.annotation.Cacheable; 24 25 public interface KPMERoleService { 26 27 /** 28 * Checks whether the given {@code principalId} has the role {@code roleName}. 29 * 30 * @param principalId The person to check the role for 31 * @param namespaceCode The namespace of the role 32 * @param roleName The name of the role 33 * @param asOfDate The effective date of the role 34 * 35 * @return true if {@code principalId} has the role {@code roleName}, false otherwise. 36 */ 37 @Cacheable(value=RoleMember.Cache.NAME, key="'{principalHasRole}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'asOfDate=' + #p3") 38 boolean principalHasRole(String principalId, String namespaceCode, String roleName, DateTime asOfDate); 39 40 /** 41 * Checks whether the given {@code principalId} has the role {@code roleName} depending on the given role qualifications. 42 * 43 * @param principalId The person to check the role for 44 * @param namespaceCode The namespace of the role 45 * @param roleName The name of the role 46 * @param qualification The map of role qualifiers for the person 47 * @param asOfDate The effective date of the role 48 * 49 * @return true if {@code principalId} has the role {@code roleName}, false otherwise. 50 */ 51 @Cacheable(value=RoleMember.Cache.NAME, key="'{principalHasRole}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'qualification=' + T(org.kuali.rice.core.api.cache.CacheKeyUtils).mapKey(#p3) + '|' + 'asOfDate=' + #p4") 52 boolean principalHasRole(String principalId, String namespaceCode, String roleName, Map<String, String> qualification, DateTime asOfDate); 53 54 /** 55 * Checks whether the given {@code principalId} has the role {@code roleName} depending on the given work area. 56 * 57 * @param principalId The person to check the role for 58 * @param namespaceCode The namespace of the role 59 * @param roleName The name of the role 60 * @param workArea The work area qualifier 61 * @param asOfDate The effective date of the role 62 * 63 * @return true if {@code principalId} has the role {@code roleName} for the given work area, false otherwise. 64 */ 65 @Cacheable(value=RoleMember.Cache.NAME, key="'{principalHasRoleInWorkArea}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'workArea=' + #p3 + '|' + 'asOfDate=' + #p4") 66 boolean principalHasRoleInWorkArea(String principalId, String namespaceCode, String roleName, Long workArea, DateTime asOfDate); 67 68 /** 69 * Checks whether the given {@code principalId} has the role {@code roleName} depending on the given department. 70 * 71 * @param principalId The person to check the role for 72 * @param namespaceCode The namespace of the role 73 * @param roleName The name of the role 74 * @param department The department qualifier 75 * @param asOfDate The effective date of the role 76 * 77 * @return true if {@code principalId} has the role {@code roleName} for the given department, false otherwise. 78 */ 79 @Cacheable(value= RoleMember.Cache.NAME, key="'{principalHasRoleInDepartment}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'department=' + #p3 + '|' + 'asOfDate=' + #p4") 80 boolean principalHasRoleInDepartment(String principalId, String namespaceCode, String roleName, String department, DateTime asOfDate); 81 82 /** 83 * Checks whether the given {@code principalId} has the role {@code roleName} depending on the given location. 84 * 85 * @param principalId The person to check the role for 86 * @param namespaceCode The namespace of the role 87 * @param roleName The name of the role 88 * @param location The location qualifier 89 * @param asOfDate The effective date of the role 90 * 91 * @return true if {@code principalId} has the role {@code roleName} for the given location, false otherwise. 92 */ 93 @Cacheable(value= RoleMember.Cache.NAME, key="'{principalHasRoleInLocation}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'location=' + #p3 + '|' + 'asOfDate=' + #p4") 94 boolean principalHasRoleInLocation(String principalId, String namespaceCode, String roleName, String location, DateTime asOfDate); 95 96 /** 97 * Gets the members of the role {@code roleName}. 98 * 99 * @param namespaceCode The namespace of the role 100 * @param roleName The name of the role 101 * @param asOfDate The effective date of the role 102 * @param getActiveOnly Whether or not to get only active role members 103 * 104 * @return the list of role members in the role {@code roleName}. 105 */ 106 List<RoleMember> getRoleMembers(String namespaceCode, String roleName, DateTime asOfDate, boolean isActiveOnly); 107 108 /** 109 * Gets the members of the role {@code roleName} for the given role qualifiers. 110 * 111 * @param namespaceCode The namespace of the role 112 * @param roleName The name of the role 113 * @param qualification The map of role qualifiers 114 * @param asOfDate The effective date of the role 115 * @param getActiveOnly Whether or not to get only active role members 116 * 117 * @return the list of role members in the role {@code roleName}. 118 */ 119 List<RoleMember> getRoleMembers(String namespaceCode, String roleName, Map<String, String> qualification, DateTime asOfDate, boolean isActiveOnly); 120 121 /** 122 * Gets the members of the role {@code roleName} for the given work area. 123 * 124 * @param namespaceCode The namespace of the role 125 * @param roleName The name of the role 126 * @param workArea The work area qualifier 127 * @param asOfDate The effective date of the role 128 * @param getActiveOnly Whether or not to get only active role members 129 * 130 * @return the list of role members in the role {@code roleName} for the given work area. 131 */ 132 List<RoleMember> getRoleMembersInWorkArea(String namespaceCode, String roleName, Long workArea, DateTime asOfDate, boolean isActiveOnly); 133 134 /** 135 * Gets the members of the role {@code roleName} for the given department. 136 * 137 * @param namespaceCode The namespace of the role 138 * @param roleName The name of the role 139 * @param department The department qualifier 140 * @param asOfDate The effective date of the role 141 * @param getActiveOnly Whether or not to get only active role members 142 * 143 * @return the list of role members in the role {@code roleName} for the given department. 144 */ 145 List<RoleMember> getRoleMembersInDepartment(String namespaceCode, String roleName, String department, DateTime asOfDate, boolean isActiveOnly); 146 147 List<RoleMember> getRoleMembersInPosition(String namespaceCode, String roleName, String positionNumber, DateTime asOfDate, boolean isActiveOnly); 148 /** 149 * Gets the members of the role {@code roleName} for the given location. 150 * 151 * @param namespaceCode The namespace of the role 152 * @param roleName The name of the role 153 * @param location The location qualifier 154 * @param asOfDate The effective date of the role 155 * @param getActiveOnly Whether or not to get only active role members 156 * 157 * @return the list of role members in the role {@code roleName} for the given location. 158 */ 159 List<RoleMember> getRoleMembersInLocation(String namespaceCode, String roleName, String location, DateTime asOfDate, boolean isActiveOnly); 160 161 /** 162 * Gets the work areas for the given {@code principalId} in the role {@code roleName}. 163 * 164 * @param principalId The person to check the role for 165 * @param namespaceCode The namespace of the role 166 * @param roleName The name of the role 167 * @param asOfDate The effective date of the role 168 * @param activeOnly Whether or not to get only active role members 169 * 170 * @return the list of work areas for the given {@code principalId} in the role {@code roleName}. 171 */ 172 @Cacheable(value= RoleMember.Cache.NAME, key="'{getWorkAreasForPrincipalInRole}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'asOfDate=' + #p3 + '|' + 'activeOnly=' + #p4") 173 List<Long> getWorkAreasForPrincipalInRole(String principalId, String namespaceCode, String roleName, DateTime asOfDate, boolean activeOnly); 174 175 /** 176 * Gets the work areas for the given {@code principalId} in the role {@code roleName}. 177 * 178 * @param principalId The person to check the role for 179 * @param roleIds The list of roleIds 180 * @param asOfDate The effective date of the role 181 * @param activeOnly Whether or not to get only active role members 182 * 183 * @return the list of work areas for the given {@code principalId} in the role {@code roleName}. 184 */ 185 @Cacheable(value= RoleMember.Cache.NAME, key="'{getWorkAreasForPrincipalInRoles}' + 'principal=' + #p0 + '|' + 'roleIds=' + T(org.kuali.rice.core.api.cache.CacheKeyUtils).key(#p1) + '|' + 'asOfDate=' + #p3 + '|' + 'activeOnly=' + #p4") 186 List<Long> getWorkAreasForPrincipalInRoles(String principalId, List<String> roleIds, DateTime asOfDate, boolean activeOnly); 187 188 /** 189 * Gets the departments for the given {@code principalId} in the roles {@code roleIds}. 190 * 191 * @param principalId The person to check the role for 192 * @param roleIds The list of roleIds 193 * @param asOfDate The effective date of the role 194 * @param activeOnly Whether or not to get only active role members 195 * 196 * @return the list of work areas for the given {@code principalId} in the roles {@code roleIds}. 197 */ 198 @Cacheable(value= RoleMember.Cache.NAME, key="'{getDepartmentsForPrincipalInRoles}' + 'principal=' + #p0 + '|' + 'roleIds=' + T(org.kuali.rice.core.api.cache.CacheKeyUtils).key(#p1) + '|' + 'asOfDate=' + #p3 + '|' + 'activeOnly=' + #p4") 199 List<String> getDepartmentsForPrincipalInRoles(String principalId, List<String> roleIds, DateTime asOfDate, boolean activeOnly); 200 201 /** 202 * Gets the locations for the given {@code principalId} in the roles {@code roleIds}. 203 * 204 * @param principalId The person to check the role for 205 * @param roleIds The list of roleIds 206 * @param asOfDate The effective date of the role 207 * @param activeOnly Whether or not to get only active role members 208 * 209 * @return the list of work areas for the given {@code principalId} in the roles {@code roleIds}. 210 */ 211 @Cacheable(value= RoleMember.Cache.NAME, key="'{getLocationsForPrincipalInRoles}' + 'principal=' + #p0 + '|' + 'roleIds=' + T(org.kuali.rice.core.api.cache.CacheKeyUtils).key(#p1) + '|' + 'asOfDate=' + #p3 + '|' + 'activeOnly=' + #p4") 212 List<String> getLocationsForPrincipalInRoles(String principalId, List<String> roleIds, DateTime asOfDate, boolean activeOnly); 213 214 215 /** 216 * Gets the departments for the given {@code principalId} in the role {@code roleName}. 217 * 218 * @param principalId The person to check the role for 219 * @param namespaceCode The namespace of the role 220 * @param roleName The name of the role 221 * @param asOfDate The effective date of the role 222 * @param isActiveOnly Whether or not to get only active role members 223 * 224 * @return the list of departments for the given {@code principalId} in the role {@code roleName}. 225 */ 226 @Cacheable(value= RoleMember.Cache.NAME, key="'{getDepartmentsForPrincipalInRole}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'asOfDate=' + #p3 + '|' + 'isActiveOnly=' + #p4") 227 List<String> getDepartmentsForPrincipalInRole(String principalId, String namespaceCode, String roleName, DateTime asOfDate, boolean isActiveOnly); 228 229 /** 230 * Gets the locations for the given {@code principalId} in the role {@code roleName}. 231 * 232 * @param principalId The person to check the role for 233 * @param namespaceCode The namespace of the role 234 * @param roleName The name of the role 235 * @param asOfDate The effective date of the role 236 * @param isActiveOnly Whether or not to get only active role members 237 * 238 * @return the list of locations for the given {@code principalId} in the role {@code roleName}. 239 */ 240 @Cacheable(value= RoleMember.Cache.NAME, key="'{getLocationsForPrincipalInRole}' + 'principal=' + #p0 + '|' + 'namespace=' + #p1 + '|' + 'roleName=' + #p2 + '|' + 'asOfDate=' + #p3 + '|' + 'isActiveOnly=' + #p4") 241 List<String> getLocationsForPrincipalInRole(String principalId, String namespaceCode, String roleName, DateTime asOfDate, boolean isActiveOnly); 242 243 }