1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kns.datadictionary;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.krad.bo.BusinessObject;
20 import org.kuali.rice.krad.datadictionary.DataDictionary;
21 import org.kuali.rice.krad.datadictionary.exception.AttributeValidationException;
22 import org.kuali.rice.krad.datadictionary.exception.DuplicateEntryException;
23
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 @Deprecated
53 public class MaintainableCollectionDefinition extends MaintainableItemDefinition implements CollectionDefinitionI {
54 private static final long serialVersionUID = -5617868782623587053L;
55
56
57
58
59 protected Class<? extends BusinessObject> businessObjectClass;
60
61 protected Class<? extends BusinessObject> sourceClassName;
62 protected String summaryTitle;
63 protected String attributeToHighlightOnDuplicateKey;
64
65 protected boolean includeAddLine = true;
66 protected boolean includeMultipleLookupLine = true;
67 private boolean alwaysAllowCollectionDeletion = false;
68
69 protected Map<String,MaintainableFieldDefinition> maintainableFieldMap = new HashMap<String, MaintainableFieldDefinition>();
70 protected Map<String,MaintainableCollectionDefinition> maintainableCollectionMap = new HashMap<String, MaintainableCollectionDefinition>();
71 protected Map<String,MaintainableFieldDefinition> summaryFieldMap = new HashMap<String, MaintainableFieldDefinition>();
72 protected Map<String,MaintainableFieldDefinition> duplicateIdentificationFieldMap = new HashMap<String, MaintainableFieldDefinition>();
73 protected List<MaintainableFieldDefinition> maintainableFields = new ArrayList<MaintainableFieldDefinition>();
74 protected List<MaintainableCollectionDefinition> maintainableCollections = new ArrayList<MaintainableCollectionDefinition>();
75 protected List<MaintainableFieldDefinition> summaryFields = new ArrayList<MaintainableFieldDefinition>();
76 protected List<MaintainableFieldDefinition> duplicateIdentificationFields = new ArrayList<MaintainableFieldDefinition>();
77
78 public MaintainableCollectionDefinition() {}
79
80
81
82
83
84
85 public Class<? extends BusinessObject> getBusinessObjectClass() {
86 return businessObjectClass;
87 }
88
89
90
91
92 public void setBusinessObjectClass(Class<? extends BusinessObject> businessObjectClass) {
93 if (businessObjectClass == null) {
94 throw new IllegalArgumentException("invalid (null) dataObjectClass");
95 }
96
97 this.businessObjectClass = businessObjectClass;
98 }
99
100
101
102
103
104 public List<MaintainableFieldDefinition> getMaintainableFields() {
105 return maintainableFields;
106 }
107
108 public List<? extends FieldDefinitionI> getFields() {
109 return maintainableFields;
110 }
111
112
113
114
115
116
117 public void completeValidation(Class rootBusinessObjectClass, Class otherBusinessObjectClass) {
118 if (!DataDictionary.isCollectionPropertyOf(rootBusinessObjectClass, getName())) {
119 throw new AttributeValidationException("unable to find collection named '" + getName() + "' in rootBusinessObjectClass '" + rootBusinessObjectClass.getName() + "' (" + "" + ")");
120 }
121
122 if (dissallowDuplicateKey()) {
123 if (!DataDictionary.isPropertyOf(businessObjectClass, attributeToHighlightOnDuplicateKey)) {
124 throw new AttributeValidationException("unable to find attribute named '" + attributeToHighlightOnDuplicateKey + "'in dataObjectClass '" + businessObjectClass.getName() + "' of collection '" + getName() + "' in rootBusinessObjectClass '" + rootBusinessObjectClass.getName() + "' (" + "" + ")");
125 }
126 }
127
128 for (MaintainableFieldDefinition maintainableField : maintainableFields ) {
129 maintainableField.completeValidation(businessObjectClass, null);
130 }
131
132 for (MaintainableCollectionDefinition maintainableCollection : maintainableCollections ) {
133 maintainableCollection.completeValidation(businessObjectClass, null);
134 }
135
136
137
138
139
140
141
142
143 }
144
145
146
147
148
149 public String toString() {
150 return "MaintainableCollectionDefinition for " + getName();
151 }
152
153
154 public Class<? extends BusinessObject> getSourceClassName() {
155 return sourceClassName;
156 }
157
158
159
160
161 public void setSourceClassName(Class<? extends BusinessObject> sourceClass) {
162 this.sourceClassName = sourceClass;
163 }
164
165 public boolean getIncludeAddLine() {
166 return includeAddLine;
167 }
168
169
170
171 public void setIncludeAddLine(boolean includeAddLine) {
172 this.includeAddLine = includeAddLine;
173 }
174
175
176
177
178
179 public List<MaintainableCollectionDefinition> getMaintainableCollections() {
180 return maintainableCollections;
181 }
182
183 public List<? extends CollectionDefinitionI> getCollections() {
184 return maintainableCollections;
185 }
186
187
188
189
190
191
192 public List<? extends FieldDefinitionI> getSummaryFields() {
193 return summaryFields;
194 }
195
196 public boolean hasSummaryField(String key) {
197 return summaryFieldMap.containsKey(key);
198 }
199
200 public boolean isIncludeMultipleLookupLine() {
201 return includeMultipleLookupLine;
202 }
203
204
205 public void setIncludeMultipleLookupLine(boolean includeMultipleLookupLine) {
206 this.includeMultipleLookupLine = includeMultipleLookupLine;
207 }
208
209 public String getSummaryTitle() {
210 return summaryTitle;
211 }
212
213
214
215
216 public void setSummaryTitle(String overrideSummaryName) {
217 this.summaryTitle = overrideSummaryName;
218 }
219
220
221 public String getAttributeToHighlightOnDuplicateKey() {
222 return attributeToHighlightOnDuplicateKey;
223 }
224
225
226
227
228
229
230 public void setAttributeToHighlightOnDuplicateKey(String attributeToHighlightOnDuplicate) {
231 this.attributeToHighlightOnDuplicateKey = attributeToHighlightOnDuplicate;
232 }
233
234 public boolean dissallowDuplicateKey() {
235 return StringUtils.isNotBlank(getAttributeToHighlightOnDuplicateKey());
236 }
237
238 public List<MaintainableFieldDefinition> getDuplicateIdentificationFields() {
239 return duplicateIdentificationFields;
240 }
241
242
243 public void setMaintainableFields(List<MaintainableFieldDefinition> maintainableFields) {
244 maintainableFieldMap.clear();
245 for ( MaintainableFieldDefinition maintainableField : maintainableFields ) {
246 if (maintainableField == null) {
247 throw new IllegalArgumentException("invalid (null) maintainableField");
248 }
249
250 String fieldName = maintainableField.getName();
251 if (maintainableFieldMap.containsKey(fieldName)) {
252 throw new DuplicateEntryException("duplicate fieldName entry for field '" + fieldName + "'");
253 }
254
255 maintainableFieldMap.put(fieldName, maintainableField);
256 }
257 this.maintainableFields = maintainableFields;
258 }
259
260
261 public void setMaintainableCollections(List<MaintainableCollectionDefinition> maintainableCollections) {
262 maintainableCollectionMap.clear();
263 for (MaintainableCollectionDefinition maintainableCollection : maintainableCollections ) {
264 if (maintainableCollection == null) {
265 throw new IllegalArgumentException("invalid (null) maintainableCollection");
266 }
267
268 String fieldName = maintainableCollection.getName();
269 if (maintainableCollectionMap.containsKey(fieldName)) {
270 throw new DuplicateEntryException("duplicate fieldName entry for field '" + fieldName + "'");
271 }
272
273 maintainableCollectionMap.put(fieldName, maintainableCollection);
274 }
275 this.maintainableCollections = maintainableCollections;
276 }
277
278
279
280
281
282
283 public void setSummaryFields(List<MaintainableFieldDefinition> summaryFields) {
284 summaryFieldMap.clear();
285 for (MaintainableFieldDefinition summaryField : summaryFields ) {
286 if (summaryField == null) {
287 throw new IllegalArgumentException("invalid (null) summaryField");
288 }
289
290 String fieldName = summaryField.getName();
291 if (summaryFieldMap.containsKey(fieldName)) {
292 throw new DuplicateEntryException("duplicate fieldName entry for field '" + fieldName + "'");
293 }
294
295 summaryFieldMap.put(fieldName, summaryField);
296 }
297 this.summaryFields = summaryFields;
298 }
299
300
301
302
303
304
305 public void setDuplicateIdentificationFields(List<MaintainableFieldDefinition> duplicateIdentificationFields) {
306 duplicateIdentificationFieldMap.clear();
307 for (MaintainableFieldDefinition identifierField : duplicateIdentificationFields) {
308 if (identifierField == null) {
309 throw new IllegalArgumentException("invalid (null) identifierField");
310 }
311
312 String fieldName = identifierField.getName();
313 if (duplicateIdentificationFieldMap.containsKey(fieldName)) {
314 throw new DuplicateEntryException("duplicate fieldName entry for field '" + fieldName + "'");
315 }
316
317 duplicateIdentificationFieldMap.put(fieldName, identifierField);
318 }
319 this.duplicateIdentificationFields = duplicateIdentificationFields;
320 }
321
322
323
324 public boolean isAlwaysAllowCollectionDeletion() {
325 return this.alwaysAllowCollectionDeletion;
326 }
327
328
329
330 public void setAlwaysAllowCollectionDeletion(
331 boolean alwaysAllowCollectionDeletion) {
332 this.alwaysAllowCollectionDeletion = alwaysAllowCollectionDeletion;
333 }
334
335 }