001 /** 002 * Copyright 2004-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.hr.time.roles.service; 017 018 import org.kuali.hr.time.assignment.Assignment; 019 import org.kuali.hr.time.roles.TkRole; 020 import org.kuali.hr.time.roles.TkRoleGroup; 021 import org.springframework.cache.annotation.CacheEvict; 022 import org.springframework.cache.annotation.Cacheable; 023 024 import java.sql.Date; 025 import java.util.List; 026 import java.util.Set; 027 028 public interface TkRoleService { 029 /** 030 * Fetch all roles for a given Principal ID as of a particular date 031 * @param principalId 032 * @param asOfDate 033 * @return 034 */ 035 @Cacheable(value= TkRole.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'asOfDate=' + #p1") 036 public List<TkRole> getRoles(String principalId, Date asOfDate); 037 038 /** 039 * Fetch all inactive roles for a given Principal ID as of a particular date 040 * @param principalId 041 * @param asOfDate 042 * @return 043 */ 044 @Cacheable(value= TkRole.CACHE_NAME, key="'{getInactiveRoles}' + 'principalId=' + #p0 + '|' + 'asOfDate=' + #p1") 045 public List<TkRole> getInactiveRoles(String principalId, Date asOfDate); 046 /** 047 * Fetch all roles for a given Principal ID and Role Name as of a particular date 048 * @param principalId 049 * @param roleName 050 * @param asOfDate 051 * @return 052 */ 053 @Cacheable(value= TkRole.CACHE_NAME, key="'principalId=' + #p0 + '|' + 'roleName=' + #p1 + '|' + 'asOfDate=' + #p2") 054 public List<TkRole> getRoles(String principalId, String roleName, Date asOfDate); 055 /** 056 * Fetch all Roles for a given Work Area 057 * @param workArea 058 * @return 059 */ 060 @Cacheable(value= TkRole.CACHE_NAME, key="'workArea=' + #p0") 061 public List<TkRole> getWorkAreaRoles(Long workArea); 062 /** 063 * Fetch all Roles for a given work area and role name as of a particular date 064 * @param workArea 065 * @param roleName 066 * @param asOfDate 067 * @return 068 */ 069 @Cacheable(value= TkRole.CACHE_NAME, key="'workArea=' + #p0 + '|' + 'roleName=' + #p1 + '|' + 'asOfDate=' + #p2") 070 public List<TkRole> getWorkAreaRoles(Long workArea, String roleName, Date asOfDate); 071 /** 072 * Fetch all Inactive Roles for a given work area 073 * @param workArea 074 * @return 075 */ 076 @Cacheable(value= TkRole.CACHE_NAME, key="'{getInActiveWorkAreaRoles}' + 'workArea=' + #p0") 077 public List<TkRole> getInActiveWorkAreaRoles(Long workArea); 078 /** 079 * Fetch all Inactive Roles for a given work area and role name as of a particular date 080 * @param workArea 081 * @param roleName 082 * @param asOfDate 083 * @return 084 */ 085 @Cacheable(value= TkRole.CACHE_NAME, key="'{getInActiveWorkAreaRoles}' + 'workArea=' + #p0 + '|' + 'roleName=' + #p1 + '|' + 'asOfDate=' + #p2") 086 public List<TkRole> getInActiveWorkAreaRoles(Long workArea, String roleName, Date asOfDate); 087 /** 088 * Fetch all Roles for a given Department and Role Name as of a particular date 089 * @param department 090 * @param roleName 091 * @param asOfDate 092 * @return 093 */ 094 @Cacheable(value= TkRole.CACHE_NAME, key="'department=' + #p0 + '|' + 'roleName=' + #p1 + '|' + 'asOfDate=' + #p2") 095 public List<TkRole> getDepartmentRoles(String department, String roleName, Date asOfDate); 096 097 /** 098 * Fetch all Inactive Roles for a given Department and Role Name as of a particular date 099 * @param department 100 * @param roleName 101 * @param asOfDate 102 * @return 103 */ 104 @Cacheable(value= TkRole.CACHE_NAME, key="'{getDepartmentInactiveRoles}' + 'department=' + #p0 + '|' + 'roleName=' + #p1 + '|' + 'asOfDate=' + #p2") 105 public List<TkRole> getDepartmentInactiveRoles(String department, String roleName, Date asOfDate); 106 /** 107 * Fetch all Roles for a given Department 108 * @param department 109 * @return 110 */ 111 @Cacheable(value= TkRole.CACHE_NAME, key="'department=' + #p0") 112 public List<TkRole> getDepartmentRoles(String department); 113 /** 114 * Fetch all Inactive Roles for a given Department 115 * @param department 116 * @return 117 */ 118 @Cacheable(value= TkRole.CACHE_NAME, key="'{getDepartmentInactiveRoles}' + 'department=' + #p0") 119 public List<TkRole> getDepartmentInactiveRoles(String department); 120 /** 121 * Save or Update a given TkRole 122 * @param role 123 */ 124 @CacheEvict(value={TkRole.CACHE_NAME, TkRoleGroup.CACHE_NAME}, allEntries = true) 125 public void saveOrUpdate(TkRole role); 126 /** 127 * Save or Update a List of TkRole objects 128 * @param roles 129 */ 130 @CacheEvict(value={TkRole.CACHE_NAME, TkRoleGroup.CACHE_NAME}, allEntries = true) 131 public void saveOrUpdate(List<TkRole> roles); 132 133 /** 134 * Gets the list of principal IDs responsible for the provided assignment / 135 * role name combination. 136 * 137 * @param assignment the assignment to query 138 * @param roleName The role we are interested in. 139 * @param asOfDate effective date 140 * @return 141 */ 142 public List<String> getResponsibleParties(Assignment assignment, String roleName, Date asOfDate); 143 144 /** 145 * Provides a unique set of work areas that this user is an approver for. 146 * @param principalId The principal to retrieve roles for. 147 * @param asOfDate effective date 148 * @return A Set of Long work area numbers. 149 */ 150 @Cacheable(value= TkRole.CACHE_NAME, key="'{getWorkAreasForApprover}' + 'principalId=' + #p0 + '|' + 'asOfDate=' + #p1") 151 public Set<Long> getWorkAreasForApprover(String principalId, Date asOfDate); 152 153 /** 154 * Provides a unique set of principal ids that have active assignments in the 155 * given work areas. 156 * @param workAreas A set of work area numbers. 157 * @param asOfDate effective date 158 * @return A Set of String principal IDs. 159 */ 160 public Set<String> getActivePrincipalsForWorkAreas(Set<Long> workAreas, Date asOfDate); 161 162 /** 163 * Fetches Role by primary key 164 */ 165 @Cacheable(value= TkRole.CACHE_NAME, key="'tkRoleId=' + #p0") 166 public TkRole getRole(String tkRoleId); 167 168 /** 169 * Fetches Role by position number 170 */ 171 @Cacheable(value= TkRole.CACHE_NAME, key="'positionNumber=' + #p0") 172 public TkRole getRolesByPosition(String positionNumber); 173 174 @Cacheable(value= TkRole.CACHE_NAME, key="'{getInactiveRolesByPosition}' + 'positionNumber=' + #p0") 175 public TkRole getInactiveRolesByPosition(String positionNumber); 176 177 @Cacheable(value= TkRole.CACHE_NAME, key="'{getPositionRolesForWorkArea}' + 'workArea=' + #p0 + '|' + 'asOfDate=' + #p1") 178 public List<TkRole> getPositionRolesForWorkArea(Long workArea, Date asOfDate); 179 180 @Cacheable(value= TkRole.CACHE_NAME, 181 key="'principalId=' + #p0" + 182 "+ '|' + 'asOfDate=' + #p1" + 183 "+ '|' + 'roleName=' + #p2" + 184 "+ '|' + 'workArea=' + #p3" + 185 "+ '|' + 'department=' + #p4") 186 List<TkRole> getRoles(String principalId, Date asOfDate, String roleName, Long workArea, String department); 187 }