1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.coa.document;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.apache.commons.lang.StringUtils;
25 import org.kuali.kfs.coa.businessobject.Chart;
26 import org.kuali.kfs.coa.service.ChartService;
27 import org.kuali.kfs.sys.KFSConstants;
28 import org.kuali.kfs.sys.context.SpringContext;
29 import org.kuali.kfs.sys.document.FinancialSystemMaintainable;
30 import org.kuali.kfs.sys.identity.KfsKimAttributes;
31 import org.kuali.rice.kim.api.identity.Person;
32 import org.kuali.rice.kim.api.role.RoleService;
33 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
34 import org.kuali.rice.krad.bo.DocumentHeader;
35
36
37
38
39 public class ChartMaintainableImpl extends FinancialSystemMaintainable {
40
41
42
43
44
45
46 @Override
47 public void doRouteStatusChange(DocumentHeader documentHeader) {
48 if (documentHeader.getWorkflowDocument().isProcessed()) {
49 Chart chart = (Chart) getBusinessObject();
50 Person oldChartManager = SpringContext.getBean(ChartService.class).getChartManager(chart.getChartOfAccountsCode());
51
52
53 if ( oldChartManager == null || !StringUtils.equals(chart.getFinCoaManagerPrincipalId(), oldChartManager.getPrincipalId() ) ) {
54 RoleService roleService = KimApiServiceLocator.getRoleService();
55
56 Map<String,String> qualification = new HashMap<String,String>(1);
57 qualification.put(KfsKimAttributes.CHART_OF_ACCOUNTS_CODE, chart.getChartOfAccountsCode());
58
59 if (oldChartManager != null) {
60 roleService.removePrincipalFromRole(oldChartManager.getPrincipalId(), KFSConstants.ParameterNamespaces.KFS, KFSConstants.SysKimApiConstants.CHART_MANAGER_KIM_ROLE_NAME, qualification);
61 }
62
63 if (StringUtils.isNotBlank(chart.getFinCoaManagerPrincipalId())) {
64 roleService.assignPrincipalToRole(chart.getFinCoaManagerPrincipalId(), KFSConstants.ParameterNamespaces.KFS, KFSConstants.SysKimApiConstants.CHART_MANAGER_KIM_ROLE_NAME, qualification);
65 }
66 }
67 }
68
69 super.doRouteStatusChange(documentHeader);
70 }
71
72 }