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