1 /**
2 * Copyright 2005-2011 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.krad.service;
17
18 import org.kuali.rice.krad.datadictionary.MaintenanceDocumentEntry;
19 import org.kuali.rice.krad.document.Document;
20 import org.kuali.rice.krad.document.DocumentAuthorizer;
21 import org.kuali.rice.krad.document.DocumentPresentationController;
22 import org.kuali.rice.krad.maintenance.MaintenanceDocument;
23 import org.kuali.rice.krad.maintenance.Maintainable;
24 import org.kuali.rice.krad.rules.rule.BusinessRule;
25
26 import java.util.Collection;
27 import java.util.List;
28
29 /**
30 * Defines methods that a <code>DocumentEntry</code> Service must provide, and the API for the interacting
31 * with Document-related entries in the data dictionary
32 *
33 * @author Kuali Rice Team (rice.collab@kuali.org)
34 */
35 public interface DocumentDictionaryService {
36
37 /**
38 * Retrieves the label for the document as described in its data dictionary entry
39 *
40 * @param documentTypeName - document type name for the document entry to retrieve label for
41 * @return String document label
42 */
43 public String getLabel(String documentTypeName);
44
45 /**
46 * Retrieves the configured document type name for the maintenance document
47 * entry associated with the given data object class
48 *
49 * @param dataObjectClass - data object class for maintenance entry to retrieve
50 * @return String document type name for maintenance document
51 */
52 public String getMaintenanceDocumentTypeName(Class dataObjectClass);
53
54 /**
55 * Retrieves the full description of the document as described in its data dictionary entry
56 *
57 * @param documentTypeName - document type name for the document entry to retrieve description for
58 * @return String documents full description
59 */
60 public String getDescription(String documentTypeName);
61
62 /**
63 * Retrieves the collection of ReferenceDefinition objects defined as DefaultExistenceChecks
64 * for the MaintenanceDocument associated with the given data object class
65 *
66 * @param dataObjectClass - data object class for maintenance document
67 * @return Collection reference definitions for default existence checks
68 */
69 public Collection getDefaultExistenceChecks(Class dataObjectClass);
70
71 /**
72 * Retrieves the collection of ReferenceDefinition objects defined as DefaultExistenceChecks
73 * for the document instance
74 *
75 * @param document - document instance to pull document type for associated document entry
76 * @return Collection reference definitions for default existence checks
77 */
78 public Collection getDefaultExistenceChecks(Document document);
79
80 /**
81 * Retrieves the collection of ReferenceDefinition objects defined as DefaultExistenceChecks
82 * for the document entry associated with the given document type name
83 *
84 * @param docTypeName - document type name for document entry to pull existence checks for
85 * @return Collection reference definitions for default existence checks
86 */
87 public Collection getDefaultExistenceChecks(String docTypeName);
88
89 /**
90 * Retrieves the data object class configured for the maintenance entry
91 * associated with the given document type name
92 *
93 * @param docTypeName - document type name associated with maintenance document entry
94 * @return Class<?> data object class associated with maintenance document entry
95 */
96 public Class<?> getMaintenanceDataObjectClass(String docTypeName);
97
98 /**
99 * Retrieves the maintainable class instance that is configured in the maintenance document
100 * entry associated with the given document type name
101 *
102 * @param docTypeName - document type name to retrieve maintainable for
103 * @return Class<? extends Maintainable> maintainable class for document type name
104 */
105 public Class<? extends Maintainable> getMaintainableClass(String docTypeName);
106
107 /**
108 * Retrieves the configured business rule class configured for the document entry
109 * that is associated with the document type of the given document instance
110 *
111 * @param document - document instance to retrieve rule class for
112 * @return Class<? extends BusinessRule> businessRulesClass associated with the given document type
113 */
114 public Class<? extends BusinessRule> getBusinessRulesClass(Document document);
115
116 /**
117 * Returns whether or not this document's data dictionary file has flagged it to allow document copies
118 *
119 * @param document - document instance to check copy flag for
120 * @return boolean true if copies are allowed, false otherwise
121 */
122 public Boolean getAllowsCopy(Document document);
123
124 /**
125 * Returns whether or not this document's data dictionary file has flagged it to allow maintenance new
126 * or copy actions
127 *
128 * @param docTypeName - document type name to retrieve maintenance document entry for
129 * @return boolean true if new or copy maintenance actions are allowed
130 */
131 public Boolean getAllowsNewOrCopy(String docTypeName);
132
133 /**
134 * Retrieves the maintenance document entry that is associated with the given document type name
135 *
136 * @param docTypeName - document type name to retrieve maintenance document entry for
137 * @return MaintenanceDocumentEntry instance associated with document type
138 */
139 public MaintenanceDocumentEntry getMaintenanceDocumentEntry(String docTypeName);
140
141 /**
142 * Retrieves the document class configured on the document entry associated with the
143 * given document type name
144 *
145 * @param documentTypeName - document type name to retrieve class for
146 * @return Class<?> document class associated with document type name
147 */
148 public Class<?> getDocumentClassByName(String documentTypeName);
149
150 /**
151 * Indicates whether the given data object class is configured to allow record deletions
152 *
153 * @param dataObjectClass - class for the data object to check
154 * @return Boolean true if record deletion is allowed, false if not allowed, null if not configured
155 */
156 public Boolean getAllowsRecordDeletion(Class dataObjectClass);
157
158 /**
159 * Indicates whether the given maintenance document is configured to allow record deletions
160 *
161 * @param document - maintenance document instance to check
162 * @return Boolean true if record deletion is allowed, false if not allowed, null if not configured
163 */
164 public Boolean getAllowsRecordDeletion(MaintenanceDocument document);
165
166 /**
167 * Retrieves the list of property names that are configured as locking keys for the maintenance
168 * document entry associated with the given document type name
169 *
170 * @param docTypeName - document type name to retrieve maintenance document entry for
171 * @return List<String> list of locking key property names
172 */
173 public List<String> getLockingKeys(String docTypeName);
174
175 /**
176 * Indicates whether the configured locking keys for a class should be cleared on a maintenance
177 * copy action or values carried forward
178 *
179 * @param dataObjectClass - class for the data object to check
180 * @return boolean true if locking keys should be copied, false if they should be cleared
181 */
182 public boolean getPreserveLockingKeysOnCopy(Class dataObjectClass);
183
184 /**
185 * Retrieves the {@link DocumentAuthorizer} configured on the document entry with the given document type
186 * name
187 *
188 * @param documentType - document type name to retrieve document entry and associated authorizer for
189 * @return DocumentAuthorizer authorizer instance
190 */
191 public DocumentAuthorizer getDocumentAuthorizer(String documentType);
192
193 /**
194 * Retrieves the {@link DocumentAuthorizer} configured on the document entry for the document type associated
195 * with the document instance
196 *
197 * @param document - document instance to retrieve document entry and associated authorizer for
198 * @return DocumentAuthorizer authorizer instance
199 */
200 public DocumentAuthorizer getDocumentAuthorizer(Document document);
201
202 /**
203 * Retrieves the {@link DocumentPresentationController} configured on the document entry with the given document
204 * type name
205 *
206 * @param documentType - document type name to retrieve document entry and associated presentation controller for
207 * @return DocumentPresentationController instance
208 */
209 public DocumentPresentationController getDocumentPresentationController(String documentType);
210
211 /**
212 * Retrieves the {@link DocumentPresentationController} configured on the document entry for the document type
213 * associated with the document instance
214 *
215 * @param document - document instance to retrieve document entry and associated presentation controller for
216 * @return DocumentPresentationController instance
217 */
218 public DocumentPresentationController getDocumentPresentationController(Document document);
219 }