View Javadoc

1   /*
2    * Copyright 2007 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.kns.web.ui;
17  
18  import java.util.ArrayList;
19  import java.util.HashMap;
20  import java.util.HashSet;
21  import java.util.Iterator;
22  import java.util.List;
23  import java.util.Map;
24  import java.util.Set;
25  
26  import org.apache.commons.lang.StringUtils;
27  import org.kuali.rice.core.util.KeyLabelPair;
28  import org.kuali.rice.kew.docsearch.SearchableAttribute;
29  import org.kuali.rice.kns.datadictionary.mask.Mask;
30  import org.kuali.rice.kns.lookup.HtmlData;
31  import org.kuali.rice.kns.util.KNSConstants;
32  import org.kuali.rice.kns.util.KNSUtils;
33  import org.kuali.rice.kns.util.ObjectUtils;
34  import org.kuali.rice.kns.web.format.Formatter;
35  
36  /**
37   * Represents a Field (form field or read only)
38   * 
39   * @author Kuali Rice Team (rice.collab@kuali.org)
40   */
41  public class Field implements java.io.Serializable, PropertyRenderingConfigElement {
42      private static final long serialVersionUID = 6549897986355019202L;
43      public static final int DEFAULT_MAXLENGTH = 30;
44      public static final int DEFAULT_SIZE = 30;
45  
46      public static final String HIDDEN = "hidden";
47      public static final String TEXT = "text";
48      public static final String DROPDOWN = "dropdown";
49      public static final String MULTIBOX = "multibox";
50      public static final String MULTISELECT = "multiselect";
51      public static final String RADIO = "radio";
52      public static final String QUICKFINDER = "quickFinder";
53      public static final String LOOKUP_RESULT_ONLY = "lookupresultonly";
54      public static final String DROPDOWN_REFRESH = "dropdown_refresh";
55      public static final String DROPDOWN_SCRIPT = "dropdown_script";
56      public static final String DROPDOWN_APC = "dropdown_apc";
57      public static final String CHECKBOX = "checkbox";
58      public static final String CURRENCY = "currency";
59      public static final String TEXT_AREA = "textarea";
60      public static final String FILE = "file";
61      public static final String IMAGE_SUBMIT = "imagesubmit";
62      public static final String CONTAINER = "container";
63      public static final String KUALIUSER = "kualiuser";
64      public static final String READONLY = "readOnly";
65      public static final String EDITABLE = "editable";
66      public static final String LOOKUP_HIDDEN = "lookuphidden";
67      public static final String LOOKUP_READONLY = "lookupreadonly";
68      public static final String WORKFLOW_WORKGROUP = "workflowworkgroup";
69      public static final String MASKED = "masked";
70      public static final String PARTIALLY_MASKED = "partiallyMasked";
71  
72      public static final String SUB_SECTION_SEPARATOR = "subSectionSeparator";
73      public static final String BLANK_SPACE = "blankSpace";
74      public static final String BUTTON = "button";
75      public static final String LINK = "link";
76      
77      //#START MOVED FROM DOC SEARCH RELATED
78      public static final String DATEPICKER = "datePicker";
79      
80      public static final Set<String> SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES;
81      public static final Set<String> MULTI_VALUE_FIELD_TYPES = new HashSet<String>();
82      static {
83      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES = new HashSet<String>();
84      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(HIDDEN);
85      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(TEXT);
86      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(CURRENCY);
87      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(DROPDOWN);
88      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(RADIO);
89      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(DROPDOWN_REFRESH);
90      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(MULTIBOX);
91      	SEARCH_RESULT_DISPLAYABLE_FIELD_TYPES.add(MULTISELECT);
92  
93      	MULTI_VALUE_FIELD_TYPES.add(MULTIBOX);
94      	MULTI_VALUE_FIELD_TYPES.add(MULTISELECT);
95      }
96      
97      private boolean isIndexedForSearch = true;
98      
99      // following values used in ranged searches
100     private String mainFieldLabel;  // the fieldLabel holds things like "From" and "Ending" and this field holds things like "Total Amount"
101     private Boolean rangeFieldInclusive;
102     private boolean memberOfRange = false;
103     private boolean allowInlineRange = false;
104 
105     //FIXME: these next two are iffy, need to reevaluate whether really used by doc search
106     // below boolean used by criteria processor to hide field without removing classic 'field type' variable
107     private boolean hidden = false;
108 
109     // this field is currently a hack to allow us to indicate whether or not the column of data associated
110     // with a particular field will be visible in the result set of a search or not
111     private boolean isColumnVisible = true;
112     
113     //FIXME: this one definitely seems iffy, could be confused with regular fieldType, is there another better name or can this go away?
114     private String fieldDataType = SearchableAttribute.DEFAULT_SEARCHABLE_ATTRIBUTE_TYPE_NAME;
115     
116     //used by multibox/select etc
117     private String[] propertyValues;
118     
119     //extra field to skip blank option value (for route node)
120     private boolean skipBlankValidValue = false;
121     
122     //#END DOC SEARCH RELATED
123     
124     private String fieldType;
125 
126     private String fieldLabel;
127     private String fieldHelpUrl;
128     private String propertyName; 
129     private String propertyValue;
130 
131     private String alternateDisplayPropertyName;
132     private String alternateDisplayPropertyValue;
133     private String additionalDisplayPropertyName;
134     private String additionalDisplayPropertyValue;  
135 
136     private List<KeyLabelPair> fieldValidValues;
137     private String quickFinderClassNameImpl;
138     private String baseLookupUrl;
139 
140     private boolean clear;
141     private boolean dateField;
142     private String fieldConversions;
143     private boolean fieldRequired;
144 
145     private List fieldInactiveValidValues;
146     private Formatter formatter;
147     private boolean highlightField;
148     private boolean isReadOnly;
149     private String lookupParameters;
150     private int maxLength;
151 
152     private HtmlData inquiryURL;
153     private String propertyPrefix;
154     private int size;
155     private boolean upperCase;
156     private int rows;
157     private int cols;
158     private List<Row> containerRows;
159     private String fieldHelpSummary;
160     private String businessObjectClassName;
161     private String fieldHelpName;
162     private String script;
163     private String universalIdAttributeName;
164     private String universalIdValue;
165     private String userIdAttributeName;
166     private String personNameAttributeName;
167     private String personNameValue;
168     private String defaultValue = KNSConstants.EMPTY_STRING;
169     private boolean keyField;
170     private String displayEditMode;
171     private Mask displayMask;
172     private String displayMaskValue;
173     private String encryptedValue;
174     private boolean secure;
175     private String webOnBlurHandler;
176     private String webOnBlurHandlerCallback;
177     protected List<String> webUILeaveFieldFunctionParameters = new ArrayList<String>();
178     private String styleClass;
179     private int formattedMaxLength;
180     private String containerName;
181     private String containerElementName;
182     private List<Field> containerDisplayFields;
183     private boolean isDatePicker;
184     private boolean ranged;
185 
186 	private boolean expandedTextArea;
187     private String referencesToRefresh;
188     private int numberOfColumnsForCollection;
189     public String cellAlign;
190     private String inquiryParameters;
191     private boolean fieldDirectInquiryEnabled;
192 
193     public boolean fieldLevelHelpEnabled;
194 
195     public boolean fieldLevelHelpDisabled;
196     public String fieldLevelHelpUrl;
197 
198     private String imageSrc;
199     private String target;
200     private String hrefText;
201     
202     private boolean triggerOnChange;
203 
204 
205     /**
206      * No-args constructor
207      */
208     public Field() {
209         this.fieldLevelHelpEnabled = false;
210         this.triggerOnChange = false;
211     }
212 
213     /**
214      * Constructor that creates an instance of this class to support inquirable
215      *
216      * @param propertyName property attribute of the bean
217      * @param fieldLabel label of the display field
218      */
219     public Field(String propertyName, String fieldLabel) {
220         this.propertyName = propertyName;
221         this.fieldLabel = fieldLabel;
222         this.isReadOnly = false;
223         this.upperCase = false;
224         this.keyField = false;
225         this.secure = false;
226         this.fieldLevelHelpEnabled = false;
227         this.triggerOnChange = false;
228     }
229 
230     /**
231      * Constructor that creates an instance of this class.
232      *
233      * @param fieldLabel label of the search criteria field
234      * @param fieldHelpUrl url of a help link to help instructions
235      * @param fieldType type of input field for this search criteria
236      * @param clear clear action flag
237      * @param propertyName name of the bean attribute for this search criteria
238      * @param propertyValue value of the bean attribute
239      * @param fieldRequired flag to denote if field is required
240      * @param dateField falg to denot if field should be validated as a date object
241      * @param fieldValidValues used for drop down list
242      * @param quickFinderClassNameImpl class name to transfer control to quick finder
243      */
244     public Field(String fieldLabel, String fieldHelpUrl, String fieldType, boolean clear, String propertyName, String propertyValue, boolean fieldRequired, boolean dateField, List<KeyLabelPair> fieldValidValues, String quickFinderClassNameImpl) {
245         this.dateField = dateField;
246         this.fieldLabel = fieldLabel;
247         this.fieldHelpUrl = fieldHelpUrl;
248         this.fieldType = fieldType;
249         this.fieldRequired = fieldRequired;
250         this.clear = clear;
251         this.propertyName = propertyName;
252         this.propertyValue = propertyValue;
253         this.fieldValidValues = fieldValidValues;
254         this.quickFinderClassNameImpl = quickFinderClassNameImpl;
255         this.size = DEFAULT_SIZE;
256         this.maxLength = DEFAULT_MAXLENGTH;
257         this.isReadOnly = false;
258         this.upperCase = false;
259         this.keyField = false;
260         this.fieldLevelHelpEnabled = false;
261         this.triggerOnChange = false;
262     }
263 
264     /**
265      * Constructor that creates an instance of this class.
266      *
267      * @param fieldLabel label of the search criteria field
268      * @param fieldHelpUrl url of a help link to help instructions
269      * @param fieldType type of input field for this search criteria
270      * @param clear clear action flag
271      * @param propertyName name of the bean attribute for this search criteria
272      * @param propertyValue value of the bean attribute
273      * @param fieldRequired flag to denote if field is required
274      * @param dateField falg to denot if field should be validated as a date object
275      * @param fieldValidValues used for drop down list
276      * @param quickFinderClassNameImpl class name to transfer control to quick finder
277      * @param size size of the input field
278      * @param maxLength maxLength of the input field
279      */
280     public Field(String fieldLabel, String fieldHelpUrl, String fieldType, boolean clear, String propertyName, String propertyValue, boolean fieldRequired, boolean dateField, List<KeyLabelPair> fieldValidValues, String quickFinderClassNameImpl, int size, int maxLength) {
281         this.dateField = dateField;
282         this.fieldLabel = fieldLabel;
283         this.fieldHelpUrl = fieldHelpUrl;
284         this.fieldType = fieldType;
285         this.fieldRequired = fieldRequired;
286         this.clear = clear;
287         this.propertyName = propertyName;
288         this.propertyValue = propertyValue;
289         this.fieldValidValues = fieldValidValues;
290         this.upperCase = false;
291         this.quickFinderClassNameImpl = quickFinderClassNameImpl;
292         if (size <= 0) {
293             this.size = DEFAULT_SIZE;
294         }
295         else {
296             this.size = size;
297         }
298         if (size <= 0) {
299             this.size = DEFAULT_MAXLENGTH;
300         }
301         else {
302             this.maxLength = maxLength;
303         }
304         this.isReadOnly = false;
305         this.keyField = false;
306         this.fieldLevelHelpEnabled = false;
307         this.triggerOnChange = false;
308     }
309 
310 
311     /**
312      * Helper method to determine if this is an INPUT type field
313      *
314      * @param fieldType
315      */
316     public static boolean isInputField(String fieldType) {
317         if (StringUtils.isBlank(fieldType)) {
318             return false;
319         }
320         // JJH: Would it be good to create a InputField Set and test to see if the fieldType exists in the set?
321         if (fieldType.equals(Field.DROPDOWN) || fieldType.equals(Field.DROPDOWN_REFRESH) || fieldType.equals(Field.TEXT) || fieldType.equals(Field.RADIO) || fieldType.equals(Field.CURRENCY) || fieldType.equals(Field.KUALIUSER) || fieldType.equals(Field.DROPDOWN_SCRIPT) || fieldType.equals(Field.DROPDOWN_APC) || fieldType.equals(LOOKUP_READONLY) || fieldType.equals(TEXT_AREA)) {
322             return true;
323         }
324         else {
325             return false;
326         }
327 
328     }
329 
330     /**
331      * @return the imageSrc
332      */
333     public String getImageSrc() {
334         return this.imageSrc;
335     }
336 
337     /**
338      * @param imageSrc the imageSrc to set
339      */
340     public void setImageSrc(String imageSrc) {
341         this.imageSrc = imageSrc;
342     }
343 
344 
345     /**
346      * @return the target
347      */
348     public String getTarget() {
349         return this.target;
350     }
351 
352     /**
353      * @param target the target to set
354      */
355     public void setTarget(String target) {
356         this.target = target;
357     }
358 
359     /**
360      * @return the hrefText
361      */
362     public String getHrefText() {
363         return this.hrefText;
364     }
365 
366     /**
367      * @param hrefText the hrefText to set
368      */
369     public void setHrefText(String hrefText) {
370         this.hrefText = hrefText;
371     }
372 
373     /**
374      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, the DD defined objectLabel of the class on which a multiple value lookup is performed.
375      * The user friendly name
376      */
377     private String multipleValueLookupClassLabel;
378     /**
379      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the class to perform a lookup upon
380      */
381     private String multipleValueLookupClassName;
382     /**
383      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the name of the collection on the doc on which the
384      * MV lookup is performed
385      */
386     private String multipleValueLookedUpCollectionName;
387 
388     public HtmlData getInquiryURL() {
389         return inquiryURL;
390     }
391 
392     public void setInquiryURL(HtmlData propertyURL) {
393         this.inquiryURL = propertyURL;
394     }
395 
396     public int getNumberOfColumnsForCollection() {
397         return numberOfColumnsForCollection;
398     }
399 
400     public void setNumberOfColumnsForCollection(int numberOfColumnsForCollection) {
401         this.numberOfColumnsForCollection = numberOfColumnsForCollection;
402     }
403 
404     public boolean isDatePicker() {
405         return isDatePicker;
406     }
407 
408     public void setDatePicker(boolean isDatePicker) {
409         this.isDatePicker = isDatePicker;
410     }
411     
412     public boolean isRanged() {
413 		return this.ranged;
414 	}
415 
416 	public void setRanged(boolean ranged) {
417 		this.ranged = ranged;
418 	}
419 
420 	public boolean isExpandedTextArea() {
421         return expandedTextArea;
422     }
423 
424     public void setExpandedTextArea(boolean expandedTextArea) {
425         this.expandedTextArea = expandedTextArea;
426     }
427 
428     /**
429      * @return Returns the defaultValue.
430      */
431     public String getDefaultValue() {
432         return defaultValue;
433     }
434 
435     /**
436      * @param defaultValue The defaultValue to set.
437      */
438     public void setDefaultValue(String defaultValue) {
439         this.defaultValue = defaultValue;
440     }
441 
442     public boolean containsBOData() {
443         if (StringUtils.isNotBlank(this.propertyName) ) {
444             return true;
445         } else {
446             return false;
447         }
448     }
449     /**
450      * @return Returns the CHECKBOX.
451      */
452     public String getCHECKBOX() {
453         return CHECKBOX;
454     }
455 
456     /**
457      * @return Returns the CONTAINER.
458      */
459     public String getCONTAINER() {
460         return CONTAINER;
461     }
462 
463     /**
464      * @return Returns the dROPDOWN.
465      */
466     public String getDROPDOWN() {
467         return DROPDOWN;
468     }
469 
470     /**
471      * @return Returns the TEXT_AREA.
472      */
473     public String getTEXT_AREA() {
474         return TEXT_AREA;
475     }
476 
477     /**
478      * @return Returns the DROPDOWN_REFRESH
479      */
480     public String getDROPDOWN_REFRESH() {
481         return DROPDOWN_REFRESH;
482     }
483 
484     /**
485      * @return Returns DROPDOWN_SCRIPT
486      */
487     public String getDROPDOWN_SCRIPT() {
488         return DROPDOWN_SCRIPT;
489     }
490 
491     /**
492      * @return Returns DROPDOWN_APC
493      */
494     public String getDROPDOWN_APC() {
495         return DROPDOWN_APC;
496     }
497 
498     /**
499      * @return Returns DROPDOWN_APC
500      */
501     public String getMULTISELECT() {
502         return MULTISELECT;
503     }
504     
505     /**
506      *
507      * @return Returns KUALIUSER
508      */
509     public String getKUALIUSER() {
510         return KUALIUSER;
511     }
512 
513     /**
514      * @return Returns the FILE.
515      */
516     public String getFILE() {
517         return FILE;
518     }
519 
520     /**
521      *
522      * @return Returns SUB_SECTION_SEPARATOR
523      */
524     public String getSUB_SECTION_SEPARATOR() {
525         return SUB_SECTION_SEPARATOR;
526     }
527 
528     /**
529      *
530      * @return Returns BLANK_SPACE
531      */
532     public String getBLANK_SPACE() {
533         return BLANK_SPACE;
534     }
535 
536     /**
537 	 * @return the BUTTON
538 	 */
539 	public String getBUTTON() {
540 		return BUTTON;
541 	}
542 
543 	/**
544 	 * @return the LINK
545 	 */
546 	public String getLINK() {
547 		return LINK;
548 	}
549 
550 
551     /**
552      * @return Returns the fieldConversions.
553      */
554     public String getFieldConversions() {
555         return fieldConversions;
556     }
557 
558 
559     public Map<String, String> getFieldConversionMap() {
560     	Map<String, String> fieldConversionMap = new HashMap<String, String>();
561     	if (!StringUtils.isBlank(fieldConversions)) {
562     		String[] splitFieldConversions = fieldConversions.split(KNSConstants.FIELD_CONVERSIONS_SEPARATOR);
563     		for (String fieldConversion : splitFieldConversions) {
564     			if (!StringUtils.isBlank(fieldConversion)) {
565     				String[] splitFieldConversion = fieldConversion.split(KNSConstants.FIELD_CONVERSION_PAIR_SEPARATOR, 2);
566     				String originalFieldName = splitFieldConversion[0];
567     				String convertedFieldName = "";
568     				if (splitFieldConversion.length > 1) {
569     					convertedFieldName = splitFieldConversion[1];
570     				}
571     				fieldConversionMap.put(originalFieldName, convertedFieldName);
572     			}
573     		}
574     	}
575     	return fieldConversionMap;
576     }
577 
578 
579     /**
580      * @return Returns the fieldHelpUrl.
581      */
582     public String getFieldHelpUrl() {
583         return fieldHelpUrl;
584     }
585 
586     /**
587      * @return Returns the fieldLabel.
588      */
589     public String getFieldLabel() {
590         return fieldLabel;
591     }
592 
593     /**
594      * @return Returns the fieldType.
595      */
596     public String getFieldType() {
597         return fieldType;
598     }
599 
600     /**
601      * @return Returns the fieldValidValues.
602      */
603     public List<KeyLabelPair> getFieldValidValues() {
604         return fieldValidValues;
605     }
606 
607 
608     /**
609      * @return Returns the formatter.
610      */
611     public Formatter getFormatter() {
612         return formatter;
613     }
614 
615     /**
616      * @return Returns the hIDDEN.
617      */
618     public String getHIDDEN() {
619         return HIDDEN;
620     }
621 
622 
623     /**
624      * @return Returns the lookupParameters.
625      */
626     public String getLookupParameters() {
627         return lookupParameters;
628     }
629 
630     /**
631      * @return Returns the maxLength.
632      */
633     public int getMaxLength() {
634         return maxLength;
635     }
636 
637     /**
638      * @return Returns the propertyName.
639      */
640     public String getPropertyName() {
641         return propertyName;
642     }
643 
644     /**
645      * @return Returns the propertyValue.
646      */
647     public String getPropertyValue() {
648         if (propertyValue == null) {
649             propertyValue = KNSConstants.EMPTY_STRING;
650         }
651 
652         return propertyValue;
653     }
654 
655 
656     /**
657      * Gets the propertyPrefix attribute.
658      *
659      * @return Returns the propertyPrefix.
660      */
661     public String getPropertyPrefix() {
662         return propertyPrefix;
663     }
664 
665     /**
666      * Sets the propertyPrefix attribute value.
667      *
668      * @param propertyPrefix The propertyPrefix to set.
669      */
670     public void setPropertyPrefix(String propertyPrefix) {
671         this.propertyPrefix = propertyPrefix;
672     }
673 
674     /**
675      * @return Returns the qUICKFINDER.
676      */
677     public String getQUICKFINDER() {
678         return QUICKFINDER;
679     }
680 
681     /**
682      * @return Returns the quickFinderClassNameImpl.
683      */
684     public String getQuickFinderClassNameImpl() {
685         return quickFinderClassNameImpl;
686     }
687 
688     /**
689      * @return Returns the rADIO.
690      */
691     public String getRADIO() {
692         return RADIO;
693     }
694 
695     /**
696      * @return Returns the size.
697      */
698     public int getSize() {
699         return size;
700     }
701 
702     /**
703      * @return Returns the TEXT.
704      */
705     public String getTEXT() {
706         return TEXT;
707     }
708 
709     public String getCURRENCY() {
710         return CURRENCY;
711     }
712 
713     /**
714      * @return Returns the iMAGE_SUBMIT.
715      */
716     public String getIMAGE_SUBMIT() {
717         return IMAGE_SUBMIT;
718     }
719 
720     /**
721      * @return Returns the LOOKUP_HIDDEN.
722      */
723     public String getLOOKUP_HIDDEN(){
724         return LOOKUP_HIDDEN;
725     }
726 
727     /**
728      * @return Returns the LOOKUP_READONLY.
729      */
730     public String getLOOKUP_READONLY(){
731         return LOOKUP_READONLY;
732     }
733 
734     /**
735      * @return Returns the WORKFLOW_WORKGROUP.
736      */
737     public String getWORKFLOW_WORKGROUP(){
738         return WORKFLOW_WORKGROUP;
739     }
740 
741 
742     /**
743      * @return Returns the clear.
744      */
745     public boolean isClear() {
746         return clear;
747     }
748 
749     /**
750      * @return Returns the dateField.
751      */
752     public boolean isDateField() {
753         return dateField;
754     }
755 
756     /**
757      * @return Returns the fieldRequired.
758      */
759     public boolean isFieldRequired() {
760         return fieldRequired;
761     }
762 
763 
764     /**
765      * @return Returns the highlightField.
766      */
767     public boolean isHighlightField() {
768         return highlightField;
769     }
770 
771     /**
772      * @return Returns the isReadOnly.
773      */
774     public boolean isReadOnly() {
775         return isReadOnly;
776     }
777 
778     /**
779      * @return Returns the upperCase.
780      */
781     public boolean isUpperCase() {
782         return upperCase;
783     }
784 
785     /**
786      * @param clear The clear to set.
787      */
788     public void setClear(boolean clear) {
789         this.clear = clear;
790     }
791 
792     /**
793      * @param dateField The dateField to set.
794      */
795     public void setDateField(boolean dateField) {
796         this.dateField = dateField;
797     }
798 
799     /**
800      * @param fieldConversions The fieldConversions to set.
801      */
802     public void setFieldConversions(Map fieldConversionsMap) {
803         // TODO: should use a StringBuilder
804         String fieldConversionString = "";
805         for (Iterator iter = fieldConversionsMap.keySet().iterator(); iter.hasNext();) {
806             String field = (String) iter.next();
807             String mappedField = (String) fieldConversionsMap.get(field);
808             fieldConversionString += field + ":" + mappedField;
809             if (iter.hasNext()) {
810                 fieldConversionString += ",";
811             }
812         }
813         setFieldConversions(fieldConversionString);
814     }
815 
816 
817     /**
818      * @param fieldConversions The fieldConversions to set.
819      */
820     public void setFieldConversions(String fieldConversions) {
821         this.fieldConversions = fieldConversions;
822     }
823 
824     public void appendFieldConversions(String fieldConversions) {
825         if (StringUtils.isNotBlank(fieldConversions)) {
826             this.fieldConversions = this.fieldConversions + "," + fieldConversions;
827         }
828     }
829 
830     /**
831      * @param fieldHelpUrl The fieldHelpUrl to set.
832      */
833     public void setFieldHelpUrl(String fieldHelpUrl) {
834         this.fieldHelpUrl = fieldHelpUrl;
835     }
836 
837     /**
838      * @param fieldLabel The fieldLabel to set.
839      */
840     public void setFieldLabel(String fieldLabel) {
841         this.fieldLabel = fieldLabel;
842     }
843 
844     /**
845      * @param fieldRequired The fieldRequired to set.
846      */
847     public void setFieldRequired(boolean fieldRequired) {
848         this.fieldRequired = fieldRequired;
849     }
850 
851     /**
852      * @param fieldType The fieldType to set.
853      */
854     public void setFieldType(String fieldType) {
855         this.fieldType = fieldType;
856     }
857 
858     /**
859      * @param fieldValidValues The fieldValidValues to set.
860      */
861     public void setFieldValidValues(List<KeyLabelPair> fieldValidValues) {
862     	this.fieldValidValues = fieldValidValues;
863     }
864 
865     public boolean getHasBlankValidValue() {
866     	for ( KeyLabelPair keyLabel : (List<KeyLabelPair>)fieldValidValues ) {
867             if ( keyLabel.getKey().equals( "" ) ) {
868             	return true;
869             }
870         }
871     	return false;
872     }
873 
874     /**
875      * @param formatter The formatter to set.
876      */
877     public void setFormatter(Formatter formatter) {
878         this.formatter = formatter;
879     }
880 
881 
882     /**
883      * @param highlightField The highlightField to set.
884      */
885     public void setHighlightField(boolean highlightField) {
886         this.highlightField = highlightField;
887     }
888 
889     /**
890      * @param lookupParameters The lookupParameters to set.
891      */
892     public void setLookupParameters(Map lookupParametersMap) {
893         String lookupParameterString = "";
894         for (Iterator iter = lookupParametersMap.keySet().iterator(); iter.hasNext();) {
895             String field = (String) iter.next();
896             String mappedField = (String) lookupParametersMap.get(field);
897             lookupParameterString += field + ":" + mappedField;
898             if (iter.hasNext()) {
899                 lookupParameterString += ",";
900             }
901         }
902         setLookupParameters(lookupParameterString);
903     }
904 
905 
906     /**
907      * @param lookupParameters The lookupParameters to set.
908      */
909     public void setLookupParameters(String lookupParameters) {
910         this.lookupParameters = lookupParameters;
911     }
912 
913     /**
914      *
915      * This method appends the passed-in lookupParameters to the existing
916      *
917      * @param lookupParameters
918      */
919     public void appendLookupParameters(String lookupParameters) {
920         if (StringUtils.isNotBlank(lookupParameters)) {
921             if (StringUtils.isBlank(this.lookupParameters)) {
922                 this.lookupParameters = lookupParameters;
923             }
924             else {
925                 this.lookupParameters = this.lookupParameters + "," + lookupParameters;
926             }
927         }
928     }
929 
930     /**
931      * @param maxLength The maxLength to set.
932      */
933     public void setMaxLength(int maxLength) {
934         this.maxLength = maxLength;
935     }
936 
937     /**
938      * @param propertyName The propertyName to set.
939      */
940     public void setPropertyName(String propertyName) {
941         String newPropertyName = KNSConstants.EMPTY_STRING;
942         if (propertyName != null) {
943             newPropertyName = propertyName;
944         }
945         this.propertyName = newPropertyName;
946     }
947 
948     /**
949      * @param propertyValue The propertyValue to set.
950      */
951     public void setPropertyValue(Object propertyValue) {
952         String newPropertyValue = ObjectUtils.formatPropertyValue(propertyValue);
953 
954             if (isUpperCase()) {
955                 newPropertyValue = newPropertyValue.toUpperCase();
956             }
957 
958         this.propertyValue = newPropertyValue;
959     }
960 
961     /**
962      * @param quickFinderClassNameImpl The quickFinderClassNameImpl to set.
963      */
964     public void setQuickFinderClassNameImpl(String quickFinderClassNameImpl) {
965         this.quickFinderClassNameImpl = quickFinderClassNameImpl;
966     }
967 
968     /**
969      * @param isReadOnly The isReadOnly to set.
970      */
971     public void setReadOnly(boolean isReadOnly) {
972         this.isReadOnly = isReadOnly;
973     }
974 
975     /**
976      * @param size The size to set.
977      */
978     public void setSize(int size) {
979         this.size = size;
980     }
981 
982     /**
983      * @param upperCase The upperCase to set.
984      */
985     public void setUpperCase(boolean upperCase) {
986         this.upperCase = upperCase;
987     }
988 
989 
990     /**
991      * @return Returns the cols.
992      */
993     public int getCols() {
994         return cols;
995     }
996 
997 
998     /**
999      * @param cols The cols to set.
1000      */
1001     public void setCols(int cols) {
1002         this.cols = cols;
1003     }
1004 
1005 
1006     /**
1007      * @return Returns the rows.
1008      */
1009     public int getRows() {
1010         return rows;
1011     }
1012 
1013 
1014     /**
1015      * @param rows The rows to set.
1016      */
1017     public void setRows(int rows) {
1018         this.rows = rows;
1019     }
1020 
1021 
1022     /**
1023      * @return Returns the containerRows.
1024      */
1025     public List<Row> getContainerRows() {
1026         return containerRows;
1027     }
1028 
1029 
1030     /**
1031      * @param containerRows The containerRows to set.
1032      */
1033     public void setContainerRows(List<Row> containerRows) {
1034         this.containerRows = containerRows;
1035     }
1036 
1037 
1038     /**
1039      * @return Returns the businessObjectClassName.
1040      */
1041     public String getBusinessObjectClassName() {
1042         return businessObjectClassName;
1043     }
1044 
1045 
1046     /**
1047      * @param businessObjectClassName The businessObjectClassName to set.
1048      */
1049     public void setBusinessObjectClassName(String businessObjectClassName) {
1050         this.businessObjectClassName = businessObjectClassName;
1051     }
1052 
1053 
1054     /**
1055      * @return Returns the fieldHelpSummary.
1056      */
1057     public String getFieldHelpSummary() {
1058         return fieldHelpSummary;
1059     }
1060 
1061 
1062     /**
1063      * @param fieldHelpSummary The fieldHelpSummary to set.
1064      */
1065     public void setFieldHelpSummary(String fieldHelpSummary) {
1066         this.fieldHelpSummary = fieldHelpSummary;
1067     }
1068 
1069 
1070     /**
1071      * @return Returns the fieldHelpName.
1072      */
1073     public String getFieldHelpName() {
1074         return fieldHelpName;
1075     }
1076 
1077 
1078     /**
1079      * @param fieldHelpName The fieldHelpName to set.
1080      */
1081     public void setFieldHelpName(String fieldHelpName) {
1082         this.fieldHelpName = fieldHelpName;
1083     }
1084 
1085     /**
1086      * Gets the script attribute.
1087      *
1088      * @return Returns the script.
1089      */
1090     public String getScript() {
1091         return script;
1092     }
1093 
1094     /**
1095      * Sets the script attribute value.
1096      *
1097      * @param script The script to set.
1098      */
1099     public void setScript(String script) {
1100         this.script = script;
1101     }
1102 
1103     /**
1104      * Gets the personNameAttributeName attribute.
1105      *
1106      * @return Returns the personNameAttributeName.
1107      */
1108     public String getPersonNameAttributeName() {
1109         return personNameAttributeName;
1110     }
1111 
1112     /**
1113      * Sets the personNameAttributeName attribute value.
1114      *
1115      * @param personNameAttributeName The personNameAttributeName to set.
1116      */
1117     public void setPersonNameAttributeName(String personNameAttributeName) {
1118         this.personNameAttributeName = personNameAttributeName;
1119     }
1120 
1121     /**
1122      * Gets the universalIdAttributeName attribute.
1123      *
1124      * @return Returns the universalIdAttributeName.
1125      */
1126     public String getUniversalIdAttributeName() {
1127         return universalIdAttributeName;
1128     }
1129 
1130     /**
1131      * Sets the universalIdAttributeName attribute value.
1132      *
1133      * @param universalIdAttributeName The universalIdAttributeName to set.
1134      */
1135     public void setUniversalIdAttributeName(String universalIdAttributeName) {
1136         this.universalIdAttributeName = universalIdAttributeName;
1137     }
1138 
1139     /**
1140      * Gets the userIdAttributeName attribute.
1141      *
1142      * @return Returns the userIdAttributeName.
1143      */
1144     public String getUserIdAttributeName() {
1145         return userIdAttributeName;
1146     }
1147 
1148     /**
1149      * Sets the userIdAttributeName attribute value.
1150      *
1151      * @param userIdAttributeName The userIdAttributeName to set.
1152      */
1153     public void setUserIdAttributeName(String userIdAttributeName) {
1154         this.userIdAttributeName = userIdAttributeName;
1155     }
1156 
1157     /**
1158      * Gets the keyField attribute.
1159      *
1160      * @return Returns the keyField.
1161      */
1162     public boolean isKeyField() {
1163         return keyField;
1164     }
1165 
1166     /**
1167      * Sets the keyField attribute value.
1168      *
1169      * @param keyField The keyField to set.
1170      */
1171     public void setKeyField(boolean keyField) {
1172         this.keyField = keyField;
1173     }
1174 
1175 
1176     /**
1177      * Gets the displayEditMode attribute.
1178      *
1179      * @return Returns the displayEditMode.
1180      */
1181     public String getDisplayEditMode() {
1182         return displayEditMode;
1183     }
1184 
1185     /**
1186      * Sets the displayEditMode attribute value.
1187      *
1188      * @param displayEditMode The displayEditMode to set.
1189      */
1190     public void setDisplayEditMode(String displayEditMode) {
1191         this.displayEditMode = displayEditMode;
1192     }
1193 
1194     /**
1195      * Gets the displayMask attribute.
1196      *
1197      * @return Returns the displayMask.
1198      */
1199     public Mask getDisplayMask() {
1200         return displayMask;
1201     }
1202 
1203     /**
1204      * Sets the displayMask attribute value.
1205      *
1206      * @param displayMask The displayMask to set.
1207      */
1208     public void setDisplayMask(Mask displayMask) {
1209         this.displayMask = displayMask;
1210     }
1211 
1212     /**
1213      * Gets the displayMaskValue attribute.
1214      *
1215      * @return Returns the displayMaskValue.
1216      */
1217     public String getDisplayMaskValue() {
1218         return displayMaskValue;
1219     }
1220 
1221     /**
1222      * Sets the displayMaskValue attribute value.
1223      *
1224      * @param displayMaskValue The displayMaskValue to set.
1225      */
1226     public void setDisplayMaskValue(String displayMaskValue) {
1227         this.displayMaskValue = displayMaskValue;
1228     }
1229 
1230     /**
1231      * Gets the encryptedValue attribute.
1232      *
1233      * @return Returns the encryptedValue.
1234      */
1235     public String getEncryptedValue() {
1236         return encryptedValue;
1237     }
1238 
1239     /**
1240      * Sets the encryptedValue attribute value.
1241      *
1242      * @param encryptedValue The encryptedValue to set.
1243      */
1244     public void setEncryptedValue(String encryptedValue) {
1245         this.encryptedValue = encryptedValue;
1246     }
1247 
1248     /**
1249      * Gets the secure attribute.
1250      *
1251      * @return Returns the secure.
1252      */
1253     public boolean isSecure() {
1254         return secure;
1255     }
1256 
1257     /**
1258      * Sets the secure attribute value.
1259      *
1260      * @param secure The secure to set.
1261      */
1262     public void setSecure(boolean secure) {
1263         this.secure = secure;
1264     }
1265 
1266     /**
1267      * Returns the method name of a function present in the page which should be called
1268      * when the user tabs away from the field.
1269      *
1270      * @return
1271      */
1272     public String getWebOnBlurHandler() {
1273         return webOnBlurHandler;
1274     }
1275 
1276     public void setWebOnBlurHandler(String webOnBlurHandler) {
1277         this.webOnBlurHandler = webOnBlurHandler;
1278     }
1279 
1280     /**
1281      * Returns the method name of a function present in the page which should be called
1282      * after an AJAX call from the onblur handler.
1283      *
1284      * @return
1285      */
1286     public String getWebOnBlurHandlerCallback() {
1287         return webOnBlurHandlerCallback;
1288     }
1289 
1290     public void setWebOnBlurHandlerCallback(String webOnBlurHandlerCallback) {
1291         this.webOnBlurHandlerCallback = webOnBlurHandlerCallback;
1292     }
1293 
1294     /**
1295      * Sets the propertyValue attribute value.
1296      *
1297      * @param propertyValue The propertyValue to set.
1298      */
1299     public void setPropertyValue(String propertyValue) {
1300         this.propertyValue = propertyValue;
1301     }
1302 
1303     public String toString() {
1304         return "[" + getFieldType() + "] " + getPropertyName() + " = '" + getPropertyValue() + "'";
1305     }
1306 
1307     public String getStyleClass() {
1308         return styleClass;
1309     }
1310 
1311     public void setStyleClass(String styleClass) {
1312         this.styleClass = styleClass;
1313     }
1314 
1315     public int getFormattedMaxLength() {
1316         return formattedMaxLength;
1317     }
1318 
1319     public void setFormattedMaxLength(int formattedMaxLength) {
1320         this.formattedMaxLength = formattedMaxLength;
1321     }
1322 
1323     public String getContainerName() {
1324         return containerName;
1325     }
1326 
1327     public void setContainerName(String containerName) {
1328         this.containerName = containerName;
1329     }
1330 
1331     /**
1332      * Gets the containerElementName attribute.
1333      * @return Returns the containerElementName.
1334      */
1335     public String getContainerElementName() {
1336         return containerElementName;
1337     }
1338 
1339     /**
1340      * Sets the containerElementName attribute value.
1341      * @param containerElementName The containerElementName to set.
1342      */
1343     public void setContainerElementName(String containerElementName) {
1344         this.containerElementName = containerElementName;
1345     }
1346 
1347     /**
1348      * Gets the containerDisplayFields attribute.
1349      * @return Returns the containerDisplayFields.
1350      */
1351     public List<Field> getContainerDisplayFields() {
1352         return containerDisplayFields;
1353     }
1354 
1355     /**
1356      * Sets the containerDisplayFields attribute value.
1357      * @param containerDisplayFields The containerDisplayFields to set.
1358      */
1359     public void setContainerDisplayFields(List<Field> containerDisplayFields) {
1360         this.containerDisplayFields = containerDisplayFields;
1361     }
1362 
1363     public String getReferencesToRefresh() {
1364         return referencesToRefresh;
1365     }
1366 
1367     public void setReferencesToRefresh(String referencesToRefresh) {
1368         this.referencesToRefresh = referencesToRefresh;
1369     }
1370 
1371     /**
1372      * The DD defined objectLabel of the class on which a multiple value lookup is performed
1373      * @return The DD defined objectLabel of the class on which a multiple value lookup is performed
1374      */
1375     public String getMultipleValueLookupClassLabel() {
1376         return multipleValueLookupClassLabel;
1377     }
1378 
1379     /**
1380      * The DD defined objectLabel of the class on which a multiple value lookup is performed
1381      * @param multipleValueLookupClassLabel The DD defined objectLabel of the class on which a multiple value lookup is performed
1382      */
1383     public void setMultipleValueLookupClassLabel(String multipleValueLookupClassLabel) {
1384         this.multipleValueLookupClassLabel = multipleValueLookupClassLabel;
1385     }
1386 
1387     /**
1388      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the name of the collection on the doc on which the
1389      * MV lookup is performed
1390      * @return
1391      */
1392     public String getMultipleValueLookedUpCollectionName() {
1393         return multipleValueLookedUpCollectionName;
1394     }
1395 
1396     /**
1397      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the name of the collection on the doc on which the
1398      * MV lookup is performed
1399      * @param multipleValueLookedUpCollectionName
1400      */
1401     public void setMultipleValueLookedUpCollectionName(String multipleValueLookedUpCollectionName) {
1402         this.multipleValueLookedUpCollectionName = multipleValueLookedUpCollectionName;
1403     }
1404 
1405     /**
1406      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the class to perform a lookup upon
1407      * @return
1408      */
1409     public String getMultipleValueLookupClassName() {
1410         return multipleValueLookupClassName;
1411     }
1412 
1413     /**
1414      * For container fields (i.e. fieldType.equals(CONTAINER)) with MV lookups enabled, this is the class to perform a lookup upon
1415      * @param multipleValueLookupClassName
1416      */
1417     public void setMultipleValueLookupClassName(String multipleValueLookupClassName) {
1418         this.multipleValueLookupClassName = multipleValueLookupClassName;
1419     }
1420 
1421     /**
1422      * The td alignment to use for the Field.
1423      * @return the cellAlign
1424      */
1425     public String getCellAlign() {
1426         return cellAlign;
1427     }
1428 
1429     /**
1430      * Sets the td alignment for the Field.
1431      * @param cellAlign the cellAlign to set
1432      */
1433     public void setCellAlign(String cellAlign) {
1434         this.cellAlign = cellAlign;
1435     }
1436 
1437     public String getInquiryParameters() {
1438         return this.inquiryParameters;
1439     }
1440 
1441     public void setInquiryParameters(String inquiryParameters) {
1442         this.inquiryParameters = inquiryParameters;
1443     }
1444 
1445     /**
1446      * Returns whether field level help is enabled for this field.  If this value is true, then the field level help will be enabled.
1447      * If false, then whether a field is enabled is determined by the value returned by {@link #isFieldLevelHelpDisabled()} and the system-wide
1448      * parameter setting.  Note that if a field is read-only, that may cause field-level help to not be rendered.
1449      *
1450      * @return true if field level help is enabled, false if the value of this method should NOT be used to determine whether this method's return value
1451      * affects the enablement of field level help
1452      */
1453     public boolean isFieldLevelHelpEnabled() {
1454         return this.fieldLevelHelpEnabled;
1455     }
1456 
1457     public void setFieldLevelHelpEnabled(boolean fieldLevelHelpEnabled) {
1458         this.fieldLevelHelpEnabled = fieldLevelHelpEnabled;
1459     }
1460 
1461     /**
1462      * Returns whether field level help is disabled for this field.  If this value is true and {@link #isFieldLevelHelpEnabled()} returns false,
1463      * then the field level help will not be rendered.  If both this and {@link #isFieldLevelHelpEnabled()} return false, then the system-wide
1464      * setting will determine whether field level help is enabled.  Note that if a field is read-only, that may cause field-level help to not be rendered.
1465      *
1466      * @return true if field level help is disabled, false if the value of this method should NOT be used to determine whether this method's return value
1467      * affects the enablement of field level help
1468      */
1469     public boolean isFieldLevelHelpDisabled() {
1470         return this.fieldLevelHelpDisabled;
1471     }
1472 
1473     public void setFieldLevelHelpDisabled(boolean fieldLevelHelpDisabled) {
1474         this.fieldLevelHelpDisabled = fieldLevelHelpDisabled;
1475     }
1476 
1477     public boolean isFieldDirectInquiryEnabled() {
1478         return this.fieldDirectInquiryEnabled;
1479     }
1480 
1481     public void setFieldDirectInquiryEnabled(boolean fieldDirectInquiryEnabled) {
1482         this.fieldDirectInquiryEnabled = fieldDirectInquiryEnabled;
1483     }
1484 
1485 	/**
1486 	 * @return the fieldInactiveValidValues
1487 	 */
1488 	public List getFieldInactiveValidValues() {
1489 		return this.fieldInactiveValidValues;
1490 	}
1491 
1492 	/**
1493 	 * @param fieldInactiveValidValues the fieldInactiveValidValues to set
1494 	 */
1495 	public void setFieldInactiveValidValues(List fieldInactiveValidValues) {
1496 		this.fieldInactiveValidValues = fieldInactiveValidValues;
1497 	}
1498 	
1499 	public boolean isTriggerOnChange() {
1500 		return this.triggerOnChange;
1501 	}
1502 
1503 	public void setTriggerOnChange(boolean triggerOnChange) {
1504 		this.triggerOnChange = triggerOnChange;
1505 	}
1506 
1507 	public boolean getHasLookupable() {
1508 	    if (quickFinderClassNameImpl == null) {
1509 	        return false;
1510 	    } else {
1511 	        return true;
1512 	    }
1513 	}
1514 	
1515 	public String getAlternateDisplayPropertyName() {
1516 		return this.alternateDisplayPropertyName;
1517 	}
1518 
1519 	public void setAlternateDisplayPropertyName(String alternateDisplayPropertyName) {
1520 		this.alternateDisplayPropertyName = alternateDisplayPropertyName;
1521 	}
1522 
1523 	public String getAlternateDisplayPropertyValue() {
1524 		return this.alternateDisplayPropertyValue;
1525 	}
1526 
1527 	public void setAlternateDisplayPropertyValue(Object alternateDisplayPropertyValue) {
1528         String formattedValue = ObjectUtils.formatPropertyValue(alternateDisplayPropertyValue);
1529 
1530 		this.alternateDisplayPropertyValue = formattedValue;
1531 	}
1532 
1533 	public String getAdditionalDisplayPropertyName() {
1534 		return this.additionalDisplayPropertyName;
1535 	}
1536 
1537 	public void setAdditionalDisplayPropertyName(String additionalDisplayPropertyName) {
1538 		this.additionalDisplayPropertyName = additionalDisplayPropertyName;
1539 	}
1540 
1541 	public String getAdditionalDisplayPropertyValue() {
1542 		return this.additionalDisplayPropertyValue;
1543 	}
1544 
1545 	public void setAdditionalDisplayPropertyValue(Object additionalDisplayPropertyValue) {
1546 		String formattedValue = ObjectUtils.formatPropertyValue(additionalDisplayPropertyValue);
1547 		
1548 		this.additionalDisplayPropertyValue = formattedValue;
1549 	}
1550 
1551 	//#BEGIN DOC SEARCH RELATED
1552     public boolean isIndexedForSearch() {
1553         return this.isIndexedForSearch;
1554     }
1555 
1556     public void setIndexedForSearch(boolean indexedForSearch) {
1557         this.isIndexedForSearch = indexedForSearch;
1558     }
1559 
1560     public String getMainFieldLabel() {
1561         return this.mainFieldLabel;
1562     }
1563 
1564     public Boolean getRangeFieldInclusive() {
1565         return this.rangeFieldInclusive;
1566     }
1567 
1568     public boolean isMemberOfRange() {
1569         return this.memberOfRange;
1570     }
1571 
1572     public void setMainFieldLabel(String mainFieldLabel) {
1573         this.mainFieldLabel = mainFieldLabel;
1574     }
1575 
1576     public void setRangeFieldInclusive(Boolean rangeFieldInclusive) {
1577         this.rangeFieldInclusive = rangeFieldInclusive;
1578     }
1579 
1580     public void setMemberOfRange(boolean memberOfRange) {
1581         this.memberOfRange = memberOfRange;
1582     }
1583     
1584     public boolean isInclusive() {
1585         return (rangeFieldInclusive==null)?true:rangeFieldInclusive;
1586     }
1587     
1588     public String getFieldDataType() {
1589         return this.fieldDataType;
1590     }
1591     
1592     public void setFieldDataType(String fieldDataType) {
1593         this.fieldDataType = fieldDataType;
1594     }
1595     
1596     /**
1597      * 
1598      * Use fieldType=Field.HIDDEN instead
1599      * @deprecated
1600      * @return
1601      */
1602     public boolean isHidden() {
1603         return this.hidden;
1604     }
1605 
1606     public boolean isColumnVisible() {
1607         return this.isColumnVisible;
1608     }
1609 
1610     /**
1611      * 
1612      * Use fieldType=Field.HIDDEN instead
1613      * @deprecated
1614      * @param hidden
1615      */
1616     public void setHidden(boolean hidden) {
1617         this.hidden = hidden;
1618     }
1619 
1620     public void setColumnVisible(boolean isColumnVisible) {
1621         this.isColumnVisible = isColumnVisible;
1622     }
1623 
1624     public String[] getPropertyValues() {
1625         return this.propertyValues;
1626     }
1627     
1628     public void setPropertyValues(String[] propertyValues) {
1629         this.propertyValues = propertyValues;
1630     }
1631     
1632 	/**
1633 	 * @return the skipBlankValidValue
1634 	 */
1635 	public boolean isSkipBlankValidValue() {
1636 		return this.skipBlankValidValue;
1637 	}
1638 
1639 	/**
1640 	 * @param skipBlankValidValue the skipBlankValidValue to set
1641 	 */
1642 	public void setSkipBlankValidValue(boolean skipBlankValidValue) {
1643 		this.skipBlankValidValue = skipBlankValidValue;
1644 	}
1645 
1646 	/**
1647 	 * @return the allowInlineRange
1648 	 */
1649 	public boolean isAllowInlineRange() {
1650 		return this.allowInlineRange;
1651 	}
1652 
1653 	/**
1654 	 * @param allowInlineRange the allowInlineRange to set
1655 	 */
1656 	public void setAllowInlineRange(boolean allowInlineRange) {
1657 		this.allowInlineRange = allowInlineRange;
1658 	}
1659 
1660 	public String getUniversalIdValue() {
1661 		return this.universalIdValue;
1662 	}
1663 
1664 	public void setUniversalIdValue(String universalIdValue) {
1665 		this.universalIdValue = universalIdValue;
1666 	}
1667 
1668 	public String getPersonNameValue() {
1669 		return this.personNameValue;
1670 	}
1671 
1672 	public void setPersonNameValue(String personNameValue) {
1673 		this.personNameValue = personNameValue;
1674 	}
1675 
1676 	public String getBaseLookupUrl() {
1677 		return this.baseLookupUrl;
1678 	}
1679 
1680 	public void setBaseLookupUrl(String baseLookupURL) {
1681 		this.baseLookupUrl = baseLookupURL;
1682 	}
1683 
1684     public String getFieldLevelHelpUrl() {
1685         return fieldLevelHelpUrl;
1686     }
1687 
1688     public void setFieldLevelHelpUrl(String fieldLevelHelpUrl) {
1689         this.fieldLevelHelpUrl = fieldLevelHelpUrl;
1690     }
1691 	
1692     /**
1693 	 * @return the webUILeaveFieldFunctionParameters
1694 	 */
1695 	public List<String> getWebUILeaveFieldFunctionParameters() {
1696 		return this.webUILeaveFieldFunctionParameters;
1697 	}
1698 
1699 	/**
1700 	 * @param webUILeaveFieldFunctionParameters the webUILeaveFieldFunctionParameters to set
1701 	 */
1702 	public void setWebUILeaveFieldFunctionParameters(
1703 			List<String> webUILeaveFieldFunctionParameters) {
1704 		this.webUILeaveFieldFunctionParameters = webUILeaveFieldFunctionParameters;
1705 	}
1706 	
1707   	public String getWebUILeaveFieldFunctionParametersString() {
1708   		return KNSUtils.joinWithQuotes(getWebUILeaveFieldFunctionParameters());
1709   	}
1710 
1711 	
1712     //#END DOC SEARCH RELATED
1713 }