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 }