View Javadoc

1   /**
2    * Copyright 2005-2013 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.datadictionary;
17  
18  import org.kuali.rice.krad.datadictionary.state.StateMapping;
19  import org.kuali.rice.krad.datadictionary.validator.ValidationTrace;
20  
21  import java.util.List;
22  
23  /**
24   * Defines methods common to all DataDictionaryDefinition types.
25   *
26   * DD: The highest level objects in the data dictionary are of
27   * the following types:
28   * BusinessObjectEntry
29   * MaintenanceDocumentEntry
30   * TransactionalDocumentEntry
31   *
32   * JSTL: The data dictionary is exposed as a Map which is accessed
33   * by referring to the "DataDictionary" global constant.  This Map contains
34   * the following kinds of entries keyed as indicated:
35   * Business Object Entries -
36   * Key = dataObjectClass name
37   * Value = Map created by BusinessObjectEntryMapper
38   * Maintenance Document entries -
39   * Key = DocumentType name
40   * Value = Map created by MaintenanceObjectEntryMapper
41   * Transactional Document entries -
42   * Key = DocumentType name
43   * Value = Map created by TransactionalDocumentEntryMapper
44   *
45   * All elements are exposed to JSTL as Maps (where the element has a
46   * unique key by which they can be retrieved), or Strings.  For collections
47   * of elements having no unique key, the entry's position in the list
48   * (0, 1, etc.) is used as its index.
49   *
50   * All Maps (except the top-level DataDictionary one) are guaranteed to
51   * present their entries with an iteration order identical to the order
52   * in which the elements were defined in XML.
53   */
54  public interface DataDictionaryEntry extends DictionaryBean {
55      /**
56       * @return String used as a globally-unique key for this entry's jstl-exported version
57       */
58      public String getJstlKey();
59  
60      /**
61       * Kicks off complete entry-wide validation which couldn't be done earlier.
62       *
63       * @throws org.kuali.rice.krad.datadictionary.exception.CompletionException if a problem arises during
64       * validation-completion
65       */
66      public void completeValidation();
67  
68      /**
69       * Validates that the data objects created from the Spring Beans are correct
70       *
71       * @param tracer - Record of object's location
72       */
73      public void completeValidation(ValidationTrace tracer);
74  
75      /**
76       * @param attributeName
77       * @return AttributeDefinition with the given name, or null if none with that name exists
78       */
79      public AttributeDefinition getAttributeDefinition(String attributeName);
80  
81      /**
82       * Returns the full class name of the underlying object.
83       */
84      public String getFullClassName();
85  
86      /**
87       * @return a Map containing all RelationshipDefinitions associated with this BusinessObjectEntry, indexed by
88       *         relationshipName
89       */
90      public List<RelationshipDefinition> getRelationships();
91  
92      /**
93       * StateMapping for this DataDictionaryEntry, this represents the states of this entry, their names, and where
94       * to find the state information on the model
95       *
96       * @return StateMapping object
97       */
98      public StateMapping getStateMapping();
99  
100     /**
101      * Set the StateMapping object which represents state information for this entry
102      *
103      * @param stateMapping StateMapping object
104      */
105     public void setStateMapping(StateMapping stateMapping);
106 }