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 }