1 /* 2 * Copyright 2011 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 1.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/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 implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.krad.uif.field; 17 18 import org.apache.commons.lang.StringUtils; 19 import org.kuali.rice.krad.datadictionary.AttributeDefinition; 20 import org.kuali.rice.krad.uif.control.MultiValueControlBase; 21 import org.kuali.rice.krad.uif.control.RadioGroupControl; 22 import org.kuali.rice.krad.uif.control.TextControl; 23 import org.kuali.rice.krad.uif.util.LookupInquiryUtils; 24 import org.kuali.rice.krad.util.KRADConstants; 25 import org.kuali.rice.krad.util.KRADPropertyConstants; 26 27 /** 28 * 29 * @author Kuali Rice Team (rice.collab@kuali.org) 30 */ 31 public class LookupCriteriaAttributeField extends AttributeField { 32 33 protected boolean treatWildcardsAndOperatorsAsLiteral = false; 34 35 /** 36 * @return the treatWildcardsAndOperatorsAsLiteral 37 */ 38 public boolean isTreatWildcardsAndOperatorsAsLiteral() { 39 return this.treatWildcardsAndOperatorsAsLiteral; 40 } 41 42 /** 43 * @param treatWildcardsAndOperatorsAsLiteral the treatWildcardsAndOperatorsAsLiteral to set 44 */ 45 public void setTreatWildcardsAndOperatorsAsLiteral(boolean treatWildcardsAndOperatorsAsLiteral) { 46 this.treatWildcardsAndOperatorsAsLiteral = treatWildcardsAndOperatorsAsLiteral; 47 } 48 49 /** 50 * Defaults the properties of the <code>AttributeField</code> to the corresponding properties of its <code>AttributeDefinition</code> retrieved from the dictionary (if such an entry exists). If 51 * the field already contains a value for a property, the definitions value is not used. 52 * 53 * @param attributeDefinition 54 * - AttributeDefinition instance the property values should be copied from 55 */ 56 @Override 57 public void copyFromAttributeDefinition(AttributeDefinition attributeDefinition) { 58 LookupInquiryUtils.initializeAttributeFieldFromAttributeDefinition(this, attributeDefinition); 59 60 // security 61 if (getAttributeSecurity() == null) { 62 //setAttributeSecurity(attributeDefinition.getAttribute== null) { 63 return; 64 } 65 66 // set field size to 30 if not already set 67 if ( (TextControl.class.isAssignableFrom(getControl().getClass())) && (((TextControl)getControl()).getSize() <= 0) ) { 68 ((TextControl)getControl()).setSize(30); 69 } 70 71 // overwrite maxLength to allow for wildcards and ranges in the select, but only if it's not a mulitselect box, because maxLength determines the # of entries 72 if ((getMaxLength() == null) && (!MultiValueControlBase.class.isAssignableFrom(getControl().getClass()))) { 73 setMaxLength(100); 74 } 75 76 if (StringUtils.isEmpty(getDefaultValue())) { 77 // if the attrib name is "active", and BO is Inactivatable, then set the default value to Y 78 // TODO delyea: this used to take into account if the class was Inactivateable: 79 // Inactivateable.class.isAssignableFrom(dataObjectClass) 80 // TODO delyea: check to see if the propertyName needs to be checked for instances where getPropertyName() returns "bo.active" 81 if ((StringUtils.equals(getPropertyName(), KRADPropertyConstants.ACTIVE)) && (RadioGroupControl.class.isAssignableFrom(getControl().getClass()))) { 82 setDefaultValue(KRADConstants.YES_INDICATOR_VALUE); 83 } 84 } 85 86 /* 87 * TODO delyea: FieldUtils.createAndPopulateFieldsForLookup used to allow for a set of property names to be passed in via the URL 88 * parameters of the lookup url to set fields as 'read only' 89 */ 90 91 } 92 93 }