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.List;
19
20 import org.kuali.rice.kns.bo.BusinessObject;
21 import org.kuali.rice.kns.datadictionary.FieldDefinition;
22 import org.kuali.rice.kns.inquiry.InquiryAuthorizer;
23 import org.kuali.rice.kns.inquiry.InquiryPresentationController;
24 import org.kuali.rice.kns.lookup.valueFinder.ValueFinder;
25
26
27 /**
28 * This interface defines the API for the interacting with the data dictionary.
29 */
30 public interface BusinessObjectDictionaryService {
31 public <T extends BusinessObject> InquiryPresentationController getInquiryPresentationController(Class<T> businessObjectClass);
32
33 public <T extends BusinessObject> InquiryAuthorizer getInquiryAuthorizer(Class<T> businessObjectClass);
34
35 /**
36 * the list of business object class names being maintained
37 */
38 public List getBusinessObjectClassnames();
39
40
41 /**
42 * indicates whether business object has lookup defined
43 */
44 public Boolean isLookupable(Class businessObjectClass);
45
46
47 /**
48 * indicates whether business object has inquiry defined
49 */
50 public Boolean isInquirable(Class businessObjectClass);
51
52
53 /**
54 * indicates whether business object has maintainable defined
55 */
56 public Boolean isMaintainable(Class businessObjectClass);
57
58
59 /**
60 * indicates whether business object has an exporter defined
61 */
62 public Boolean isExportable(Class businessObjectClass);
63
64 /**
65 * the list defined as lookup fields for the business object.
66 */
67 public List getLookupFieldNames(Class businessObjectClass);
68
69
70 /**
71 * the text to be displayed for the title of business object lookup.
72 */
73 public String getLookupTitle(Class businessObjectClass);
74
75
76 /**
77 * menu bar html defined for the business object.
78 */
79 public String getLookupMenuBar(Class businessObjectClass);
80
81
82 /**
83 * source for optional extra button
84 */
85 public String getExtraButtonSource(Class businessObjectClass);
86
87
88 /**
89 * return parameters for optional extra button
90 */
91 public String getExtraButtonParams(Class businessObjectClass);
92
93
94 /**
95 * the property names of the bo used to sort the initial result set
96 */
97 public List getLookupDefaultSortFieldNames(Class businessObjectClass);
98
99
100 /**
101 * the list defined as lookup result fields for the business object.
102 */
103 public List<String> getLookupResultFieldNames(Class businessObjectClass);
104
105 /**
106 * This method returns the maximum display length of the value of the given field in the lookup results. While the actual value may
107 * be longer than the specified length, this value specifies the maximum length substring that should be displayed.
108 * It is up to the UI layer to intepret the results of the field
109 *
110 * @param businessObjectClass
111 * @param resultFieldName
112 * @return the maximum length of the lookup results field that should be displayed. Returns null
113 * if this value has not been defined. If negative, denotes that the is maximum length is unlimited.
114 */
115 public Integer getLookupResultFieldMaxLength(Class businessObjectClass, String resultFieldName);
116
117 /**
118 * returns boolean indicating whether lookup result field marked to force an inquiry
119 */
120 public Boolean forceLookupResultFieldInquiry(Class businessObjectClass, String attributeName);
121
122
123 /**
124 * returns boolean indicating whether lookup result field marked to not do an inquiry
125 */
126 public Boolean noLookupResultFieldInquiry(Class businessObjectClass, String attributeName);
127
128
129 /**
130 * returns boolean indicating whether lookup search field marked to force a lookup
131 */
132 public Boolean forceLookupFieldLookup(Class businessObjectClass, String attributeName);
133
134 /**
135 * returns boolean indicating whether lookup search field marked to force an inquiry
136 */
137 public Boolean forceInquiryFieldLookup(Class businessObjectClass, String attributeName);
138
139 /**
140 * returns boolean indicating whether lookup search field marked to not do a lookup
141 */
142 public Boolean noLookupFieldLookup(Class businessObjectClass, String attributeName);
143
144
145 /**
146 * returns boolean indicating whether lookup search field marked to not do a direct inquiry
147 */
148 public Boolean noDirectInquiryFieldLookup(Class businessObjectClass, String attributeName);
149
150
151 /**
152 * returns boolean indicating whether inquiry result field marked to force an inquiry
153 */
154 public Boolean forceInquiryFieldInquiry(Class businessObjectClass, String attributeName);
155
156
157 /**
158 * returns boolean indicating whether inquiry result field marked to not do an inquiry
159 */
160 public Boolean noInquiryFieldInquiry(Class businessObjectClass, String attributeName);
161
162 /**
163 * returns boolean indicating whether lookup result field to use shortLabel
164 */
165 public Boolean getLookupResultFieldUseShortLabel(Class businessObjectClass, String attributeName);
166
167 /**
168 * returns boolean indicating whether lookup result field should be totaled
169 */
170 public Boolean getLookupResultFieldTotal(Class businessObjectClass, String attributeName);
171
172 /**
173 * returns String indicating the default search value for the lookup field
174 */
175 public String getLookupFieldDefaultValue(Class businessObjectClass, String attributeName);
176
177
178 /**
179 * returns Class used to generate a lookup field default value
180 */
181 public Class getLookupFieldDefaultValueFinderClass(Class businessObjectClass, String attributeName);
182
183 /**
184 * See {@link FieldDefinition#getQuickfinderParameterString()}.
185 * returns String indicating the default search value for the lookup field.
186 */
187 public String getLookupFieldQuickfinderParameterString(Class businessObjectClass, String attributeName);
188
189
190 /**
191 * returns Class used to generate quickfinder lookup field default values.
192 * See {@link FieldDefinition#getQuickfinderParameterStringBuilderClass()}.
193 */
194 public Class<? extends ValueFinder> getLookupFieldQuickfinderParameterStringBuilderClass(Class businessObjectClass, String attributeName);
195
196
197 /**
198 * returns String indicating the result set limit for the lookup
199 */
200 public Integer getLookupResultSetLimit(Class businessObjectClass);
201
202 /**
203 * @return number of search columns configured for the lookup associated with the class
204 */
205 public Integer getLookupNumberOfColumns(Class businessObjectClass);
206
207 /**
208 * returns String indicating the location of the lookup icon.
209 */
210 public String getSearchIconOverride(Class businessObjectClass);
211
212 /**
213 * indicates whether a field is required for a lookup
214 */
215 public Boolean getLookupAttributeRequired(Class businessObjectClass, String attributeName);
216
217 /**
218 * indicates whether a field is read only for a lookup
219 */
220 public Boolean getLookupAttributeReadOnly(Class businessObjectClass, String attributeName);
221
222
223 /**
224 * the list defined as inquiry fields for the business object and inquiry section.
225 */
226 public List getInquiryFieldNames(Class businessObjectClass, String sectionTitle);
227
228
229 /**
230 * the list defined as inquiry sections for the business object.
231 */
232 public List getInquirySections(Class businessObjectClass);
233
234
235 /**
236 * the text to be displayed for the title of business object inquiry.
237 */
238 public String getInquiryTitle(Class businessObjectClass);
239
240
241 /**
242 * the class to be used for building inquiry pages.
243 */
244 public Class getInquirableClass(Class businessObjectClass);
245
246 /**
247 * the text to be displayed for the title of business object maintenance document.
248 */
249 public String getMaintainableLabel(Class businessObjectClass);
250
251
252 /**
253 * the attribute to be associated with for object level markings
254 */
255 public String getTitleAttribute(Class businessObjectClass);
256
257
258 /**
259 * the Lookupable implementation id for the associated Lookup, if one has been specified
260 */
261 public String getLookupableID(Class businessObjectClass);
262
263
264 /**
265 * This method takes any business object and recursively walks through it checking to see if any attributes need to be forced to
266 * uppercase based on settings in the data dictionary
267 *
268 * @param bo
269 */
270 public void performForceUppercase(BusinessObject bo);
271
272
273 public Boolean areNotesSupported(Class businessObjectClass);
274
275 /**
276 * returns whether on a lookup, field/attribute values with wildcards and operators should treat them as literal characters
277 *
278 * @param businessObjectClass
279 * @param attributeName
280 * @return
281 */
282 public boolean isLookupFieldTreatWildcardsAndOperatorsAsLiteral(Class businessObjectClass, String attributeName);
283
284 /**
285 * returns String giving alternate display attribute name for lookup field if configured, or null
286 */
287 public String getLookupFieldAlternateDisplayAttributeName(Class businessObjectClass, String attributeName);
288
289 /**
290 * returns String giving alternate display attribute name for inquiry field if configured, or null
291 */
292 public String getInquiryFieldAlternateDisplayAttributeName(Class businessObjectClass, String attributeName);
293
294 /**
295 * returns String giving additional display attribute name for lookup field if configured, or null
296 */
297
298 public String getLookupFieldAdditionalDisplayAttributeName(Class businessObjectClass, String attributeName);
299
300 /**
301 * returns String giving additional display attribute name for inquiry field if configured, or null
302 */
303 public String getInquiryFieldAdditionalDisplayAttributeName(Class businessObjectClass, String attributeName);
304
305 /**
306 * @param businessObjectClass - business object class for lookup definition
307 * @return Boolean indicating whether translating of codes is configured to true in lookup definition
308 */
309 public Boolean tranlateCodesInLookup(Class businessObjectClass);
310
311 /**
312 * @param businessObjectClass - business object class for inquiry definition
313 * @return Boolean indicating whether translating of codes is configured to true in inquiry definition
314 */
315 public Boolean tranlateCodesInInquiry(Class businessObjectClass);
316
317 /**
318 * Indicates whether a lookup field has been configured to trigger on value change
319 *
320 * @param businessObjectClass - Class for business object to lookup
321 * @param attributeName - name of attribute in the business object to check configuration for
322 * @return true if field is configured to trigger on value change, false if not
323 */
324 public boolean isLookupFieldTriggerOnChange(Class businessObjectClass, String attributeName);
325
326 /**
327 * Indicates whether the search and clear buttons should be disabled based on the data
328 * dictionary configuration
329 *
330 * @param businessObjectClass
331 * - business object class for lookup definition
332 * @return Boolean indicating whether disable search buttons is configured to true in lookup
333 * definition
334 */
335 public boolean disableSearchButtonsInLookup(Class businessObjectClass);
336
337 /**
338 * Returns the list of attributes that should be used for grouping when determing the current
339 * status of a business object that implements InactivateableFromTo
340 *
341 * @param businessObjectClass - business object class to get configured list for
342 * @return List of string attribute names that gives the group by list
343 */
344 public List<String> getGroupByAttributesForEffectiveDating(Class businessObjectClass);
345 }