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