1 package org.kuali.rice.core.api.uif;
2
3 /**
4 * Defines configuration for an attribute which may be used as part of a lookups. This includes indicating if the
5 * field is displayed in the lookup criteria or lookup result set, as well as defining information about this field
6 * if it used as part of a range-based lookup.
7 *
8 * <p>The range bounds allows the party executing the lookup against this attribute to enter a value for both ends
9 * (lower and upper bounds) in order to determine if the attribute is "between" those two values.</p>
10 *
11 * <p>Note that an attribute range only makes sense if the {@code DataType} of the attribute is
12 * a date or numerical data type. The consumer of these settings is free to ignore the given
13 * attribute range information if it does not believe it is possible to successfully present a range-based
14 * lookup option based on the data type (or other settings) of the {@code AttributeField}.</p>
15 *
16 * @author Kuali Rice Team (rice.collab@kuali.org)
17 */
18 public interface AttributeLookupSettings {
19
20 /**
21 * Returns true if this field should be included as part of the lookup criteria, false if not.
22 *
23 * @return true if this field should be included as part of the lookup criteria, false if not
24 */
25 boolean isInCriteria();
26
27 /**
28 * Returns true if this field should be included in the result set of the lookup, false if not.
29 *
30 * @return true if this field should be included in the result set of the lookup, false if not
31 */
32 boolean isInResults();
33
34 /**
35 * Returns true if lookups against this field should be handled as a lookup operation supporting a range-based
36 * search of data against the field.
37 *
38 * @return true if lookups against this attribute should allow for ranged lookup fields, false otherwise
39 */
40 boolean isRanged();
41
42 /**
43 * Returns the name to assign to the lower bound of the range. It is important to ensure that this
44 * does not conflict with any other attribute names being used on the lookup.
45 *
46 * @return the name of the lower bound of the range
47 */
48 String getLowerBoundName();
49
50 /**
51 * Returns the label to use for the lower bound of the range. If no label is defined, then the
52 * framework will generate one.
53 *
54 * @return the label of the lower bound of the range
55 */
56 String getLowerBoundLabel();
57
58
59 /**
60 * Returns true if the lower bound should be treated as inclusive when executing a ranged
61 * lookup against the attribute, false if it should be treated as exclusive.
62 *
63 * @return true if the lower bound is inclusive, false if it is exclusive
64 */
65 boolean isLowerBoundInclusive();
66
67 /**
68 * Returns the name to assign to the upper bound of the range. It is important to ensure that this
69 * does not conflict with any other attribute names being used on the lookup.
70 *
71 * @return the name of the upper bound of the range
72 */
73 String getUpperBoundName();
74
75 /**
76 * Returns the label to use for the upper bound of the range. If no label is defined, then the
77 * framework will generate one.
78 *
79 * @return the label of the upper bound of the range
80 */
81 String getUpperBoundLabel();
82
83 /**
84 * Returns true if the upper bound should be treated as inclusive when executing a ranged
85 * lookup against the attribute, false if it should be treated as exclusive.
86 *
87 * @return true if the upper bound is inclusive, false if it is exclusive
88 */
89 boolean isUpperBoundInclusive();
90
91 }