001 /**
002 * Copyright 2005-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.krad.datadictionary;
017
018 import org.kuali.rice.krad.datadictionary.state.StateMapping;
019 import org.kuali.rice.krad.datadictionary.validator.ErrorReport;
020 import org.kuali.rice.krad.datadictionary.validator.TracerToken;
021
022 import java.util.ArrayList;
023 import java.util.List;
024
025
026 /**
027 * Defines methods common to all DataDictionaryDefinition types.
028 *
029 * DD: The highest level objects in the data dictionary are of
030 the following types:
031 * BusinessObjectEntry
032 * MaintenanceDocumentEntry
033 * TransactionalDocumentEntry
034
035 JSTL: The data dictionary is exposed as a Map which is accessed
036 by referring to the "DataDictionary" global constant. This Map contains
037 the following kinds of entries keyed as indicated:
038 * Business Object Entries -
039 Key = dataObjectClass name
040 Value = Map created by BusinessObjectEntryMapper
041 * Maintenance Document entries -
042 Key = DocumentType name
043 Value = Map created by MaintenanceObjectEntryMapper
044 * Transactional Document entries -
045 Key = DocumentType name
046 Value = Map created by TransactionalDocumentEntryMapper
047
048 All elements are exposed to JSTL as Maps (where the element has a
049 unique key by which they can be retrieved), or Strings. For collections
050 of elements having no unique key, the entry's position in the list
051 (0, 1, etc.) is used as its index.
052
053 All Maps (except the top-level DataDictionary one) are guaranteed to
054 present their entries with an iteration order identical to the order
055 in which the elements were defined in XML.
056
057 */
058 public interface DataDictionaryEntry extends DictionaryBean {
059 /**
060 * @return String used as a globally-unique key for this entry's jstl-exported version
061 */
062 public String getJstlKey();
063
064 /**
065 * Kicks off complete entry-wide validation which couldn't be done earlier.
066 *
067 * @throws org.kuali.rice.krad.datadictionary.exception.CompletionException if a problem arises during validation-completion
068 */
069 public void completeValidation();
070
071 /**
072 * Validates that the data objects created from the Spring Beans are correct
073 *
074 * @param tracer - Record of object's location
075 * @return A list of ErrorReports detailing errors found within the data dictionary and referenced within it
076 */
077 ArrayList<ErrorReport> completeValidation(TracerToken tracer);
078
079 /**
080 * @param attributeName
081 * @return AttributeDefinition with the given name, or null if none with that name exists
082 */
083 public AttributeDefinition getAttributeDefinition(String attributeName);
084
085 /**
086 * Returns the full class name of the underlying object.
087 */
088 public String getFullClassName();
089
090 /**
091 * @return a Map containing all RelationshipDefinitions associated with this BusinessObjectEntry, indexed by relationshipName
092 */
093 public List<RelationshipDefinition> getRelationships();
094
095 /**
096 * StateMapping for this DataDictionaryEntry, this represents the states of this entry, their names, and where
097 * to find the state information on the model
098 * @return StateMapping object
099 */
100 public StateMapping getStateMapping();
101
102 /**
103 * Set the StateMapping object which represents state information for this entry
104 * @param stateMapping StateMapping object
105 */
106 public void setStateMapping(StateMapping stateMapping);
107 }