001/**
002 * Copyright 2005-2015 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kns.service;
017
018import org.kuali.rice.kns.inquiry.InquiryAuthorizer;
019import org.kuali.rice.kns.inquiry.InquiryPresentationController;
020import org.kuali.rice.krad.bo.BusinessObject;
021import org.kuali.rice.krad.valuefinder.ValueFinder;
022
023import java.util.List;
024
025
026/**
027 * This interface defines the API for the interacting with the data dictionary.
028 *
029 * @deprecated Only used in KNS classes, use KRAD.
030 */
031@Deprecated
032public interface BusinessObjectDictionaryService {
033        public <T extends BusinessObject> InquiryPresentationController getInquiryPresentationController(Class<T> businessObjectClass);
034        
035        public <T extends BusinessObject> InquiryAuthorizer getInquiryAuthorizer(Class<T> businessObjectClass);
036
037    /**
038     * the list of business object class names being maintained
039     */
040    public List getBusinessObjectClassnames();
041
042
043    /**
044     * indicates whether business object has lookup defined
045     */
046    public Boolean isLookupable(Class businessObjectClass);
047
048
049    /**
050     * indicates whether business object has inquiry defined
051     */
052    public Boolean isInquirable(Class businessObjectClass);
053
054
055    /**
056     * indicates whether business object has maintainable defined
057     */
058    public Boolean isMaintainable(Class businessObjectClass);
059
060
061    /**
062     * indicates whether business object has an exporter defined
063     */
064    public Boolean isExportable(Class businessObjectClass);
065    
066    /**
067     * the list defined as lookup fields for the business object.
068     */
069    public List getLookupFieldNames(Class businessObjectClass);
070
071
072    /**
073     * the text to be displayed for the title of business object lookup.
074     */
075    public String getLookupTitle(Class businessObjectClass);
076
077
078    /**
079     * menu bar html defined for the business object.
080     */
081    public String getLookupMenuBar(Class businessObjectClass);
082    
083
084    /**
085     * source for optional extra button
086     */
087    public String getExtraButtonSource(Class businessObjectClass);
088
089
090    /**
091     * return parameters for optional extra button
092     */
093    public String getExtraButtonParams(Class businessObjectClass);
094
095
096    /**
097     * the property names of the bo used to sort the initial result set
098     */
099    public List getLookupDefaultSortFieldNames(Class businessObjectClass);
100
101
102    /**
103     * the list defined as lookup result fields for the business object.
104     */
105    public List<String> getLookupResultFieldNames(Class businessObjectClass);
106
107    /**
108     * This method returns the maximum display length of the value of the given field in the lookup results.  While the actual value may
109     * be longer than the specified length, this value specifies the maximum length substring that should be displayed.
110     * It is up to the UI layer to intepret the results of the field
111     *
112     * @param businessObjectClass
113     * @param resultFieldName
114     * @return the maximum length of the lookup results field that should be displayed.  Returns null
115     * if this value has not been defined.  If negative, denotes that the is maximum length is unlimited.
116     */
117    public Integer getLookupResultFieldMaxLength(Class businessObjectClass, String resultFieldName);
118
119    /**
120     * returns boolean indicating whether lookup result field marked to force an inquiry
121     */
122    public Boolean forceLookupResultFieldInquiry(Class businessObjectClass, String attributeName);
123
124
125    /**
126     * returns boolean indicating whether lookup result field marked to not do an inquiry
127     */
128    public Boolean noLookupResultFieldInquiry(Class businessObjectClass, String attributeName);
129
130
131    /**
132     * returns boolean indicating whether lookup search field marked to force a lookup
133     */
134    public Boolean forceLookupFieldLookup(Class businessObjectClass, String attributeName);
135
136    /**
137     * returns boolean indicating whether lookup search field marked to force an inquiry
138     */
139    public Boolean forceInquiryFieldLookup(Class businessObjectClass, String attributeName);
140    
141    /**
142     * returns boolean indicating whether lookup search field marked to not do a lookup
143     */
144    public Boolean noLookupFieldLookup(Class businessObjectClass, String attributeName);
145
146
147    /**
148     * returns boolean indicating whether lookup search field marked to not do a direct inquiry
149     */
150    public Boolean noDirectInquiryFieldLookup(Class businessObjectClass, String attributeName);
151
152
153    /**
154     * returns boolean indicating whether inquiry result field marked to force an inquiry
155     */
156    public Boolean forceInquiryFieldInquiry(Class businessObjectClass, String attributeName);
157
158
159    /**
160     * returns boolean indicating whether inquiry result field marked to not do an inquiry
161     */
162    public Boolean noInquiryFieldInquiry(Class businessObjectClass, String attributeName);
163
164    /**
165     * returns boolean indicating whether lookup result field to use shortLabel
166     */
167    public Boolean getLookupResultFieldUseShortLabel(Class businessObjectClass, String attributeName);
168    
169    /**
170     * returns boolean indicating whether lookup result field should be totaled
171     */
172    public Boolean getLookupResultFieldTotal(Class businessObjectClass, String attributeName);
173
174    /**
175     * returns String indicating the default search value for the lookup field
176     */
177    public String getLookupFieldDefaultValue(Class businessObjectClass, String attributeName);
178
179
180    /**
181     * returns Class used to generate a lookup field default value
182     */
183    public Class getLookupFieldDefaultValueFinderClass(Class businessObjectClass, String attributeName);
184
185    /**
186     * See {@link FieldDefinition#getQuickfinderParameterString()}.
187     * returns String indicating the default search value for the lookup field.
188     */
189    public String getLookupFieldQuickfinderParameterString(Class businessObjectClass, String attributeName);
190
191
192    /**
193     * returns Class used to generate quickfinder lookup field default values.
194     * See {@link FieldDefinition#getQuickfinderParameterStringBuilderClass()}.
195     */
196    public Class<? extends ValueFinder> getLookupFieldQuickfinderParameterStringBuilderClass(Class businessObjectClass, String attributeName);
197
198
199    /**
200     * returns String indicating the result set limit for the lookup
201     */
202    public Integer getLookupResultSetLimit(Class businessObjectClass);
203
204    /**
205     * returns Integer indicating the result set limit for a multiple values lookup
206     */
207    public Integer getMultipleValueLookupResultSetLimit(Class businessObjectClass);
208   
209    /**
210     * @return number of search columns configured for the lookup associated with the class
211     */
212    public Integer getLookupNumberOfColumns(Class businessObjectClass);
213
214    /**
215     * returns String indicating the location of the lookup icon.
216     */
217    public String getSearchIconOverride(Class businessObjectClass);
218
219    /**
220     * indicates whether a field is required for a lookup
221     */
222    public Boolean getLookupAttributeRequired(Class businessObjectClass, String attributeName);
223    
224    /**
225     * indicates whether a field is read only for a lookup
226     */
227    public Boolean getLookupAttributeReadOnly(Class businessObjectClass, String attributeName);
228
229
230    /**
231     * the list defined as inquiry fields for the business object and inquiry section.
232     */
233    public List getInquiryFieldNames(Class businessObjectClass, String sectionTitle);
234
235
236    /**
237     * the list defined as inquiry sections for the business object.
238     */
239    public List getInquirySections(Class businessObjectClass);
240
241
242    /**
243     * the text to be displayed for the title of business object inquiry.
244     */
245    public String getInquiryTitle(Class businessObjectClass);
246
247
248    /**
249     * the class to be used for building inquiry pages.
250     */
251    public Class getInquirableClass(Class businessObjectClass);
252
253    /**
254     * the text to be displayed for the title of business object maintenance document.
255     */
256    public String getMaintainableLabel(Class businessObjectClass);
257
258
259    /**
260     * the attribute to be associated with for object level markings
261     */
262    public String getTitleAttribute(Class businessObjectClass);
263
264
265    /**
266     * the Lookupable implementation id for the associated Lookup, if one has been specified
267     */
268    public String getLookupableID(Class businessObjectClass);
269
270
271    /**
272     * This method takes any business object and recursively walks through it checking to see if any attributes need to be forced to
273     * uppercase based on settings in the data dictionary
274     *
275     * @param bo
276     */
277    public void performForceUppercase(BusinessObject bo);
278
279    /**
280     * returns whether on a lookup, field/attribute values with wildcards and operators should treat them as literal characters
281     * 
282     * @param businessObjectClass
283     * @param attributeName
284     * @return
285     */
286    public boolean isLookupFieldTreatWildcardsAndOperatorsAsLiteral(Class businessObjectClass, String attributeName);
287    
288    /**
289     * returns String giving alternate display attribute name for lookup field if configured, or null
290     */
291    public String getLookupFieldAlternateDisplayAttributeName(Class businessObjectClass, String attributeName);
292
293    /**
294     * returns String giving alternate display attribute name for inquiry field if configured, or null
295     */
296    public String getInquiryFieldAlternateDisplayAttributeName(Class businessObjectClass, String attributeName);
297    
298    /**
299     * returns String giving additional display attribute name for lookup field if configured, or null
300     */
301     
302    public String getLookupFieldAdditionalDisplayAttributeName(Class businessObjectClass, String attributeName);
303
304    /**
305     * returns String giving additional display attribute name for inquiry field if configured, or null
306     */
307    public String getInquiryFieldAdditionalDisplayAttributeName(Class businessObjectClass, String attributeName);
308    
309     /**
310     * @param businessObjectClass - business object class for lookup definition
311     * @return Boolean indicating whether translating of codes is configured to true in lookup definition  
312     */
313    public Boolean tranlateCodesInLookup(Class businessObjectClass);
314
315    /**
316     * @param businessObjectClass - business object class for inquiry definition
317     * @return Boolean indicating whether translating of codes is configured to true in inquiry definition  
318     */
319    public Boolean tranlateCodesInInquiry(Class businessObjectClass);
320    
321    /**
322     * Indicates whether a lookup field has been configured to trigger on value change
323     * 
324     * @param businessObjectClass - Class for business object to lookup 
325     * @param attributeName - name of attribute in the business object to check configuration for
326     * @return true if field is configured to trigger on value change, false if not
327     */
328    public boolean isLookupFieldTriggerOnChange(Class businessObjectClass, String attributeName);
329    
330        /**
331         * Indicates whether the search and clear buttons should be disabled based on the data
332         * dictionary configuration
333         * 
334         * @param businessObjectClass
335         *            - business object class for lookup definition
336         * @return Boolean indicating whether disable search buttons is configured to true in lookup
337         *         definition
338         */
339        public boolean disableSearchButtonsInLookup(Class businessObjectClass);
340        
341
342}