1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kim.document;
17
18 import org.apache.cxf.common.util.StringUtils;
19 import org.apache.log4j.Logger;
20 import org.kuali.rice.kim.api.permission.Permission;
21 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
22 import org.kuali.rice.kim.impl.permission.GenericPermissionBo;
23 import org.kuali.rice.kim.impl.permission.PermissionBo;
24 import org.kuali.rice.kim.impl.permission.PermissionTemplateBo;
25 import org.kuali.rice.kim.impl.responsibility.ReviewResponsibilityBo;
26 import org.kuali.rice.kns.maintenance.KualiMaintainableImpl;
27 import org.kuali.rice.krad.bo.BusinessObject;
28 import org.kuali.rice.krad.bo.PersistableBusinessObject;
29 import org.kuali.rice.krad.util.KRADConstants;
30
31 import java.util.HashMap;
32
33
34
35
36
37
38
39 public class GenericPermissionMaintainable extends KualiMaintainableImpl {
40
41 private static final Logger LOG = Logger.getLogger( GenericPermissionMaintainable.class );
42 private static final long serialVersionUID = -8102504656976243468L;
43
44
45
46
47
48
49 @Override
50 public void saveBusinessObject() {
51 try {
52 if ( LOG.isInfoEnabled() ) {
53 LOG.info( "Attempting to save Permission BO via PermissionService: " + getBusinessObject() );
54 }
55 GenericPermissionBo genericPermissionBo = (GenericPermissionBo)getBusinessObject();
56 if (genericPermissionBo.getTemplateId() != null && genericPermissionBo.getTemplate() == null) {
57 genericPermissionBo.setTemplate(
58 PermissionTemplateBo.from(
59 KimApiServiceLocator.getPermissionService().getPermissionTemplate(genericPermissionBo.getTemplateId())));
60 }
61 PermissionBo perm = GenericPermissionBo.toPermissionBo(genericPermissionBo);
62
63 KimApiServiceLocator.getPermissionService().createPermission(PermissionBo.to(perm));
64 } catch ( RuntimeException ex ) {
65 LOG.error( "Exception in saveBusinessObject()", ex );
66 throw ex;
67 }
68 }
69
70
71
72
73 @Override
74 public void saveDataObject() {
75 if (getDataObject() instanceof PersistableBusinessObject) {
76 GenericPermissionBo genericPermissionBo = (GenericPermissionBo)getDataObject();
77 boolean permissionExists = false;
78 if (genericPermissionBo.getId() != null) {
79 permissionExists = KimApiServiceLocator.getPermissionService().getPermission(genericPermissionBo.getId()) != null;
80 }
81
82 if (genericPermissionBo.getTemplateId() != null) {
83 genericPermissionBo.setTemplate(
84 PermissionTemplateBo.from(
85 KimApiServiceLocator.getPermissionService().getPermissionTemplate(genericPermissionBo.getTemplateId())));
86 }
87 PermissionBo perm = GenericPermissionBo.toPermissionBo(genericPermissionBo);
88 if (permissionExists) {
89 KimApiServiceLocator.getPermissionService().updatePermission(PermissionBo.to(perm));
90 } else {
91
92 if(getMaintenanceAction().equals(KRADConstants.MAINTENANCE_COPY_ACTION)){
93 if(org.apache.commons.lang.StringUtils.isNotBlank(perm.getObjectId())){
94 perm.setObjectId("");
95 }
96 if(null!= perm.getVersionNumber()){
97 perm.setVersionNumber(null);
98 }
99 }
100 KimApiServiceLocator.getPermissionService().createPermission(PermissionBo.to(perm));
101 }
102
103 } else {
104 throw new RuntimeException(
105 "Cannot save object of type: " + getDataObjectClass() + " with permission service");
106 }
107 }
108
109
110
111
112
113
114 @Override
115 public Class<? extends PersistableBusinessObject> getBoClass() {
116 return GenericPermissionBo.class;
117 }
118
119
120
121
122
123
124 @Override
125 public boolean isExternalBusinessObject() {
126 return true;
127 }
128
129
130
131
132
133
134 @Override
135 public void prepareBusinessObject(BusinessObject businessObject) {
136 try {
137 if ( businessObject == null ) {
138 throw new RuntimeException( "Configuration ERROR: GenericPermissionMaintainable.prepareBusinessObject passed a null object." );
139 }
140 if ( businessObject instanceof PermissionBo ) {
141 PermissionBo perm = getBusinessObjectService().findBySinglePrimaryKey(PermissionBo.class, ((PermissionBo)businessObject).getId() );
142 businessObject = new GenericPermissionBo(perm);
143 } else if ( businessObject instanceof GenericPermissionBo ) {
144
145 PermissionBo perm = getBusinessObjectService().findBySinglePrimaryKey(PermissionBo.class, ((GenericPermissionBo)businessObject).getId() );
146 ((GenericPermissionBo)businessObject).loadFromPermission(perm);
147 } else {
148 throw new RuntimeException( "Configuration ERROR: GenericPermissionMaintainable passed an unsupported object type: " + businessObject.getClass() );
149 }
150 if ( businessObject instanceof PersistableBusinessObject ) {
151 setBusinessObject( (PersistableBusinessObject)businessObject );
152 }
153 super.prepareBusinessObject(businessObject);
154 } catch ( RuntimeException ex ) {
155 LOG.error( "Exception in prepareBusinessObject()", ex );
156 throw ex;
157 }
158 }
159
160 }