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 }