1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krms.impl.repository;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.core.api.uif.RemotableAttributeField;
20 import org.kuali.rice.kns.inquiry.KualiInquirableImpl;
21 import org.kuali.rice.krad.uif.container.Container;
22 import org.kuali.rice.krad.uif.view.View;
23 import org.kuali.rice.krad.web.form.InquiryForm;
24 import org.kuali.rice.krms.api.repository.type.KrmsTypeDefinition;
25 import org.kuali.rice.krms.framework.type.ActionTypeService;
26 import org.kuali.rice.krms.framework.type.AgendaTypeService;
27 import org.kuali.rice.krms.framework.type.RuleTypeService;
28 import org.kuali.rice.krms.impl.type.ActionTypeServiceBase;
29 import org.kuali.rice.krms.impl.type.AgendaTypeServiceBase;
30 import org.kuali.rice.krms.impl.type.RuleTypeServiceBase;
31 import org.kuali.rice.krms.impl.ui.AgendaEditor;
32
33 import java.util.ArrayList;
34 import java.util.List;
35 import java.util.Map;
36
37 public class AgendaInquiryHelperServiceImpl extends KualiInquirableImpl {
38
39 @Override
40 public AgendaEditor retrieveDataObject(Map fieldValues) {
41 AgendaEditor agendaEditor = null;
42
43 String agendaId = (String) fieldValues.get("id");
44 AgendaBo agenda = getBusinessObjectService().findBySinglePrimaryKey(AgendaBo.class, agendaId);
45 if (agenda != null) {
46 agendaEditor = new AgendaEditor();
47 agendaEditor.setAgenda(agenda);
48 agendaEditor.setNamespace(agenda.getContext().getNamespace());
49 agendaEditor.setContextName(agenda.getContext().getName());
50 agendaEditor.setCustomAttributesMap(agenda.getAttributes());
51 }
52
53 return agendaEditor;
54 }
55
56 public List<RemotableAttributeField> retrieveCustomAttributes(View view, Object model, Container container) {
57 List<RemotableAttributeField> results = new ArrayList<RemotableAttributeField>();
58
59 InquiryForm inquiryForm = (InquiryForm)model;
60 AgendaEditor agendaEditor = (AgendaEditor)inquiryForm.getDataObject();
61
62
63 if (agendaEditor.getAgenda() != null && !StringUtils.isBlank(agendaEditor.getAgenda().getTypeId())) {
64
65 String krmsTypeId = agendaEditor.getAgenda().getTypeId();
66
67 AgendaTypeService agendaTypeService = getAgendaTypeService(krmsTypeId);
68 results.addAll(agendaTypeService.getAttributeFields(krmsTypeId));
69 }
70
71 return results;
72 }
73
74 private AgendaTypeService getAgendaTypeService(String krmsTypeId) {
75
76
77
78
79 KrmsTypeDefinition krmsType =
80 KrmsRepositoryServiceLocator.getKrmsTypeRepositoryService().
81 getTypeById(krmsTypeId);
82
83 AgendaTypeService agendaTypeService = null;
84
85 if (!StringUtils.isBlank(krmsTypeId)) {
86 String serviceName = krmsType.getServiceName();
87
88 if (!StringUtils.isBlank(serviceName)) {
89 agendaTypeService = KrmsRepositoryServiceLocator.getService(serviceName);
90 }
91 }
92
93 if (agendaTypeService == null) { agendaTypeService = AgendaTypeServiceBase.defaultAgendaTypeService; }
94
95 return agendaTypeService;
96 }
97
98
99
100
101 public List<RemotableAttributeField> retrieveRuleActionCustomAttributes(View view, Object model, Container container) {
102 List<RemotableAttributeField> results = new ArrayList<RemotableAttributeField>();
103
104 InquiryForm inquiryForm = (InquiryForm)model;
105 AgendaEditor agendaEditor = (AgendaEditor)inquiryForm.getDataObject();
106
107
108 if (!StringUtils.isBlank(agendaEditor.getAgendaItemLineRuleAction().getTypeId())) {
109 ActionTypeService actionTypeService = getActionTypeService(agendaEditor.getAgendaItemLineRuleAction().getTypeId());
110 results.addAll(actionTypeService.getAttributeFields(agendaEditor.getAgendaItemLineRuleAction().getTypeId()));
111 }
112
113 return results;
114 }
115
116 public List<RemotableAttributeField> retrieveRuleCustomAttributes(View view, Object model, Container container) {
117 List<RemotableAttributeField> results = new ArrayList<RemotableAttributeField>();
118
119 InquiryForm inquiryForm = (InquiryForm)model;
120 AgendaEditor agendaEditor = (AgendaEditor)inquiryForm.getDataObject();
121
122
123 if (agendaEditor.getAgendaItemLine() != null && agendaEditor.getAgendaItemLine().getRule() != null
124 && !StringUtils.isBlank(agendaEditor.getAgendaItemLine().getRule().getTypeId())) {
125
126 String krmsTypeId = agendaEditor.getAgendaItemLine().getRule().getTypeId();
127
128 RuleTypeService ruleTypeService = getRuleTypeService(krmsTypeId);
129 results.addAll(ruleTypeService.getAttributeFields(krmsTypeId));
130 }
131
132 return results;
133 }
134
135 private ActionTypeService getActionTypeService(String krmsTypeId) {
136
137
138
139
140 KrmsTypeDefinition krmsType =
141 KrmsRepositoryServiceLocator.getKrmsTypeRepositoryService().
142 getTypeById(krmsTypeId);
143
144 ActionTypeService actionTypeService = null;
145
146 if (!StringUtils.isBlank(krmsTypeId)) {
147 String serviceName = krmsType.getServiceName();
148
149 if (!StringUtils.isBlank(serviceName)) {
150 actionTypeService = KrmsRepositoryServiceLocator.getService(serviceName);
151 }
152 }
153 if (actionTypeService == null) {
154 actionTypeService = ActionTypeServiceBase.defaultActionTypeService;
155 }
156
157
158
159 return actionTypeService;
160 }
161
162 private RuleTypeService getRuleTypeService(String krmsTypeId) {
163 RuleTypeService ruleTypeService = null;
164 String serviceName = getRuleTypeServiceName(krmsTypeId);
165
166 if (!StringUtils.isBlank(serviceName)) {
167 ruleTypeService = KrmsRepositoryServiceLocator.getService(serviceName);
168 }
169 if (ruleTypeService == null) {
170 ruleTypeService = RuleTypeServiceBase.defaultRuleTypeService;
171 }
172 return ruleTypeService;
173 }
174
175 private String getRuleTypeServiceName(String krmsTypeId) {
176 String serviceName = null;
177 KrmsTypeDefinition krmsType =
178 KrmsRepositoryServiceLocator.getKrmsTypeRepositoryService().
179 getTypeById(krmsTypeId);
180
181 if (!StringUtils.isBlank(krmsTypeId)) {
182 serviceName = krmsType.getServiceName();
183 }
184 return serviceName;
185 }
186
187 }