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