001 /* 002 * Copyright 2011 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.kfs.coa.service.impl; 017 018 import java.util.Collections; 019 import java.util.HashMap; 020 import java.util.List; 021 022 import org.kuali.kfs.coa.identity.KfsKimDocumentAttributeData; 023 import org.kuali.kfs.coa.identity.OrgReviewRole; 024 import org.kuali.kfs.coa.service.OrgReviewRoleService; 025 import org.kuali.kfs.sys.identity.KfsKimAttributes; 026 import org.kuali.rice.kim.bo.Role; 027 import org.kuali.rice.kim.bo.role.dto.DelegateMemberCompleteInfo; 028 import org.kuali.rice.kim.bo.role.dto.DelegateTypeInfo; 029 import org.kuali.rice.kim.bo.role.dto.KimRoleInfo; 030 import org.kuali.rice.kim.bo.role.dto.RoleMemberCompleteInfo; 031 import org.kuali.rice.kim.bo.role.dto.RoleResponsibilityActionInfo; 032 import org.kuali.rice.kim.bo.types.dto.KimTypeInfo; 033 import org.kuali.rice.kim.service.KIMServiceLocator; 034 import org.kuali.rice.kim.service.RoleManagementService; 035 import org.kuali.rice.kim.util.KimConstants; 036 037 public class OrgReviewRoleServiceImpl implements OrgReviewRoleService { 038 039 public void populateOrgReviewRoleFromRoleMember(OrgReviewRole orr, String roleMemberId) { 040 List<RoleMemberCompleteInfo> roleMembers = (List<RoleMemberCompleteInfo>)KIMServiceLocator.getRoleManagementService().findRoleMembersCompleteInfo(Collections.singletonMap(KimConstants.PrimaryKeyConstants.ROLE_MEMBER_ID, roleMemberId)); 041 RoleMemberCompleteInfo roleMember = new RoleMemberCompleteInfo(); 042 if(roleMembers!=null && roleMembers.size()>0){ 043 roleMember = roleMembers.get(0); 044 } 045 orr.setRoleMemberId(roleMember.getRoleMemberId()); 046 orr.setKimDocumentRoleMember(roleMember); 047 048 KimRoleInfo roleInfo = KIMServiceLocator.getRoleManagementService().getRole(roleMember.getRoleId()); 049 KimTypeInfo typeInfo = KIMServiceLocator.getTypeInfoService().getKimType(roleInfo.getKimTypeId()); 050 List<KfsKimDocumentAttributeData> attributes = orr.getAttributeSetAsQualifierList(typeInfo, roleMember.getQualifier()); 051 orr.setAttributes(attributes); 052 orr.setRoleRspActions(getRoleRspActions(roleMember.getRoleMemberId())); 053 orr.setRoleId(roleMember.getRoleId()); 054 orr.setActiveFromDate(roleMember.getActiveFromDate()); 055 orr.setActiveToDate(roleMember.getActiveToDate()); 056 populateObjectExtras(orr); 057 } 058 059 public void populateOrgReviewRoleFromDelegationMember(OrgReviewRole orr, String delegationMemberId) { 060 DelegateMemberCompleteInfo delegationMember = KIMServiceLocator.getRoleManagementService().getDelegationMemberById(delegationMemberId); 061 DelegateTypeInfo delegation = KIMServiceLocator.getRoleManagementService().getDelegateTypeInfoById(delegationMember.getDelegationId()); 062 KimRoleInfo roleInfo = KIMServiceLocator.getRoleManagementService().getRole(delegation.getRoleId()); 063 KimTypeInfo typeInfo = KIMServiceLocator.getTypeInfoService().getKimType(roleInfo.getKimTypeId()); 064 orr.setDelegationMemberId(delegationMember.getDelegationMemberId()); 065 orr.setRoleMemberId(delegationMember.getRoleMemberId()); 066 orr.setRoleRspActions(getRoleRspActions(delegationMember.getRoleMemberId())); 067 orr.setAttributes(orr.getAttributeSetAsQualifierList(typeInfo, delegationMember.getQualifier())); 068 orr.setRoleId(delegation.getRoleId()); 069 orr.setDelegationTypeCode(delegationMember.getDelegationTypeCode()); 070 orr.setRoleDocumentDelegationMember(delegationMember); 071 populateObjectExtras(orr); 072 } 073 074 protected void populateObjectExtras( OrgReviewRole orr ) { 075 Role role = orr.getRole(orr.getRoleId()); 076 //Set the role details 077 orr.setRoleName(role.getRoleName()); 078 orr.setNamespaceCode(role.getNamespaceCode()); 079 080 orr.setChartOfAccountsCode(orr.getAttributeValue(KfsKimAttributes.CHART_OF_ACCOUNTS_CODE)); 081 orr.setOrganizationCode(orr.getAttributeValue(KfsKimAttributes.ORGANIZATION_CODE)); 082 orr.setOverrideCode(orr.getAttributeValue(KfsKimAttributes.ACCOUNTING_LINE_OVERRIDE_CODE)); 083 orr.setFromAmount(orr.getAttributeValue(KfsKimAttributes.FROM_AMOUNT)); 084 orr.setToAmount(orr.getAttributeValue(KfsKimAttributes.TO_AMOUNT)); 085 orr.setFinancialSystemDocumentTypeCode(orr.getAttributeValue(KfsKimAttributes.DOCUMENT_TYPE_NAME)); 086 087 orr.getChart().setChartOfAccountsCode(orr.getChartOfAccountsCode()); 088 orr.getOrganization().setOrganizationCode(orr.getOrganizationCode()); 089 090 if(orr.getRoleRspActions()!=null && orr.getRoleRspActions().size()>0){ 091 orr.setActionTypeCode(orr.getRoleRspActions().get(0).getActionTypeCode()); 092 orr.setPriorityNumber(orr.getRoleRspActions().get(0).getPriorityNumber()==null?"":orr.getRoleRspActions().get(0).getPriorityNumber()+""); 093 orr.setActionPolicyCode(orr.getRoleRspActions().get(0).getActionPolicyCode()); 094 orr.setForceAction(orr.getRoleRspActions().get(0).isForceAction()); 095 } 096 if(orr.getPerson()!=null){ 097 orr.setPrincipalMemberPrincipalId(orr.getPerson().getPrincipalId()); 098 orr.setPrincipalMemberPrincipalName(orr.getPerson().getPrincipalName()); 099 } 100 if(orr.getRole()!=null){ 101 orr.setRoleMemberRoleId(orr.getRole().getRoleId()); 102 orr.setRoleMemberRoleNamespaceCode(orr.getRole().getNamespaceCode()); 103 orr.setRoleMemberRoleName(orr.getRole().getRoleName()); 104 } 105 if(orr.getGroup()!=null){ 106 orr.setGroupMemberGroupId(orr.getGroup().getGroupId()); 107 orr.setGroupMemberGroupNamespaceCode(orr.getGroup().getNamespaceCode()); 108 orr.setGroupMemberGroupName(orr.getGroup().getGroupName()); 109 } 110 } 111 112 protected List<RoleResponsibilityActionInfo> getRoleRspActions(String roleMemberId){ 113 return KIMServiceLocator.getRoleManagementService().getRoleMemberResponsibilityActionInfo(roleMemberId); 114 } 115 116 }