1 /**
2 * Copyright 2005-2014 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 java.util.List;
19
20 import org.kuali.rice.krad.datadictionary.state.StateMapping;
21 import org.kuali.rice.krad.datadictionary.validator.ValidationTrace;
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 @Deprecated // KNS Version
67 public void completeValidation();
68
69 /**
70 * Validates that the data objects created from the Spring Beans are correct
71 *
72 * @param tracer - Record of object's location
73 */
74 public void completeValidation(ValidationTrace tracer);
75
76 /**
77 * @param attributeName
78 * @return AttributeDefinition with the given name, or null if none with that name exists
79 */
80 public AttributeDefinition getAttributeDefinition(String attributeName);
81
82 /**
83 * Returns the full class name of the underlying object.
84 */
85 public String getFullClassName();
86
87 /**
88 * @return a Map containing all RelationshipDefinitions associated with this BusinessObjectEntry, indexed by
89 * relationshipName
90 */
91 public List<RelationshipDefinition> getRelationships();
92
93 /**
94 * StateMapping for this DataDictionaryEntry, this represents the states of this entry, their names, and where
95 * to find the state information on the model
96 *
97 * @return StateMapping object
98 */
99 public StateMapping getStateMapping();
100
101 /**
102 * Set the StateMapping object which represents state information for this entry
103 *
104 * @param stateMapping StateMapping object
105 */
106 public void setStateMapping(StateMapping stateMapping);
107 }