001 /** 002 * Copyright 2005-2012 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 */ 016 package org.kuali.rice.krad.datadictionary; 017 018 import org.apache.commons.lang.StringUtils; 019 import org.kuali.rice.krad.datadictionary.validation.capability.ExistenceConstrainable; 020 021 /** 022 * Common class for attribute definitions in the DataDictionary, which contains 023 * information relating to the display, validation, and general maintenance of a 024 * specific attribute of an entry. An attribute can be a simple or complex attribute. 025 * 026 */ 027 public abstract class AttributeDefinitionBase extends DataDictionaryDefinitionBase implements ExistenceConstrainable{ 028 029 protected String name; 030 031 protected String label; 032 protected String shortLabel; 033 protected String displayLabelAttribute; 034 035 protected String messageKey; 036 protected String constraintText; 037 protected String summary; 038 protected String description; 039 040 protected Boolean required = Boolean.FALSE; 041 042 public String getName() { 043 return name; 044 } 045 046 /* 047 * name = name of attribute 048 */ 049 public void setName(String name) { 050 if (StringUtils.isBlank(name)) { 051 throw new IllegalArgumentException("invalid (blank) name"); 052 } 053 this.name = name; 054 } 055 056 public String getLabel() { 057 return label; 058 } 059 060 /** 061 * The label element is the field or collection name that will be shown on 062 * inquiry and maintenance screens. This will be overridden by presence of 063 * displayLabelAttribute element. 064 */ 065 public void setLabel(String label) { 066 if (StringUtils.isBlank(label)) { 067 throw new IllegalArgumentException("invalid (blank) label"); 068 } 069 this.label = label; 070 } 071 072 /** 073 * @return the shortLabel, or the label if no shortLabel has been set 074 */ 075 public String getShortLabel() { 076 return (shortLabel != null) ? shortLabel : getLabel(); 077 } 078 079 /** 080 * @return the shortLabel directly, without substituting in the label 081 */ 082 protected String getDirectShortLabel() { 083 return shortLabel; 084 } 085 086 /** 087 * The shortLabel element is the field or collection name that will be used 088 * in applications when a shorter name (than the label element) is required. 089 * This will be overridden by presence of displayLabelAttribute element. 090 */ 091 public void setShortLabel(String shortLabel) { 092 if (StringUtils.isBlank(shortLabel)) { 093 throw new IllegalArgumentException("invalid (blank) shortLabel"); 094 } 095 this.shortLabel = shortLabel; 096 } 097 098 /** 099 * 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 }