Coverage Report - org.kuali.rice.kns.datadictionary.InquirySectionDefinition
 
Classes in this File Line Coverage Branch Coverage Complexity
InquirySectionDefinition
0%
0/36
0%
0/8
1.429
 
 1  
 /*
 2  
  * Copyright 2006-2007 The Kuali Foundation
 3  
  * 
 4  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  * 
 8  
  * http://www.opensource.org/licenses/ecl2.php
 9  
  * 
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 
 17  
 package org.kuali.rice.kns.datadictionary;
 18  
 
 19  
 import java.util.ArrayList;
 20  
 import java.util.LinkedHashMap;
 21  
 import java.util.List;
 22  
 import java.util.Map;
 23  
 
 24  
 import org.apache.commons.lang.StringUtils;
 25  
 import org.kuali.rice.kns.datadictionary.exception.DuplicateEntryException;
 26  
 
 27  
 /**
 28  
  *                  inquirySection defines the format and content of
 29  
                  one section of the inquiry.
 30  
                  DD:  See InquirySectionDefinition.java
 31  
                  
 32  
                 numberOfColumns = the number of fields to be displayed in each row of the inquiry section.
 33  
                 For example, numberOfColumns = 2 indicates that the label and values for two fields will be
 34  
                 displayed in each row as follows:
 35  
                     field1label field1value  |   field2label field2value
 36  
                     field3label field3value  |   field4label field4value
 37  
                 etc.
 38  
                  
 39  
  * Contains section-related information for inquiry sections
 40  
  * Note: the setters do copious amounts of validation, to facilitate generating errors during the parsing process.
 41  
  */
 42  
 public class InquirySectionDefinition extends DataDictionaryDefinitionBase {
 43  
     private static final long serialVersionUID = 1565114894539391362L;
 44  
     
 45  
         protected String title;
 46  0
     protected List<FieldDefinition> inquiryFields = new ArrayList<FieldDefinition>();
 47  0
     protected Map<String, FieldDefinition> inquiryFieldMap = new LinkedHashMap<String, FieldDefinition>();
 48  
     protected Map inquiryCollections;
 49  
     
 50  0
     protected Integer numberOfColumns = 1;
 51  0
     protected boolean defaultOpen = true;
 52  
     
 53  0
     public InquirySectionDefinition() {}
 54  
 
 55  
 
 56  
     /**
 57  
      * @return title
 58  
      */
 59  
     public String getTitle() {
 60  0
         return title;
 61  
     }
 62  
 
 63  
     /**
 64  
      * Sets title to the given value.
 65  
      * 
 66  
      * @param title
 67  
      * @throws IllegalArgumentException if the given title is blank
 68  
      */
 69  
     public void setTitle(String title) {
 70  0
         this.title = title;
 71  0
     }
 72  
 
 73  
     /**
 74  
      * @return List of attributeNames of all FieldDefinitions associated with this InquirySection, in the order in
 75  
      *         which they were added
 76  
      */
 77  
     public List<String> getInquiryFieldNames() {
 78  0
         List<String> itemNames = new ArrayList<String>();
 79  0
         itemNames.addAll(this.inquiryFieldMap.keySet());
 80  
 
 81  0
         return itemNames;
 82  
     }
 83  
 
 84  
     /**
 85  
      * @return Collection of all FieldDefinitions associated with this InquirySection, in the order in which they
 86  
      *         were added
 87  
      */
 88  
     public List<FieldDefinition> getInquiryFields() {
 89  0
         return inquiryFields;
 90  
     }
 91  
 
 92  
     /**
 93  
      * Directly validate simple fields, call completeValidation on Definition fields.
 94  
      * 
 95  
      * @see org.kuali.rice.kns.datadictionary.DataDictionaryDefinition#completeValidation(java.lang.Class, java.lang.Object)
 96  
      */
 97  
     public void completeValidation(Class rootBusinessObjectClass, Class otherBusinessObjectClass) {
 98  0
         for (FieldDefinition inquiryField : inquiryFields ) {
 99  0
             inquiryField.completeValidation(rootBusinessObjectClass, null);
 100  
         }
 101  0
     }
 102  
 
 103  
     public String toString() {
 104  0
         return "InquirySectionDefinition '" + getTitle() + "'";
 105  
     }
 106  
 
 107  
     public Map getInquiryCollections() {
 108  0
         return inquiryCollections;
 109  
     }
 110  
 
 111  
     /**
 112  
                    The inquiryCollection defines a collection within the Business Object which contains
 113  
                    data that should be displayed with the BO when the inquiry is performed.
 114  
 
 115  
                    Each inquiryCollection defines a set of data fields, nested inquiryCollections
 116  
                    and summaryFields.  The summaryFields will be reported in the header of
 117  
                    this inquiryCollection, .
 118  
 
 119  
                    DD: See InquiryCollectionDefinition.java
 120  
                    JSTL: The inquiryCollection element is a Map with the following keys:
 121  
                        * name (String)
 122  
                        * businessObjectClass (String)
 123  
                        * numberOfColumns (String)
 124  
                        * inquiryFields (Map)
 125  
                        * inquiryCollections (Map, optional)
 126  
                        * summaryTitle (String)
 127  
                        * summaryFields (Map, optional)
 128  
      */
 129  
     public void setInquiryCollections(Map inquiryCollections) {
 130  0
         this.inquiryCollections = inquiryCollections;
 131  0
     }
 132  
 
 133  
     public Integer getNumberOfColumns() {
 134  0
         return numberOfColumns;
 135  
     }
 136  
 
 137  
     /**
 138  
                 numberOfColumns = the number of fields to be displayed in each row of the inquiry section.
 139  
                 For example, numberOfColumns = 2 indicates that the label and values for two fields will be
 140  
                 displayed in each row as follows:
 141  
                     field1label field1value  |   field2label field2value
 142  
                     field3label field3value  |   field4label field4value
 143  
                 etc.
 144  
      */
 145  
     public void setNumberOfColumns(Integer numberOfColumns) {
 146  0
         this.numberOfColumns = numberOfColumns;
 147  0
     }
 148  
 
 149  
 
 150  
     /**
 151  
                 JSTL: inquiryFields is a Map which is accessed using a
 152  
                 key of "inquiryFields".  This map contains the following types
 153  
                 of elements:
 154  
                     * inquirySubSectionHeader
 155  
                     * field
 156  
                     * inquiryCollection
 157  
                 Each of these entries are keyed by "attributeName".
 158  
                 The associated value is the attributeName of the
 159  
                 mapped element.
 160  
 
 161  
                   The inquirySubSectionHeader allows a separator containing text to
 162  
                   separate groups of fields.  The name attribute is the displayed text.
 163  
 
 164  
                   JSTL: inquirySubSectionHeader appears in the inquiryFields map as:
 165  
                       * key = "attributeName"
 166  
                       * value = name of inquirySubSectionHeader
 167  
 
 168  
 
 169  
                     The field element defines the attributes of a single data field.
 170  
 
 171  
                     DD:  See FieldDefinition.java
 172  
                     JSTL: The field element is a Map which is accessed using
 173  
                     a key of the attributeName.  This map contains the following keys:
 174  
                         * attributeName (String)
 175  
                         * forceInquiry (boolean String)
 176  
                         * noInquiry (boolean String)
 177  
                         * maxLength (String)
 178  
 
 179  
                 forceInquiry = true means that the displayed field value will
 180  
                 always be made inquirable (this attribute is not used within the code).
 181  
 
 182  
                 noInquiry = true means that the displayed field will never be made inquirable.
 183  
 
 184  
                 maxLength = the maximum allowable length of the field in the lookup result fields.  In other contexts,
 185  
                 like inquiries, this field has no effect.
 186  
      */
 187  
     public void setInquiryFields(List<FieldDefinition> inquiryFields) {
 188  0
         inquiryFieldMap.clear();
 189  0
         for (FieldDefinition inquiryField : inquiryFields ) {
 190  0
             if (inquiryField == null) {
 191  0
                 throw new IllegalArgumentException("invalid (null) inquiryField");
 192  
             }
 193  
 
 194  0
             String itemName = inquiryField.getAttributeName();
 195  0
             if (inquiryFieldMap.containsKey(itemName)) {
 196  0
                 throw new DuplicateEntryException("duplicate itemName entry for item '" + itemName + "'");
 197  
             }
 198  
 
 199  0
             inquiryFieldMap.put(itemName, inquiryField);        
 200  0
         }
 201  0
         this.inquiryFields = inquiryFields;
 202  0
     }
 203  
 
 204  
 
 205  
         /**
 206  
          * @return the defaultOpen
 207  
          */
 208  
         public boolean isDefaultOpen() {
 209  0
                 return this.defaultOpen;
 210  
         }
 211  
 
 212  
 
 213  
         /**
 214  
          * @param defaultOpen the defaultOpen to set
 215  
          */
 216  
         public void setDefaultOpen(boolean defaultOpen) {
 217  0
                 this.defaultOpen = defaultOpen;
 218  0
         }
 219  
 
 220  
 }