1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.document;
17
18 import java.util.Collections;
19 import java.util.List;
20 import java.util.Map;
21
22 import org.kuali.rice.core.api.exception.RiceRuntimeException;
23 import org.kuali.rice.kew.api.KEWPropertyConstants;
24 import org.kuali.rice.kew.rule.RuleBaseValues;
25 import org.kuali.rice.kew.rule.RuleResponsibilityBo;
26 import org.kuali.rice.kew.rule.bo.RuleTemplateBo;
27 import org.kuali.rice.kew.rule.web.WebRuleUtils;
28 import org.kuali.rice.kew.service.KEWServiceLocator;
29 import org.kuali.rice.kns.document.MaintenanceDocument;
30 import org.kuali.rice.kns.maintenance.KualiMaintainableImpl;
31 import org.kuali.rice.kns.maintenance.Maintainable;
32 import org.kuali.rice.kns.web.ui.Section;
33 import org.kuali.rice.krad.bo.PersistableBusinessObject;
34 import org.kuali.rice.krad.data.KradDataServiceLocator;
35 import org.kuali.rice.krad.maintenance.MaintenanceLock;
36 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
37
38
39
40
41
42
43
44
45 public class RoutingRuleMaintainable extends KualiMaintainableImpl {
46
47 private static final long serialVersionUID = -5920808902137192662L;
48
49
50
51
52
53 @Override
54 public List getSections(MaintenanceDocument document, Maintainable oldMaintainable) {
55
56
57 if ( getNewRule(document) != null ) {
58 getNewRule(document).setRuleTemplate( getDataObjectService().find(RuleTemplateBo.class, getNewRule(document).getRuleTemplateId() ) );
59 }
60
61 if ( getOldRule(document) != null ) {
62 getOldRule(document).setRuleTemplate( getDataObjectService().find(RuleTemplateBo.class, getOldRule(document).getRuleTemplateId() ) );
63 }
64
65 List<Section> sections = super.getSections(document, oldMaintainable);
66 return WebRuleUtils.customizeSections(getThisRule(), sections, false);
67 }
68
69
70
71
72 @Override
73 public void processAfterNew(MaintenanceDocument document,
74 Map<String, String[]> parameters) {
75 WebRuleUtils.validateRuleTemplateAndDocumentType(getOldRule(document), getNewRule(document), parameters);
76 WebRuleUtils.establishDefaultRuleValues(getNewRule(document));
77 getNewRule(document).setDocumentId(document.getDocumentHeader().getDocumentNumber());
78 }
79
80
81
82
83
84
85
86 @Override
87 public void setGenerateBlankRequiredValues(String docTypeName) {
88
89 }
90
91
92
93
94 @Override
95 public void saveBusinessObject() {
96 WebRuleUtils.clearKeysForSave(getThisRule());
97 WebRuleUtils.translateResponsibilitiesForSave(getThisRule());
98 WebRuleUtils.translateFieldValuesForSave(getThisRule());
99 KEWServiceLocator.getRuleService().makeCurrent(getThisRule(), true);
100 }
101
102 @Override
103 public void processAfterCopy(MaintenanceDocument document, Map<String, String[]> parameters) {
104 WebRuleUtils.processRuleForCopy(document.getDocumentNumber(), getOldRule(document), getNewRule(document));
105 super.processAfterCopy(document, parameters);
106 }
107
108 @Override
109 public void processAfterEdit(MaintenanceDocument document,
110 Map<String, String[]> parameters) {
111 if (!getOldRule(document).getCurrentInd()) {
112 throw new RiceRuntimeException("Cannot edit a non-current version of a rule.");
113 }
114 WebRuleUtils.populateForCopyOrEdit(getOldRule(document), getNewRule(document));
115
116 getNewRule(document).setPreviousRuleId(getOldRule(document).getId());
117
118 getNewRule(document).setDocumentId(document.getDocumentHeader().getDocumentNumber());
119 super.processAfterEdit(document, parameters);
120 }
121
122
123
124
125 protected RuleBaseValues getNewRule(MaintenanceDocument document) {
126 return (RuleBaseValues)document.getNewMaintainableObject().getBusinessObject();
127 }
128
129
130
131
132 protected RuleBaseValues getOldRule(MaintenanceDocument document) {
133 return (RuleBaseValues)document.getOldMaintainableObject().getBusinessObject();
134 }
135
136
137
138
139 protected RuleBaseValues getThisRule() {
140 return (RuleBaseValues)getBusinessObject();
141 }
142
143
144
145
146
147
148
149
150
151
152
153 @Override
154 public List<MaintenanceLock> generateMaintenanceLocks() {
155 if (getThisRule().getPreviousRuleId() == null) {
156 return Collections.emptyList();
157 }
158 return super.generateMaintenanceLocks();
159 }
160
161 @Override
162 public String getDocumentTitle(MaintenanceDocument document) {
163 StringBuffer title = new StringBuffer();
164 RuleBaseValues rule = getThisRule();
165 if (rule.getPreviousRuleId() != null) {
166 title.append("Editing Rule '").append(rule.getDescription()).append("'");
167 } else {
168 title.append("Adding Rule '").append(rule.getDescription()).append("'");
169 }
170 return title.toString();
171 }
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187 @Override
188 protected void setNewCollectionLineDefaultValues(String collectionName,
189 PersistableBusinessObject addLine) {
190 super.setNewCollectionLineDefaultValues(collectionName, addLine);
191 if (KEWPropertyConstants.RESP_SECTION_NAME_SET.contains(collectionName)) {
192 RuleTemplateBo ruleTemplate = getThisRule().getRuleTemplate();
193 if(ruleTemplate.getDefaultActionRequestValue() != null && ruleTemplate.getDefaultActionRequestValue().getValue() != null){
194 ((RuleResponsibilityBo) addLine).setActionRequestedCd(ruleTemplate.getDefaultActionRequestValue().getValue());
195 }
196 }
197 }
198
199 }