View Javadoc

1   /**
2    * Copyright 2005-2012 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.krad.datadictionary;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.rice.krad.datadictionary.validation.capability.ExistenceConstrainable;
20  
21  /**
22   * Common class for attribute definitions in the DataDictionary, which contains
23   * information relating to the display, validation, and general maintenance of a
24   * specific attribute of an entry. An attribute can be a simple or complex attribute.
25   *  
26   */
27  public abstract class AttributeDefinitionBase extends DataDictionaryDefinitionBase implements ExistenceConstrainable{
28  
29  	protected String name;
30  
31  	protected String label;
32  	protected String shortLabel;
33  	protected String displayLabelAttribute;
34  
35  	protected String messageKey;
36      protected String constraintText;
37  	protected String summary;
38  	protected String description;
39  	
40  	protected Boolean required = Boolean.FALSE;
41  	
42  	public String getName() {
43  		return name;
44  	}
45  
46  	/*
47  	 * name = name of attribute
48  	 */
49  	public void setName(String name) {
50  		if (StringUtils.isBlank(name)) {
51  			throw new IllegalArgumentException("invalid (blank) name");
52  		}
53  		this.name = name;
54  	}
55  
56  	public String getLabel() {
57  		return label;
58  	}
59  
60  	/**
61  	 * The label element is the field or collection name that will be shown on
62  	 * inquiry and maintenance screens. This will be overridden by presence of
63  	 * displayLabelAttribute element.
64  	 */
65  	public void setLabel(String label) {
66  		if (StringUtils.isBlank(label)) {
67  			throw new IllegalArgumentException("invalid (blank) label");
68  		}
69  		this.label = label;
70  	}
71  
72  	/**
73  	 * @return the shortLabel, or the label if no shortLabel has been set
74  	 */
75  	public String getShortLabel() {
76  		return (shortLabel != null) ? shortLabel : getLabel();
77  	}
78  
79  	/**
80  	 * @return the shortLabel directly, without substituting in the label
81  	 */
82  	protected String getDirectShortLabel() {
83  		return shortLabel;
84  	}
85  
86  	/**
87  	 * The shortLabel element is the field or collection name that will be used
88  	 * in applications when a shorter name (than the label element) is required.
89  	 * This will be overridden by presence of displayLabelAttribute element.
90  	 */
91  	public void setShortLabel(String shortLabel) {
92  		if (StringUtils.isBlank(shortLabel)) {
93  			throw new IllegalArgumentException("invalid (blank) shortLabel");
94  		}
95  		this.shortLabel = shortLabel;
96  	}
97  	
98  	/**
99  	 * The required element allows values of "true" or "false". A value of
100 	 * "true" indicates that a value must be entered for this business object
101 	 * when creating or editing a new business object.
102 	 */
103 	public void setRequired(Boolean required) {
104 		this.required = required;
105 	}
106 
107 	@Override
108 	public Boolean isRequired() {
109 		return this.required;
110 	}
111 
112     /**
113      * Text that display a restriction on the value a field can hold
114      *
115      * <p>
116      * For example when the value must be a valid format (phone number, email), certain length, min/max value and
117      * so on this text can be used to indicate the constraint to the user. Generally displays with the control so
118      * it is visible when the user tabs to the field
119      * </p>
120      *
121      * @return String text to display for the constraint message
122      */
123     public String getConstraintText() {
124         return this.constraintText;
125     }
126 
127     /**
128      * Setter for the constraint message text
129      *
130      * @param constraintText
131      */
132     public void setConstraintText(String constraintText) {
133         this.constraintText = constraintText;
134     }
135 	
136 	public String getSummary() {
137 		return summary;
138 	}
139 
140 	/**
141 	 * The summary element is used to provide a short description of the
142 	 * attribute or collection. This is designed to be used for help purposes.
143 	 */
144 	public void setSummary(String summary) {
145 		this.summary = summary;
146 	}
147 
148 	public String getDescription() {
149 		return description;
150 	}
151 
152 	/**
153 	 * The description element is used to provide a long description of the
154 	 * attribute or collection. This is designed to be used for help purposes.
155 	 */
156 	public void setDescription(String description) {
157 		this.description = description;
158 	}
159 	
160 	public String getDisplayLabelAttribute() {
161 		return displayLabelAttribute;
162 	}
163 
164 	/**
165 	 * The displayLabelAttribute element is used to indicate that the label and
166 	 * short label should be obtained from another attribute.
167 	 * 
168 	 * The label element and short label element defined for this attribute will
169 	 * be overridden. Instead, the label and short label values will be obtained
170 	 * by referencing the corresponding values from the attribute indicated by
171 	 * this element.
172 	 */
173 	public void setDisplayLabelAttribute(String displayLabelAttribute) {
174 		this.displayLabelAttribute = displayLabelAttribute;
175 	}
176 
177 }