Coverage Report - org.kuali.rice.kns.datadictionary.control.ControlDefinitionBase
 
Classes in this File Line Coverage Branch Coverage Complexity
ControlDefinitionBase
0%
0/83
0%
0/44
1.711
 
 1  
 /**
 2  
  * Copyright 2005-2011 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  * http://www.opensource.org/licenses/ecl2.php
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.kuali.rice.kns.datadictionary.control;
 17  
 
 18  
 import org.apache.commons.lang.ClassUtils;
 19  
 import org.apache.commons.lang.builder.EqualsBuilder;
 20  
 import org.kuali.rice.core.api.util.ClassLoaderUtils;
 21  
 import org.kuali.rice.krad.bo.BusinessObject;
 22  
 import org.kuali.rice.krad.datadictionary.DataDictionaryDefinitionBase;
 23  
 import org.kuali.rice.krad.datadictionary.control.ControlDefinition;
 24  
 import org.kuali.rice.krad.datadictionary.exception.ClassValidationException;
 25  
 import org.kuali.rice.krad.datadictionary.exception.CompletionException;
 26  
 import org.kuali.rice.krad.keyvalues.KeyValuesFinder;
 27  
 
 28  
 /**
 29  
  * A single HTML control definition in the DataDictionary, which contains information relating to the HTML control used to realize a
 30  
  * specific attribute. All types of controls are represented by an instance of this class; you have to call one of the is* methods
 31  
  * to figure out which of the other accessors should return useful values.
 32  
  *
 33  
  *
 34  
  */
 35  
 @Deprecated
 36  
 public abstract class ControlDefinitionBase extends DataDictionaryDefinitionBase implements ControlDefinition {
 37  
     private static final long serialVersionUID = 4372435175782501152L;
 38  
     
 39  
         protected boolean datePicker;
 40  
         protected boolean expandedTextArea;
 41  
     protected String script;
 42  
     protected String valuesFinderClass;
 43  
     protected String businessObjectClass;
 44  
     protected String keyAttribute;
 45  
     protected String labelAttribute;
 46  
     protected Boolean includeBlankRow;
 47  
     protected Boolean includeKeyInLabel;
 48  
     protected Integer size;
 49  
     protected Integer rows;
 50  
     protected Integer cols;
 51  
     protected boolean ranged;
 52  
 
 53  
 
 54  0
     public ControlDefinitionBase() {
 55  0
             ranged = true;
 56  0
     }
 57  
 
 58  
     public boolean isDatePicker() {
 59  0
         return datePicker;
 60  
     }
 61  
 
 62  
     /** Whether this control should have a date picker button next to the field.
 63  
      *  Valid for text fields.
 64  
      *  
 65  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setDatePicker(boolean)
 66  
      */
 67  
     public void setDatePicker(boolean datePicker) {
 68  0
         this.datePicker=datePicker;
 69  0
     }
 70  
     
 71  
     public boolean isExpandedTextArea() {
 72  0
         return expandedTextArea;
 73  
     }
 74  
 
 75  
     /** Whether this control should have a expanded text area button next to the field.
 76  
      *  Valid for textarea fields.
 77  
      *  
 78  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setExpandedTextArea(boolean)
 79  
      */
 80  
     public void setExpandedTextArea(boolean eTextArea) {
 81  0
         this.expandedTextArea=eTextArea;
 82  0
     }
 83  
 
 84  
     /**
 85  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isCheckbox()
 86  
      */
 87  
     public boolean isCheckbox() {
 88  0
         return false;
 89  
     }
 90  
 
 91  
     /**
 92  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isHidden()
 93  
      */
 94  
     public boolean isHidden() {
 95  0
         return false;
 96  
     }
 97  
 
 98  
     /**
 99  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isRadio()
 100  
      */
 101  
     public boolean isRadio() {
 102  0
         return false;
 103  
     }
 104  
 
 105  
     /**
 106  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isSelect()
 107  
      */
 108  
     public boolean isSelect() {
 109  0
         return false;
 110  
     }
 111  
     
 112  
     /**
 113  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isSelect()
 114  
      */
 115  
     public boolean isMultiselect() {
 116  0
         return false;
 117  
     }
 118  
 
 119  
     /**
 120  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isText()
 121  
      */
 122  
     public boolean isText() {
 123  0
         return false;
 124  
     }
 125  
 
 126  
     /**
 127  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isTextarea()
 128  
      */
 129  
     public boolean isTextarea() {
 130  0
         return false;
 131  
     }
 132  
 
 133  
     /**
 134  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isCurrency()
 135  
      */
 136  
     public boolean isCurrency() {
 137  0
         return false;
 138  
     }
 139  
 
 140  
     /**
 141  
      *
 142  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isKualiUser()
 143  
      */
 144  
     public boolean isKualiUser() {
 145  0
         return false;
 146  
     }
 147  
 
 148  
     /**
 149  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isWorkgroup()
 150  
      */
 151  
     public boolean isWorkflowWorkgroup() {
 152  0
         return false;
 153  
     }
 154  
 
 155  
     /**
 156  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isFile()
 157  
      */
 158  
     public boolean isFile() {
 159  0
         return false;
 160  
     }
 161  
 
 162  
     /**
 163  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isLookupHidden()
 164  
      */
 165  
     public boolean isLookupHidden() {
 166  0
         return false;
 167  
     }
 168  
 
 169  
     /**
 170  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isLookupReadonly()
 171  
      */
 172  
     public boolean isLookupReadonly() {
 173  0
         return false;
 174  
     }
 175  
     
 176  
     /**
 177  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isButton()
 178  
      */
 179  
     public boolean isButton() {
 180  0
         return false;
 181  
     }
 182  
     
 183  
     /**
 184  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isLink()
 185  
      */
 186  
     public boolean isLink() {
 187  0
         return false;
 188  
     }
 189  
     
 190  
 
 191  
     /**
 192  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setKeyValuesFinder(java.lang.String)
 193  
      */
 194  
     public void setValuesFinderClass(String valuesFinderClass) {
 195  0
         if (valuesFinderClass == null) {
 196  0
             throw new IllegalArgumentException("invalid (null) valuesFinderClass");
 197  
         }
 198  
 
 199  0
         this.valuesFinderClass = valuesFinderClass;
 200  0
     }
 201  
 
 202  
     /**
 203  
      * @return the dataObjectClass
 204  
      */
 205  
     public String getBusinessObjectClass() {
 206  0
         return this.businessObjectClass;
 207  
     }
 208  
 
 209  
     /**
 210  
      * Used by a PersistableBusinessObjectValuesFinder to automatically query and display a list
 211  
      * of business objects as part of a select list or set of radio buttons.
 212  
      * 
 213  
      * The keyAttribute, labelAttribute, and includeKeyInLabel are used with this property.
 214  
      * 
 215  
      * @param businessObjectClass the dataObjectClass to set
 216  
      */
 217  
     public void setBusinessObjectClass(String businessObjectClass) {
 218  0
         if (businessObjectClass == null) {
 219  0
             throw new IllegalArgumentException("invalid (null) dataObjectClass");
 220  
         }
 221  
 
 222  0
         this.businessObjectClass = businessObjectClass;
 223  0
     }
 224  
 
 225  
     /**
 226  
      * @return the includeBlankRow
 227  
      */
 228  
     public Boolean getIncludeBlankRow() {
 229  0
         return this.includeBlankRow;
 230  
     }
 231  
 
 232  
     /**
 233  
      * @return the includeBlankRow
 234  
      */
 235  
     public void setIncludeBlankRow(Boolean includeBlankRow) {
 236  0
         this.includeBlankRow = includeBlankRow;
 237  0
     }
 238  
 
 239  
     /**
 240  
      * @return the includeKeyInLabel
 241  
      */
 242  
     public Boolean getIncludeKeyInLabel() {
 243  0
         return this.includeKeyInLabel;
 244  
     }
 245  
 
 246  
     /**
 247  
      * Whether to include the key in the label for select lists and radio buttons.
 248  
      */
 249  
     public void setIncludeKeyInLabel(Boolean includeKeyInLabel) {
 250  0
         this.includeKeyInLabel = includeKeyInLabel;
 251  0
     }
 252  
 
 253  
     /**
 254  
      * @return the keyAttribute
 255  
      */
 256  
     public String getKeyAttribute() {
 257  0
         return this.keyAttribute;
 258  
     }
 259  
 
 260  
     /**
 261  
      * Attribute of the given dataObjectClass to use as the value of a select list
 262  
      * or set of radio buttons. 
 263  
      */
 264  
     public void setKeyAttribute(String keyAttribute) {
 265  0
         this.keyAttribute = keyAttribute;
 266  0
     }
 267  
 
 268  
     /**
 269  
      * @return the labelAttribute
 270  
      */
 271  
     public String getLabelAttribute() {
 272  0
         return this.labelAttribute;
 273  
     }
 274  
 
 275  
     /**
 276  
      * Attribute of the given dataObjectClass to use as the displayed label on a select list
 277  
      * or set of radio buttons. 
 278  
      */
 279  
     public void setLabelAttribute(String labelAttribute) {
 280  0
         this.labelAttribute = labelAttribute;
 281  0
     }
 282  
 
 283  
     /**
 284  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#getKeyValuesFinder()
 285  
      */
 286  
     public String getValuesFinderClass() {
 287  0
         return valuesFinderClass;
 288  
     }
 289  
 
 290  
     /**
 291  
      * Size of a text control.
 292  
      * 
 293  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setSize(int)
 294  
      */
 295  
     public void setSize(Integer size) {
 296  0
         this.size = size;
 297  0
     }
 298  
 
 299  
     /**
 300  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#getSize()
 301  
      */
 302  
     public Integer getSize() {
 303  0
         return size;
 304  
     }
 305  
 
 306  
     /**
 307  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#hasScript()
 308  
      */
 309  
     public boolean hasScript() {
 310  0
         return false;
 311  
     }
 312  
 
 313  
     /**
 314  
      * Number of rows to display on a text-area widget.
 315  
      * 
 316  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setRows(int)
 317  
      */
 318  
     public void setRows(Integer rows) {
 319  0
         this.rows = rows;
 320  0
     }
 321  
 
 322  
     /**
 323  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#getRows()
 324  
      */
 325  
     public Integer getRows() {
 326  0
         return rows;
 327  
     }
 328  
 
 329  
     /**
 330  
      * Number of columns to display on a text-area widget.
 331  
      * 
 332  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setCols(int)
 333  
      */
 334  
     public void setCols(Integer cols) {
 335  0
         this.cols = cols;
 336  0
     }
 337  
 
 338  
     /**
 339  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#getCols()
 340  
      */
 341  
     public Integer getCols() {
 342  0
         return cols;
 343  
     }
 344  
 
 345  
     /**
 346  
      * Directly validate simple fields.
 347  
      *
 348  
      * @see org.kuali.rice.krad.datadictionary.DataDictionaryDefinition#completeValidation(java.lang.Class, java.lang.Object)
 349  
      */
 350  
     public void completeValidation(Class rootBusinessObjectClass, Class otherBusinessObjectClass) {
 351  0
         if (!isCheckbox() && !isHidden() && !isRadio() && !isSelect() && !isMultiselect() && !isText() && !isTextarea() && !isCurrency() && !isKualiUser() && !isLookupHidden() && !isLookupReadonly() && !isWorkflowWorkgroup() && !isFile()&& !isButton() && !isLink()) {
 352  0
             throw new CompletionException("error validating " + rootBusinessObjectClass.getName() + " control: unknown control type in control definition (" + "" + ")");
 353  
         }
 354  0
         if (valuesFinderClass != null) {
 355  
                 try {
 356  0
                         Class valuesFinderClassObject = ClassUtils.getClass(ClassLoaderUtils.getDefaultClassLoader(), getValuesFinderClass());
 357  0
                         if (!KeyValuesFinder.class.isAssignableFrom(valuesFinderClassObject)) {
 358  0
                                 throw new ClassValidationException("valuesFinderClass is not a valid instance of " + KeyValuesFinder.class.getName() + " instead was: " + valuesFinderClassObject.getName());
 359  
                         }
 360  0
                 } catch (ClassNotFoundException e) {
 361  0
                         throw new ClassValidationException("valuesFinderClass could not be found: " + getValuesFinderClass(), e);
 362  0
                 }
 363  
         }
 364  0
         if (businessObjectClass != null) {
 365  
                 try {
 366  0
                         Class businessObjectClassObject = ClassUtils.getClass(ClassLoaderUtils.getDefaultClassLoader(), getBusinessObjectClass());
 367  0
                         if (!BusinessObject.class.isAssignableFrom(businessObjectClassObject)) {
 368  0
                                 throw new ClassValidationException("dataObjectClass is not a valid instance of " + BusinessObject.class.getName() + " instead was: " + businessObjectClassObject.getName());
 369  
                         }
 370  0
                 } catch (ClassNotFoundException e) {
 371  0
                         throw new ClassValidationException("dataObjectClass could not be found: " + getBusinessObjectClass(), e);
 372  0
                 }
 373  
         }
 374  0
     }
 375  
 
 376  
     /**
 377  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#getScript()
 378  
      */
 379  
     public String getScript() {
 380  0
         return script;
 381  
     }
 382  
 
 383  
     /**
 384  
      * JavaScript script to run when a select control's value is changed.
 385  
      * 
 386  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#setScript()
 387  
      */
 388  
     public void setScript(String script) {
 389  0
         this.script = script;
 390  0
     }
 391  
     
 392  
     /**
 393  
      * @see org.kuali.rice.krad.datadictionary.control.ControlDefinition#isRanged()
 394  
      */
 395  
     public boolean isRanged() {
 396  0
                 return this.ranged;
 397  
         }
 398  
 
 399  
     /**
 400  
      * Sets the control as a ranged (from and to) date field if true, or a single date field if false
 401  
      * 
 402  
      * @param ranged boolean true for a ranged control, false for a single date field
 403  
      */
 404  
         public void setRanged(boolean ranged) {
 405  0
                 this.ranged = ranged;
 406  0
         }
 407  
 
 408  
         /**
 409  
      * @see java.lang.Object#equals(Object)
 410  
      */
 411  
     public boolean equals(Object object) {
 412  0
             if ( !(object instanceof ControlDefinitionBase) ) {
 413  0
                     return false;
 414  
             }
 415  0
             ControlDefinitionBase rhs = (ControlDefinitionBase)object;
 416  0
             return new EqualsBuilder()
 417  
                     .append( this.cols, rhs.cols )
 418  
                             .append( this.businessObjectClass, rhs.businessObjectClass )
 419  
                             .append( this.valuesFinderClass, rhs.valuesFinderClass )
 420  
                             .append( this.rows, rhs.rows )
 421  
                             .append( this.script, rhs.script )
 422  
                             .append( this.size, rhs.size )
 423  
                             .append( this.datePicker, rhs.datePicker )
 424  
                             .append( this.ranged, rhs.ranged )
 425  
                             .append( this.labelAttribute,rhs.labelAttribute )
 426  
                             .append( this.includeKeyInLabel, rhs.includeKeyInLabel )
 427  
                             .append( this.keyAttribute, rhs.keyAttribute )
 428  
                             .isEquals();
 429  
     }
 430  
     
 431  
     
 432  
 }