Coverage Report - org.kuali.rice.krad.service.DataDictionaryService
 
Classes in this File Line Coverage Branch Coverage Complexity
DataDictionaryService
N/A
N/A
1
 
 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.krad.service;
 17  
 
 18  
 import org.kuali.rice.core.web.format.Formatter;
 19  
 import org.kuali.rice.krad.bo.BusinessObject;
 20  
 import org.kuali.rice.krad.datadictionary.AttributeDefinition;
 21  
 import org.kuali.rice.krad.datadictionary.AttributeSecurity;
 22  
 import org.kuali.rice.krad.datadictionary.DataDictionary;
 23  
 import org.kuali.rice.krad.datadictionary.InactivationBlockingMetadata;
 24  
 import org.kuali.rice.krad.datadictionary.control.ControlDefinition;
 25  
 import org.kuali.rice.krad.datadictionary.exception.UnknownDocumentTypeException;
 26  
 import org.kuali.rice.krad.document.Document;
 27  
 import org.kuali.rice.krad.keyvalues.KeyValuesFinder;
 28  
 import org.kuali.rice.krad.uif.view.View;
 29  
 import org.kuali.rice.krad.uif.UifConstants.ViewType;
 30  
 
 31  
 import java.io.IOException;
 32  
 import java.util.List;
 33  
 import java.util.Map;
 34  
 import java.util.Set;
 35  
 import java.util.regex.Pattern;
 36  
 
 37  
 /**
 38  
  * Defines the API for interacting with the data dictionary
 39  
  *
 40  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 41  
  */
 42  
 public interface DataDictionaryService {
 43  
 
 44  
     /**
 45  
      * Sequentially adds each package named (as a String) in the given List as a source of unique entries to the DataDictionary
 46  
      * being constructed. Duplicate entries among any of the XML files in any of these packages will result in exceptions being
 47  
      * thrown, hence service-initialization failure.
 48  
      *
 49  
      * @param baselinePackages
 50  
      * @throws SourceException if any of the given packages can't be located
 51  
      */
 52  
     public void setBaselinePackages(List baselinePackages) throws IOException;
 53  
 
 54  
     /**
 55  
      * @return current DataDictionary
 56  
      */
 57  
     public DataDictionary getDataDictionary();
 58  
 
 59  
     public void addDataDictionaryLocations(List<String> locations) throws IOException;
 60  
 
 61  
 //    /**
 62  
 //     * Hook to allow the dataDictionary service to perform any post-build initialization tasks needed before the dataDictionary
 63  
 //     * itself will be publicly available.
 64  
 //     */
 65  
 //    public void completeInitialization();
 66  
 
 67  
     /**
 68  
      * the html control type used to render the field
 69  
      */
 70  
     public ControlDefinition getAttributeControlDefinition(Class dataObjectClass, String attributeName);
 71  
 
 72  
     /**
 73  
      * the display size of the field if text control
 74  
      */
 75  
     public Integer getAttributeSize(Class dataObjectClass, String attributeName);
 76  
 
 77  
     /**
 78  
      * the max length defined for the given attribute name.
 79  
      */
 80  
     public Integer getAttributeMaxLength(Class dataObjectClass, String attributeName);
 81  
 
 82  
     /**
 83  
      * the regular expression defined to validate the given attribute name.
 84  
      */
 85  
     public Pattern getAttributeValidatingExpression(Class dataObjectClass, String attributeName);
 86  
 
 87  
     /**
 88  
      * the label to be used for displaying the attribute.
 89  
      */
 90  
     public String getAttributeLabel(Class dataObjectClass, String attributeName);
 91  
 
 92  
     /**
 93  
      * the short label to be used for displaying the attribute.
 94  
      */
 95  
     public String getAttributeShortLabel(Class dataObjectClass, String attributeName);
 96  
 
 97  
     /**
 98  
      * the "label (short label)" used for displaying error messages
 99  
      */
 100  
     public String getAttributeErrorLabel(Class dataObjectClass, String attributeName);
 101  
 
 102  
     /**
 103  
      * the formatter class used to format the attribute value
 104  
      */
 105  
     public Class<? extends Formatter> getAttributeFormatter(Class dataObjectClass, String attributeName);
 106  
 
 107  
     /**
 108  
      * indicates whether or not to force input text into uppercase
 109  
      */
 110  
     public Boolean getAttributeForceUppercase(Class dataObjectClass, String attributeName);
 111  
 
 112  
     /**
 113  
      * short help text for attribute
 114  
      */
 115  
     public String getAttributeSummary(Class dataObjectClass, String attributeName);
 116  
 
 117  
     /**
 118  
      * detailed help text for attribute
 119  
      */
 120  
     public String getAttributeDescription(Class dataObjectClass, String attributeName);
 121  
 
 122  
     /**
 123  
      * indicates whether or not the named attribute is required
 124  
      */
 125  
     public Boolean isAttributeRequired(Class dataObjectClass, String attributeName);
 126  
 
 127  
     /**
 128  
      * indicates whether or not the named attribute is defined in the business object xml
 129  
      */
 130  
     public Boolean isAttributeDefined(Class dataObjectClass, String attributeName);
 131  
 
 132  
     /**
 133  
      * the Class that returns a values list for this attribute
 134  
      */
 135  
     public Class<? extends KeyValuesFinder> getAttributeValuesFinderClass(Class dataObjectClass, String attributeName);
 136  
 
 137  
     /**
 138  
      * the label to be used for displaying the collection.
 139  
      */
 140  
     public String getCollectionLabel(Class dataObjectClass, String collectionName);
 141  
 
 142  
     /**
 143  
      * the short label to be used for displaying the collection.
 144  
      */
 145  
     public String getCollectionShortLabel(Class dataObjectClass, String collectionName);
 146  
 
 147  
     /**
 148  
      * short help text for collection
 149  
      */
 150  
     public String getCollectionSummary(Class dataObjectClass, String collectionName);
 151  
 
 152  
     /**
 153  
      * detailed help text for collection
 154  
      */
 155  
     public String getCollectionDescription(Class dataObjectClass, String collectionName);
 156  
 
 157  
     /**
 158  
      * the html control type used to render the field
 159  
      */
 160  
     public ControlDefinition getAttributeControlDefinition(String entryName, String attributeName);
 161  
 
 162  
     /**
 163  
      * the display size of the field if text control
 164  
      */
 165  
     public Integer getAttributeSize(String entryName, String attributeName);
 166  
 
 167  
     /**
 168  
      * the min length defined for the given attribute name.
 169  
      */
 170  
     public Integer getAttributeMinLength(String entryName, String attributeName);
 171  
 
 172  
     /**
 173  
      * the max length defined for the given attribute name.
 174  
      */
 175  
     public Integer getAttributeMaxLength(String entryName, String attributeName);
 176  
 
 177  
     /**
 178  
      * @param entryName
 179  
      * @param attributeName
 180  
      * @return the exclusive minimum for the specified attribute, or <code>null</code> if none.
 181  
      */
 182  
     public /*BigDecimal*/ String getAttributeExclusiveMin(String entryName, String attributeName);
 183  
 
 184  
     /**
 185  
      * @param entryName
 186  
      * @param attributeName
 187  
      * @return the inclusive maximum for the specified attribute, or <code>null</code> if none.
 188  
      */
 189  
     public /*BigDecimal*/ String getAttributeInclusiveMax(String entryName, String attributeName);
 190  
 
 191  
     /**
 192  
      * the regular expression defined to validate the given attribute name.
 193  
      */
 194  
     public Pattern getAttributeValidatingExpression(String entryName, String attributeName);
 195  
 
 196  
     /**
 197  
      * the label to be used for displaying the attribute.
 198  
      */
 199  
     public String getAttributeLabel(String entryName, String attributeName);
 200  
 
 201  
     /**
 202  
      * the short label to be used for displaying the attribute.
 203  
      */
 204  
     public String getAttributeShortLabel(String entryName, String attributeName);
 205  
 
 206  
     /**
 207  
      * the "label (short label)" used for displaying error messages
 208  
      */
 209  
     public String getAttributeErrorLabel(String entryName, String attributeName);
 210  
 
 211  
     /**
 212  
      * the formatter class used to format the attribute value
 213  
      */
 214  
     public Class<? extends Formatter> getAttributeFormatter(String entryName, String attributeName);
 215  
 
 216  
     /**
 217  
      * indicates whether or not to force input text into uppercase
 218  
      */
 219  
     public Boolean getAttributeForceUppercase(String entryName, String attributeName);
 220  
 
 221  
     /**
 222  
      * the AttributeSecurity object defined for the attribute's data value
 223  
      */
 224  
     public AttributeSecurity getAttributeSecurity(String entryName, String attributeName);
 225  
 
 226  
     /**
 227  
      * short help text for attribute
 228  
      */
 229  
     public String getAttributeSummary(String entryName, String attributeName);
 230  
 
 231  
     /**
 232  
      * detailed help text for attribute
 233  
      */
 234  
     public String getAttributeDescription(String entryName, String attributeName);
 235  
 
 236  
     public String getAttributeValidatingErrorMessageKey(String entryName, String attributeName);
 237  
 
 238  
     public String[] getAttributeValidatingErrorMessageParameters(String entryName, String attributeName);
 239  
 
 240  
     /**
 241  
      * indicates whether or not the named attribute is required
 242  
      */
 243  
     public Boolean isAttributeRequired(String entryName, String attributeName);
 244  
 
 245  
     /**
 246  
      * indicates whether or not the named attribute is defined in the business object xml
 247  
      */
 248  
     public Boolean isAttributeDefined(String entryName, String attributeName);
 249  
 
 250  
     /**
 251  
      * the Class that returns a values list for this attribute
 252  
      */
 253  
     public Class<? extends KeyValuesFinder> getAttributeValuesFinderClass(String entryName, String attributeName);
 254  
 
 255  
     /**
 256  
      * AttributeDefinition associated with the given attributeName within the given entry
 257  
      */
 258  
     public AttributeDefinition getAttributeDefinition(String entryName, String attributeName);
 259  
 
 260  
     /**
 261  
      * the label to be used for displaying the collection.
 262  
      */
 263  
     public String getCollectionLabel(String entryName, String collectionName);
 264  
 
 265  
     /**
 266  
      * the short label to be used for displaying the collection.
 267  
      */
 268  
     public String getCollectionShortLabel(String entryName, String collectionName);
 269  
 
 270  
     /**
 271  
      * the element label to be used for displaying the collection.
 272  
      */
 273  
     public String getCollectionElementLabel(String entryName, String collectionName, Class dataObjectClass);
 274  
 
 275  
     /**
 276  
      * short help text for collection
 277  
      */
 278  
     public String getCollectionSummary(String entryName, String collectionName);
 279  
 
 280  
     /**
 281  
      * detailed help text for collection
 282  
      */
 283  
     public String getCollectionDescription(String entryName, String collectionName);
 284  
 
 285  
     /**
 286  
      * @param entryName
 287  
      * @param relationshipName
 288  
      * @return source Class for the given relationship, or null if there is no relationship with that name
 289  
      */
 290  
     public Class<? extends BusinessObject> getRelationshipSourceClass(String entryName, String relationshipName);
 291  
 
 292  
     /**
 293  
      * @param entryName
 294  
      * @param relationshipName
 295  
      * @return target Class for the given relationship, or null if there is no relationship with that name
 296  
      */
 297  
     public Class<? extends BusinessObject> getRelationshipTargetClass(String entryName, String relationshipName);
 298  
 
 299  
     /**
 300  
      * @param entryName
 301  
      * @param relationshipName
 302  
      * @return List<String> of source attributeNames for the given relationship, or null if there is no relationship with that name
 303  
      */
 304  
     public List<String> getRelationshipSourceAttributes(String entryName, String relationshipName);
 305  
 
 306  
     /**
 307  
      * @param entryName
 308  
      * @param relationshipName
 309  
      * @return List<String> of target attributeNames for the given relationship, or null if there is no relationship with that name
 310  
      */
 311  
     public List<String> getRelationshipTargetAttributes(String entryName, String relationshipName);
 312  
 
 313  
     /**
 314  
      * returns a Map that specifies the attributes of the relationship
 315  
      *
 316  
      * @param entryName - Name of the Business Object entry
 317  
      * @param relationshipName - Name of the relationship
 318  
      * @return Map - Target field as key, source field as value
 319  
      */
 320  
     public Map<String, String> getRelationshipAttributeMap(String entryName, String relationshipName);
 321  
 
 322  
     /**
 323  
      * returns a list of names for all entries whose source parameter matches the parameter
 324  
      *
 325  
      * @param entryName Name of the Business Object entry
 326  
      * @param sourceAttributeName name of the source attribute
 327  
      * @return the names of all entries that use the sourceAttributeName as a primitive attribute
 328  
      */
 329  
     public List<String> getRelationshipEntriesForSourceAttribute(String entryName, String sourceAttributeName);
 330  
 
 331  
     /**
 332  
      * returns a list of names for all entries whose source parameter matches the parameter
 333  
      *
 334  
      * @param entryName Name of the Business Object entry
 335  
      * @param targetAttributeName name of the target attribute
 336  
      * @return the names of all entries that use the targetAttributeName as a primitive attribute
 337  
      */
 338  
     public List<String> getRelationshipEntriesForTargetAttribute(String entryName, String targetAttributeName);
 339  
 
 340  
     /**
 341  
      * Determines whether there is a relationship defined for the given entry with the given name
 342  
      *
 343  
      * @param entryName name of the BO entry
 344  
      * @param relationshipName name of the relationship for the entry
 345  
      * @return true iff there is a relationship with the given name defined for the BO entry in the DD
 346  
      */
 347  
     public boolean hasRelationship(String entryName, String relationshipName);
 348  
 
 349  
     /**
 350  
      * Returns all of the relationships defined for a BO in the DD
 351  
      *
 352  
      * @param name of the BO entry
 353  
      * @return a list of all DD defined mappings
 354  
      */
 355  
     public List<String> getRelationshipNames(String entryName);
 356  
 
 357  
 //    /**
 358  
 //     * Returns the list of document class names
 359  
 //     * 
 360  
 //     * @return
 361  
 //     */
 362  
 //    public List getDocumentObjectClassnames();
 363  
 
 364  
     /**
 365  
      * This method returns the user friendly label based on the workflow doc type name
 366  
      *
 367  
      * @param documentTypeName
 368  
      * @return label
 369  
      */
 370  
     public String getDocumentLabelByTypeName(String documentTypeName);
 371  
 
 372  
     /**
 373  
      * This method returns the user friendly label based on the document or business object class
 374  
      *
 375  
      * @param documentTypeName
 376  
      * @return label
 377  
      */
 378  
     public String getDocumentLabelByClass(Class documentOrBusinessObjectClass);
 379  
 
 380  
     /**
 381  
      * Returns the document type name declared in the dd for the given document
 382  
      * class. If no valid document type is found 'null' is returned.
 383  
      *
 384  
      * @param documentClass
 385  
      * @return documentTypeName
 386  
      */
 387  
     public String getDocumentTypeNameByClass(Class documentClass);
 388  
 
 389  
     /**
 390  
      * Returns the document type name declared in the dd for the given document
 391  
      * class. If no valid document type is found an
 392  
      * {@link UnknownDocumentTypeException} is thrown.
 393  
      *
 394  
      * @param documentClass
 395  
      * @return documentTypeName
 396  
      */
 397  
     public String getValidDocumentTypeNameByClass(Class documentClass);
 398  
 
 399  
     /**
 400  
      * Returns the document class declared in the dd for the given document type
 401  
      * name. If no document entry is found with given document type name, 'null'
 402  
      * will be returned.
 403  
      *
 404  
      * @param documentTypeName
 405  
      * @return document Class
 406  
      */
 407  
     public Class<? extends Document> getDocumentClassByTypeName(String documentTypeName);
 408  
 
 409  
     /**
 410  
      * Returns the document class declared in the dd for the given document type
 411  
      * name. If no document entry is found with given document type name, and
 412  
      * {@link UnknownDocumentTypeException} will be thrown.
 413  
      *
 414  
      * @param documentTypeName
 415  
      * @return document Class
 416  
      */
 417  
     public Class<? extends Document> getValidDocumentClassByTypeName(String documentTypeName);
 418  
 
 419  
     /**
 420  
      * Returns the list of attributes that should be used for grouping when determining the current
 421  
      * status of a business object that implements InactivateableFromTo
 422  
      *
 423  
      * @param businessObjectClass - business object class to get configured list for
 424  
      * @return List of string attribute names that gives the group by list
 425  
      */
 426  
     public List<String> getGroupByAttributesForEffectiveDating(Class businessObjectClass);
 427  
 
 428  
     /**
 429  
      * Returns all of the inactivation blocks registered for a particular business object
 430  
      *
 431  
      * @param inactivationBlockedBusinessObjectClass
 432  
      * @return a set of all registered inactivation blocks for a particular business object
 433  
      */
 434  
     public Set<InactivationBlockingMetadata> getAllInactivationBlockingDefinitions(
 435  
             Class inactivationBlockedBusinessObjectClass);
 436  
 
 437  
     /**
 438  
      * Returns the View entry identified by the given id
 439  
      *
 440  
      * @param viewId - unique id for view
 441  
      * @return View instance associated with the id
 442  
      */
 443  
     public View getViewById(String viewId);
 444  
 
 445  
     /**
 446  
      * Returns an object from the dictionary by its spring bean name or id
 447  
      *
 448  
      * @param id - id or name for the bean definition
 449  
      * @return Object object instance created or the singleton being maintained
 450  
      */
 451  
     public Object getDictionaryObject(String id);
 452  
 
 453  
     /**
 454  
      * Indicates whether the data dictionary contains a bean with the given id
 455  
      *
 456  
      * @param id - id of the bean to check for
 457  
      * @return boolean true if dictionary contains bean, false otherwise
 458  
      */
 459  
     public boolean containsDictionaryObject(String id);
 460  
 
 461  
     /**
 462  
      * Returns View instance identified by the view type name and index
 463  
      *
 464  
      * @param viewTypeName - type name for the view
 465  
      * @param indexKey - Map of index key parameters, these are the parameters the
 466  
      * indexer used to index the view initially and needs to identify
 467  
      * an unique view instance
 468  
      * @return View instance that matches the given index
 469  
      */
 470  
     public View getViewByTypeIndex(ViewType viewTypeName, Map<String, String> indexKey);
 471  
 }