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 }