1 /*
2 * Copyright 2005-2007 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.rice.kns.service;
17
18 import java.util.Collection;
19 import java.util.List;
20
21 import org.kuali.rice.kns.bo.PersistableBusinessObject;
22 import org.kuali.rice.kns.datadictionary.MaintainableCollectionDefinition;
23 import org.kuali.rice.kns.datadictionary.MaintainableFieldDefinition;
24 import org.kuali.rice.kns.datadictionary.MaintainableItemDefinition;
25 import org.kuali.rice.kns.datadictionary.MaintainableSectionDefinition;
26 import org.kuali.rice.kns.datadictionary.MaintenanceDocumentEntry;
27 import org.kuali.rice.kns.document.MaintenanceDocument;
28
29 /**
30 * This interface defines methods that a MaintenanceDocumentDictionary Service must provide. Defines the API for the interacting
31 * with Document-related entries in the data dictionary.
32 *
33 *
34 */
35 public interface MaintenanceDocumentDictionaryService {
36 /**
37 * Retrieves the label for a maintenance document.
38 *
39 * @param docTypeName
40 * @return The label as a String.
41 */
42 public String getMaintenanceLabel(String docTypeName);
43
44 /**
45 * Retrieves the description of the maintenance document.
46 *
47 * @param docTypeName
48 * @return The description as a String.
49 */
50 public String getMaintenanceDescription(String docTypeName);
51
52 /**
53 * Retrieves an instance of the class that represents the maintenance document. This is done by
54 *
55 * @param docTypeName
56 * @return A class instance.
57 */
58 public Class getMaintainableClass(String docTypeName);
59
60 /**
61 * The document type name for a class instance.
62 *
63 * @param businessObjectClass
64 * @return The document type name for the class as a String.
65 */
66 public String getDocumentTypeName(Class businessObjectClass);
67
68 /**
69 * The collection of ReferenceDefinition objects defined as DefaultExistenceChecks for the MaintenanceDocument.
70 *
71 * @param businessObjectClass
72 * @return A Collection of ReferenceDefinitions
73 */
74 public Collection getDefaultExistenceChecks(Class businessObjectClass);
75
76 /**
77 * The collection of ReferenceDefinition objects defined as DefaultExistenceChecks for the MaintenanceDocument.
78 *
79 * @param docTypeName
80 * @return A Collection of ReferenceDefinitions
81 */
82 public Collection getDefaultExistenceChecks(String docTypeName);
83
84 /**
85 * The collection of apcRuleDefinition objects defined as applyApcRules for the MaintenanceDocument
86 *
87 * @param businessObjectClass
88 * @return A collection of ApcRuleDefinitions
89 */
90 public Collection getApplyApcRules(Class businessObjectClass);
91
92 /**
93 * The collection of apcRuleDefinition objects defined as applyApcRules for the MaintenanceDocument
94 *
95 * @param docTypeName
96 * @return A collection of ApcRuleDefinitions
97 */
98 public Collection getApplyApcRules(String docTypeName);
99
100 /**
101 * A List of field names used as locking keys
102 *
103 * @param docTypeName
104 * @return A List of strings
105 */
106 public List getLockingKeys(String docTypeName);
107
108 /**
109 * A List of maintainable section object instances corresponding to the document type name.
110 *
111 * @param docTypeName
112 * @return A List of maintable section objects.
113 */
114 public List<MaintainableSectionDefinition> getMaintainableSections(String docTypeName);
115
116 /**
117 * The instance of the business object class associated with this document type name.
118 *
119 * @param docTypeName
120 * @return The class instance corresponding to the document type name.
121 */
122 public Class getBusinessObjectClass(String docTypeName);
123
124
125 /**
126 * @param document
127 * @return businessRulesClass associated with the given document's type
128 */
129 public Class getBusinessRulesClass(MaintenanceDocument document);
130
131 /**
132 *
133 * This method returns the defaultValue as it would appear in the UI on a maintenance document.
134 *
135 * If both a defaultValue and a defaultValueFinderClass is present in the MaintainableFieldDefinition instance, then the
136 * defaultValue will be preferentially returned. If only one is present, then that will be returned.
137 *
138 * Note that if a defaultValueFinderClass value is present, then this method will attempt to create a new instance of the
139 * specified class. If this attempt to generate a new instance fails, the error will be suppressed, and an null result will be
140 * returned.
141 *
142 * @param boClass - the class of BO being maintained
143 * @param fieldName - the fieldName of the attribute for which the default is desired
144 * @return the default if one is available, null otherwise
145 *
146 */
147 public String getFieldDefaultValue(Class boClass, String fieldName);
148
149 /**
150 *
151 * This method returns the defaultValue as it would appear in the UI on a maintenance document.
152 *
153 * If both a defaultValue and a defaultValueFinderClass is present in the MaintainableFieldDefinition instance, then the
154 * defaultValue will be preferentially returned. If only one is present, then that will be returned.
155 *
156 * Note that if a defaultValueFinderClass value is present, then this method will attempt to create a new instance of the
157 * specified class. If this attempt to generate a new instance fails, the error will be suppressed, and an null result will be
158 * returned.
159 *
160 * @param docTypeName - the document type name of the maintainable
161 * @param fieldName - the fieldName of the attribute for which the default is desired
162 * @return the default if one is available, null otherwise
163 *
164 */
165 public String getFieldDefaultValue(String docTypeName, String fieldName);
166
167 /**
168 *
169 * This method returns the defaultValue as it would appear in the UI on a maintenance document for a collection.
170 *
171 * If both a defaultValue and a defaultValueFinderClass is present in the MaintainableFieldDefinition instance, then the
172 * defaultValue will be preferentially returned. If only one is present, then that will be returned.
173 *
174 * Note that if a defaultValueFinderClass value is present, then this method will attempt to create a new instance of the
175 * specified class. If this attempt to generate a new instance fails, the error will be suppressed, and an null result will be
176 * returned.
177 *
178 * @param docTypeName - the document type name of the maintainable
179 * @param collectionName - the name attribute of the collection to which the field belongs
180 * @param fieldName - the fieldName of the attribute for which the default is desired
181 * @return the default if one is available, null otherwise
182 */
183 public String getCollectionFieldDefaultValue(String docTypeName, String collectionName, String fieldName);
184
185 /**
186 * Returns whether or not this document's data dictionary file has flagged it to allow document copies.
187 *
188 * @param document
189 * @return True if copies are allowed, false otherwise.
190 */
191 public Boolean getAllowsCopy(MaintenanceDocument document);
192
193 /**
194 * Returns whether or not this document's data dictionary file has flagged it to allow maintenance new
195 * or copy actions.
196 *
197 * @param document
198 * @return True if new or copy maintenance actions are allowed
199 */
200 public Boolean getAllowsNewOrCopy(String docTypeName);
201
202
203 /**
204 * Returns the business object used to store the values for the given collection.
205 *
206 * @param docTypeName
207 * @param collectionName
208 * @return
209 */
210 public Class getCollectionBusinessObjectClass( String docTypeName, String collectionName );
211
212 /**
213 * Returns the definition for the maintainable item identified by "itemName".
214 *
215 * @param docTypeName
216 * @param itemName
217 * @return The item or <b>null</b> if the item does not exist.
218 */
219 public MaintainableItemDefinition getMaintainableItem( String docTypeName, String itemName );
220
221 /**
222 * Returns the definition for the maintainable field identified by "fieldName".
223 *
224 * @param docTypeName
225 * @param fieldName
226 * @return The field or <b>null</b> if the item does not exist or is not a field.
227 */
228 public MaintainableFieldDefinition getMaintainableField( String docTypeName, String fieldName );
229
230 /**
231 * Returns the definition for the maintainable collection identified by "collectionName".
232 *
233 * @param docTypeName
234 * @param collectionName
235 * @return The collection or <b>null</b> if the item does not exist or is not a collection.
236 */
237 public MaintainableCollectionDefinition getMaintainableCollection( String docTypeName, String collectionName );
238
239 /* They are returned in order of discovery (depth-first search) */
240 /**
241 * Gets a list of all top-level maintainable collections on the document.
242 *
243 *
244 * @param docTypeName
245 * @return
246 */
247 public List<MaintainableCollectionDefinition> getMaintainableCollections( String docTypeName );
248
249 /**
250 * Returns a list of all collections within the given collection
251 *
252 * @param parentCollection
253 * @return
254 */
255 public List<MaintainableCollectionDefinition> getMaintainableCollections( MaintainableCollectionDefinition parentCollection );
256
257
258 /**
259 * Validates the maintenance document contains values for the fields declared as required in the
260 * maintenance document data dictionary file.
261 *
262 * @param document
263 */
264 public void validateMaintenanceRequiredFields(MaintenanceDocument document);
265
266 /**
267 * validates the collections of the maintenance document checking to see if duplicate entries in the collection exist
268 * @param document
269 */
270 public void validateMaintainableCollectionsForDuplicateEntries(MaintenanceDocument document);
271
272 public void validateMaintainableCollectionsAddLineRequiredFields(MaintenanceDocument document, PersistableBusinessObject businessObject, String collectionName );
273
274 public MaintenanceDocumentEntry getMaintenanceDocumentEntry(String docTypeName);
275
276 //for issue KULRice 3072, checking PK copy prop
277 public boolean getPreserveLockingKeysOnCopy(Class businessObjectClass);
278
279 //for issue KULRice 3070
280 public Boolean getAllowsRecordDeletion(Class businessObjectClass);
281 //for issue KULRice3070
282 public Boolean getAllowsRecordDeletion(MaintenanceDocument document);
283
284 /**
285 * @param businessObjectClass - business object class for maintenance definition
286 * @return Boolean indicating whether translating of codes is configured to true in maintenance definition
287 */
288 public Boolean translateCodes(Class businessObjectClass);
289
290 }