1 /*
2 * Copyright 2011 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 1.0 (the
5 * "License"); you may not use this file except in compliance with the
6 * License. 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
13 * implied. See the License for the specific language governing
14 * permissions and limitations under the License.
15 */
16
17 package org.kuali.student.r2.common.datadictionary.infc;
18
19 import org.kuali.rice.core.api.uif.DataType;
20
21 /**
22 * Dictionary data for Attributes (or fields) that exist on an object.
23 *
24 * @author nwright
25 */
26
27 public interface AttributeDefinitionInfc {
28
29 /**
30 * The name of the attribute (or field).
31 *
32 * Should match the field name on the corresponding business
33 * object.
34 *
35 * TODO: figure out how to handle sub-objects. I.e. using dot
36 * notation?
37 *
38 * @name Name
39 */
40 public String getName();
41
42 /**
43 * @name Child Entry Name
44 */
45 @Deprecated
46 public String getChildEntryName();
47
48 /**
49 * The type of data this attribite (field) holds.
50 * I.e. STRING, INTEGER, DATE, LONG, DATETIME, COMPLEX, etc.
51 *
52 * @name Data Type
53 */
54 public DataType getDataType();
55
56 /**
57 * The required element allows values of "true" or "false". A
58 * value of "true" indicates that a value must be entered for this
59 * business object when creating or editing a new business object.
60 *
61 * @name Is Required
62 */
63 public Boolean getIsRequired();
64
65 /**
66 * The minimum number of allowed occurences
67 *
68 * TODO: get Rice to rename this to getMinOccurs to it matches the
69 * setter.
70 *
71 * @name Minimum Occurences
72 */
73 public Integer getMinOccurs();
74
75 /**
76 * The maximum number of allowed occurences of this field
77 *
78 * TODO: Get RICE to rename this getMaxOccurs so it matches the setter
79 * TODO: Get RICE to set a value that means UNBOUNDED, perhaps 999999999
80 *
81 * @name Maximum Occurrences
82 */
83 public Integer getMaxOccurs();
84
85 /**
86 * The miniumum length allowed for the field.
87 *
88 * @name Minimum Length
89 */
90 public Integer getMinLength();
91
92 /**
93 * The maxLength element determines the maximum size of the field
94 * for data entry edit purposes and for display purposes.
95 *
96 * @name Maximum Length
97 */
98 public Integer getMaxLength();
99
100 /**
101 * Converts user entry to uppercase and always display database
102 * value as uppercase.
103 *
104 * @name Force Uppercase
105 */
106 public Boolean getIsForceUppercase();
107
108 /**
109 * The shortLabel element is the field or collection name that
110 * will be used in applications when a shorter name (than the
111 * label element) is required. This will be overridden by
112 * presence of displayLabelAttribute element.
113 *
114 * @name Short Label
115 */
116 public String getShortLabel();
117
118 /**
119 * The summary element is used to provide a short description of
120 * the attribute or collection. This is designed to be used for
121 * help purposes.
122 *
123 * @name Summary
124 */
125 public String getSummary();
126
127 /**
128 * The label element is the field or collection name that will be
129 * shown on inquiry and maintenance screens. This will be
130 * overridden by presence of displayLabelAttribute element.
131 *
132 * @name Label
133 */
134 public String getLabel();
135
136 /**
137 * The description element is used to provide a long description
138 * of the attribute or collection. This is designed to be used for
139 * help purposes.
140 *
141 * @name Description
142 */
143 public String getDescription();
144
145 /**
146 * The exclusiveMin element determines the minimum allowable value
147 * for data entry editing purposes. Value can be an integer or
148 * decimal value such as -.001 or 99.
149 *
150 * @name Exclusive Minimum
151 */
152 public String getExclusiveMin();
153
154 /**
155 * The inclusiveMax element determines the maximum allowable value
156 * for data entry editing purposes. Value can be an integer or
157 * decimal value such as -.001 or 99.
158 *
159 * JSTL: This field is mapped into the field named "exclusiveMax".
160 *
161 * @name Exclusive Maximum
162 */
163 public String getInclusiveMax();
164
165 /**
166 * The displayLabelAttribute element is used to indicate that the
167 * label and short label should be obtained from another
168 * attribute.
169 *
170 * The label element and short label element defined for this
171 * attribute will be overridden. Instead, the label and short
172 * label values will be obtained by referencing the corresponding
173 * values from the attribute indicated by this element.
174 *
175 * @name Display Label Attribute
176 */
177 public String getDisplayLabelAttribute();
178
179 /**
180 * Similar to a db column that is flagged as unique, the value is
181 * unique across all data objects of that type
182 *
183 * @name Unique
184 */
185 public Boolean getIsUnique();
186
187 /**
188 * Class to do custom validation
189 *
190 * @name Custom Validator Class
191 */
192 public String getCustomValidatorClass();
193
194 /**
195 * The formatterClass element is used when custom formatting is
196 * required for display of the field value. This field specifies
197 * the name of the java class to be used for the formatting. About
198 * 15 different classes are available including BooleanFormatter,
199 * CurrencyFormatter, DateFormatter, etc.
200 *
201 * @name Formatter Class
202 */
203 public String getFormatterClass();
204
205 /**
206 * The constraint that applies regular expressions to to the value
207 *
208 * TODO: Ask RICE to create an interface for
209 * ValidCharactersConstraint so we can return that instead of the
210 * generic constraint
211 *
212 * @name Valid Characters Constraint
213 */
214 public ValidCharactersConstraintInfc getValidCharactersConstraint();
215 }