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    }