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