1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kim.inquiry;
17
18 import org.kuali.rice.coreservice.impl.namespace.NamespaceBo;
19 import org.kuali.rice.kim.api.KimConstants;
20 import org.kuali.rice.kim.impl.role.RoleBo;
21 import org.kuali.rice.kim.impl.type.KimTypeBo;
22 import org.kuali.rice.kim.lookup.RoleLookupableHelperServiceImpl;
23 import org.kuali.rice.kns.inquiry.KualiInquirableImpl;
24 import org.kuali.rice.kns.lookup.HtmlData;
25 import org.kuali.rice.krad.bo.BusinessObject;
26 import org.kuali.rice.krad.uif.widget.Inquiry;
27 import org.kuali.rice.krad.util.ObjectUtils;
28
29 import java.util.ArrayList;
30 import java.util.Collections;
31 import java.util.HashMap;
32 import java.util.List;
33 import java.util.Map;
34
35
36
37
38
39
40
41 public class RoleInquirableImpl extends KualiInquirableImpl {
42
43 protected final String ROLE_NAME = "name";
44 protected final String ROLE_ID = "id";
45 protected final String NAMESPACE_CODE = "namespaceCode";
46
47 @Override
48 public void buildInquirableLink(Object dataObject, String propertyName, Inquiry inquiry){
49 if(ROLE_NAME.equals(propertyName)){
50 Map<String, String> primaryKeys = new HashMap<String, String>();
51 primaryKeys.put(ROLE_ID, ROLE_ID);
52 inquiry.buildInquiryLink(dataObject, propertyName, RoleBo.class, primaryKeys);
53 }else if(NAMESPACE_CODE.equals(propertyName)){
54 Map<String, String> primaryKeys = new HashMap<String, String>();
55 primaryKeys.put(propertyName, "code");
56 inquiry.buildInquiryLink(dataObject, propertyName, NamespaceBo.class, primaryKeys);
57 } else if("kimRoleType.name".equals(propertyName)){
58 Map<String, String> primaryKeys = new HashMap<String, String>();
59 primaryKeys.put("kimRoleType.id", KimConstants.PrimaryKeyConstants.KIM_TYPE_ID);
60 inquiry.buildInquiryLink(dataObject, propertyName, KimTypeBo.class, primaryKeys);
61 }else{
62 super.buildInquirableLink(dataObject, propertyName, inquiry);
63 }
64 }
65
66 @Override
67 public HtmlData getInquiryUrl(BusinessObject businessObject, String attributeName, boolean forceInquiry) {
68 if(ROLE_NAME.equals(attributeName)){
69 List<String> primaryKeys = new ArrayList<String>();
70 primaryKeys.add(ROLE_ID);
71
72 String href = (getInquiryUrlForPrimaryKeys(RoleBo.class, businessObject, primaryKeys, null)).getHref();
73 HtmlData.AnchorHtmlData htmlData = new HtmlData.AnchorHtmlData();
74 htmlData.setHref(RoleLookupableHelperServiceImpl.getCustomRoleInquiryHref(href));
75 return htmlData;
76 } else if(NAMESPACE_CODE.equals(attributeName)){
77 List<String> primaryKeys = new ArrayList<String>();
78 primaryKeys.add("code");
79 NamespaceBo parameterNamespace = new NamespaceBo();
80 parameterNamespace.setCode((String)ObjectUtils.getPropertyValue(businessObject, attributeName));
81 return getInquiryUrlForPrimaryKeys(NamespaceBo.class, parameterNamespace, primaryKeys, null);
82 } else if("kimRoleType.name".equals(attributeName)){
83 KimTypeBo kimType = new KimTypeBo();
84 kimType.setId( ((RoleBo)businessObject).getKimTypeId() );
85 return getInquiryUrlForPrimaryKeys(KimTypeBo.class, kimType, Collections.singletonList( KimConstants.PrimaryKeyConstants.KIM_TYPE_ID ), null);
86 }
87
88 return super.getInquiryUrl(businessObject, attributeName, forceInquiry);
89 }
90
91 }